一份代碼怎麼在兩處地方做代碼管理?

我現在有一份代碼是用到github做代碼管理,現在還要傳一份到公司svn上,以後我提交代碼,有沒有辦法能同時push到這兩個地方。

如果是用的eclipse的Team功能提交代碼,這樣有沒有可能?


微軟的.net core也是,一份在github上,另一份在公司內部。然後我們寫了個程序,每次有人在github上操作(包括merge pull request),會自動調用內部的perforce的程序提交,每天從perforce那裡sync完往github上傳,完美解決。


如果是 Git,一般來說最佳方法是給 origin 設兩個地址:

  • Use case 1: 多地址的 remote repo:

git remote set-url origin --add https://github.com/USERNAME/REPO1.git
git remote set-url origin --add https://github.com/USERNAME/REPO2.git

在 .git/config 里得到

...
[remote "origin"]
url = https://USERNAME@github.com/USERNAME/REPO1.git
url = https://USERNAME@github.com/USERNAME/REPO2.git
...
[branch "master"]
remote = origin
...

然後

git push origin master

就會同時提交到兩個 repo,而

git pull origin master

會從兩個 repo 里取得更新。

當然 URL 和 repo 不一定非要是 GitHub 上的,具有兩個 url 的 remote 也不一定要是 origin,比如可以設置成 all。

  • 只用於 push 的備份 repo

另外一種 use case,你想從 repo1 pull,但是 push 的時候要推送到 repo1 和另一個 repo2,

git remote set-url origin --add https://github.com/USERNAME/REPO1.git
git remote set-url origin --push --add https://example.com/USERNAME/REPO2.git

在 .git/config 里得到

...
[remote "origin"]
url = https://USERNAME@github.com/USERNAME/REPO1.git
pushurl = https://USERNAME@example.com/USERNAME/REPO2.git
...
[branch "master"]
remote = origin
...

然後

git push origin master

就會同時提交到兩個 repo,而

git pull origin master

會從兩個 GitHub repo1 里取得更新。


git本身支持多個remote啊。。。

在手工作業的情況下,你需要確定一個主要的repository,日常開發任務應該在主要repository上完成,另外一個僅僅作為備份,push的時候多push一次就行了。我們公司自己開源的框架代碼就是這樣維護的,不過我們是以github為主,內部伺服器只是作為備份,我一般都是在push的時候直接同時push到兩個remote上去。

如果兩個repository都會有不同的team同時提交的話,那就稍微有點麻煩,如輪子所述,自己寫個工具會比較好。


如果有錢的話,IBM的Clearcase會是最好的選擇。Clearcase提供的Multisite功能完美實現題主所需要的代碼同步功能。

另外,其他版本管理軟體如DesignSync也可以達到題主的要求,功能相比Clearcase稍弱。

輪子哥的辦法也可以,無非就是文件級別的數據同步罷了。


用git-svn。svn被當做一個特殊的branch


添加兩個遠程倉庫就好了呀

當然要提交兩次


推薦閱讀:

各項參數幾乎相同的i7和Xeon差別在哪呢?
你做的項目中,通常單元測試(Unit test)佔用時間的比例是多少?
計算機專業如何入門網路入侵?有哪些專業書單值得推薦?
駭客(Cracker)有多可惡?
非計算機專業學生怎麼走上計算機技術之路?

TAG:計算機 | 代碼 | 代碼管理 | Eclipse |