我聽說可以在開發人員計算機上擁有本地Git存儲庫,同時將源代碼的主副本保存在svn存儲庫中。將本地Git存儲庫與主Subversion版本庫一起使用
一個很好的用例是你有一個每個開發者都使用的中央svn倉庫。一名開發人員偶爾會下線,並希望跟蹤他/她離線時所做的更改。當開發人員重新上線並可以訪問svn時,他們的工作副本修改可以檢查到svn。在沒有使用Git本地發生的更改歷史記錄時,我很好,當將這些文件簽入svn時。
有人可以概述如何最好地把它關掉嗎?有沒有這樣的工作陷阱?
我聽說可以在開發人員計算機上擁有本地Git存儲庫,同時將源代碼的主副本保存在svn存儲庫中。將本地Git存儲庫與主Subversion版本庫一起使用
一個很好的用例是你有一個每個開發者都使用的中央svn倉庫。一名開發人員偶爾會下線,並希望跟蹤他/她離線時所做的更改。當開發人員重新上線並可以訪問svn時,他們的工作副本修改可以檢查到svn。在沒有使用Git本地發生的更改歷史記錄時,我很好,當將這些文件簽入svn時。
有人可以概述如何最好地把它關掉嗎?有沒有這樣的工作陷阱?
你可以用this tutorial這樣的東西作爲起點。我也讀了this tutorial。
這種工作模式有幾個缺陷。最重要的是,你不能使用svn版本1.5合併信息,並期望這通過git生存。這是一個主要的缺點,如果你使用(可以說相當體面的)svn 1.5合併功能。
git-svn的手冊頁還包含一些您應該瞭解的「注意事項」部分。一旦我理解了所有的注意事項,我就明白使用這種設置的好處比我的具體情況下的實際成本要低。所以我用我的精力去說服項目轉,而不是與git,這是我剛succeded在
我認爲git-svn更好的用例是,如果你被迫使用中央svn倉庫,但你想親自使用git。或者也許團隊中的大多數人現在更喜歡與svn合作。使用git-svn你不會失去在本地git倉庫中提交的歷史。
如果您從頭開始設置新的存儲庫和/或可以自由選擇,我會選擇其中一個。 git-svn可以很好地工作,但你會一直在與兩個系統之間的'阻抗不匹配'作鬥爭。
如果它只是一個集中式模型,您正在尋求實現,那麼公共git存儲庫可以用作中央存儲庫。請參閱setting up a shared repository上的Git用戶手冊部分。
一個解決方案,我會嘗試是:使用SVN
說你的SVN回購是在SVN + SSH://用戶名@ svn_server/SVN/your_repo
和你的SVN倉庫有一個 「正確」 的佈局(樹幹,樹枝,標籤) 這裏的工作流程我已經使用了幾個月了:
1。'MKDIR your_repo'
2. 'CD your_repo'
3.'的git svn的克隆-s SVN + SSH://用戶名@ svn_server/SVN/your_repo。'(介意點)
4等待這取決於你的資料庫:)的大小而]
現在您的GIT‘主人’跟蹤SVN主幹
你也可以做一個跟蹤分支像你的通常做使用Git如果你在一些分支工作
5.傳統砍砍砍
6.更新你的克隆「混帳SVN取& &混帳SVN變基」
7.「推」您對svn的更改與'git svn dcommit '
更多的好東西
定義按照你的.gitconfig方便別名:
1.別名' spull '它代表SVN-拉這樣的:'!spull =混帳SVN取& &混帳SVN變基 '
2.別名' spush '它代表SVN推這樣的:'!spush =混帳SVN dcommit'
這些別名轉工作流程,以純效益: 克隆/砍砍/spull/spush - >利潤
的svn:externals的
我找不到這是在互聯網上的一個很好的解決方案,所以我自己做了一個:)
http://github.com/sushdm/git_svn_externals它還不完美,但它應該明確地讓生活變得更容易。
對我很好,希望它對你有幫助。