簡體   English   中英

如何將git存儲庫從github移動到運行gitolite的本地服務器

[英]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 怎么樣:

  1. 在gitolite服務器上,使用命令git clone --mirror <github git repo path> github存儲庫的鏡像
  2. 將鏡像回購移動到上面鏈接中的正確位置,然后按照將現有回購移動到指南的gitolite的部分進行操作?

我能想到的最好的事情是拉一個本地副本,將原點更改為新服務器,然后推送:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM