[英]How to move git repositories from github to local server running gitolite
我想知道將目前托管在github上的所有git存儲庫移動到基於gitolite的新git服務器的更好方法。
僅僅是為了了解,我正在進行此轉換的原因是采用Redmine來支持我們的項目管理流程。
在gitolite-admin / conf / gitolite.conf中添加新的repo
repo my-new-repo
RW+ = your-user
添加,提交並將更改推送到gitolite-admin
git add conf/gitolite.conf
git commit -m "Added my-new-repo"
git push origin
克隆你的github repo並檢查所有分支
git clone github.com:/USERNAME/YOUR_REPO.git
cd YOUR_REPO
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do git branch --track ${branch##*/} $branch; done
刪除github遙控器,並添加你的gitolite遙控器:
git remote rm origin
git remote add origin YOURSERVER:my-new-repo.git
將所有refs推送到由gitolite管理的repo:
git push --all origin
我驗證了我的測試存儲庫中的步驟,並且所有refs似乎都已傳播到新的repo中。
更新:像Seth指出的那樣,除了分支之外的任何其他引用都不會傳播到新的repo。 我也覺得鏡子會是一個更好的選擇。
參考這個: http : //gitolite.com/gitolite/basic-admin/#appendix-1-bringing-existing-repos-into-gitolite 。 怎么樣:
git clone --mirror <github git repo path>
github存儲庫的鏡像 我能想到的最好的事情是拉一個本地副本,將原點更改為新服務器,然后推送:
git pull --all
git remote rm origin
git remote add origin <new repo address>
git push --all --repo=origin
也許您還想將標簽帶到新服務器。 這可以通過
git push --tags
要將GitHub倉庫鏡像到Gitolite,首先在Gitolite上創建一個新的倉庫(使用gitolite-admin
倉庫 - 我假設Gitolite管理員知道如何做到這一點),但這是一個示例配置條目:
repo github/<gh-user>/<gh-repo>
desc = "Repository description [https://github.com/<gh-user>/<gh-repo>]"
owner = "My Name"
category = "GitHub"
RW+ = my_key
其中<gh-user>
是GitHub用戶, <gh-repo>
是鏡像的GitHub存儲庫。 此示例將鏡像放在GitHub和user子目錄中,但您可以使用任何適合的repo
路徑。
然后,從任何可以訪問GitHub和Gitolite的地方:
$ git clone --mirror https://github.com/<gh-user>/<gh-repo>
$ cd <gh-repo>.git
$ git push --mirror gitolite git@git:github/<gh-user>/<gh-repo>
$ cd ..
$ rm -rf <gh-repo>.git
其中git@git
是用於連接Gitolite的SSH用戶和主機名。 本地克隆是臨時的,之后會被刪除。
OP只詢問移動存儲庫,在這種情況下,他可能會停在這里。 但是,如果需要在GitHub上托管repo的本地鏡像並定期同步本地鏡像,那么這是一種方法。
要將Gitolite鏡像與GitHub同步,請以Gitolite admin( git
)用戶身份登錄Gitolite服務器並執行以下配置:
$ cd ~git/repositories/github/<gh-user>/<gh-repo>
$ git remote add origin https://github.com/<gh-user>/<gh-repo>
$ git config remote.origin.fetch "+*:*"
這里將清楚地解釋命令中的參數。
然后,同步回購:
$ git fetch --prune
可以通過cron
作業自動獲取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.