GitLab是由Ruby語言開發的基于Linux的Git服務器,是我見過的最強大的Git服務器。發現它之后,立即決定將Git服務器換成GitLab。
但安裝好GitLab之后面臨一個問題,如何將服務器上的git項目直接導入到GitLab,之前的Git服務器是由是git+apache搭建的(詳見在Linux上用Apache搭建Git服務器)。
在網上發現了這篇文檔——Import bare repositories into your GitLab instance,并按之進行了操作。
1)設置存放代碼庫的主目錄
vi /etc/gitlab/gitlab.rb
比如這里設置為:git_data_dir "/gitlab/repos"
2)訪問剛搭建的GitLab站點,創建一個group,比如cnblogs。
這時會在 /gitlab/repos 下創建 /gitlab/repos/repositories/cnblogs 文件夾。
然后在/gitlab/repos/repositories/創建一個文件夾,比如cnblogs
3)將現有的所有git項目文件復制到這個文件夾
cp -r /data/git/* /gitlab/repos/repositories/cnblogs
4)修改一下復制過來的文件夾的所有者:
chown -R git:git /gitlab/repos/repositories/cnblogs
5)運行GitLab導入命令
cd /var/opt/gitlab gitlab-rake gitlab:import:repos
等了一段時間之后,顯示done,卻一個項目也沒導入進來。
經研究發現,在導入時,GitLab只認文件夾名以.git結尾的項目。于是,將要導入的項目文件夾名稱加上.git后綴,再次進行導入。
結果顯示導入成功,比如:
Processing cnblogs/CNBlogsJob.git * Created CNBlogsJob (cnblogs/CNBlogsJob.git) Done!
可以是GitLab站點上卻看不到已導入的項目。多次努力,也沒能解決這個問題。
后來,實在沒辦法,改為手動導入,導入方法如下:
1)在GitLab站點上創建與要導入的項目同名的項目。
2)進入剛創建的項目文件夾
cd /gitlab/repos/repositories/cnblogs/項目名稱.git
3)刪除該文件下的所有文件
rm -rf *
4)將要導入的項目文件夾下的所有文件復制過來
cp -r /data/git/CNBlogsJob/* /gitlab/repos/repositories/cnblogs/CNBlogsJob.git
就這樣將項目一個一個地導入進來。
5)導入完成后,修改一下導入的所有項目的文件所有者
chown -R git:git /gitlab/repos/repositories/cnblogs
如果不修改所有者,客戶端無法進行git push。
就這樣手動地完成了現有Git項目的導入。
備注:操作系統是CentOS 6.2,GitLab版本是7.8.4。
文章列表