一份代碼怎麼在兩處地方做代碼管理?
我現在有一份代碼是用到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)有多可惡?
※非計算機專業學生怎麼走上計算機技術之路?