2009-08-12 106 views
12

我聽說可以在開發人員計算機上擁有本地Git存儲庫,同時將源代碼的主副本保存在svn存儲庫中。將本地Git存儲庫與主Subversion版本庫一起使用

一個很好的用例是你有一個每個開發者都使用的中央svn倉庫。一名開發人員偶爾會下線,並希望跟蹤他/她離線時所做的更改。當開發人員重新上線並可以訪問svn時,他們的工作副本修改可以檢查到svn。在沒有使用Git本地發生的更改歷史記錄時,我很好,當將這些文件簽入svn時。

有人可以概述如何最好地把它關掉嗎?有沒有這樣的工作陷阱?

回答

4

你可以用this tutorial這樣的東西作爲起點。我也讀了this tutorial

這種工作模式有幾個缺陷。最重要的是,你不能使用svn版本1.5合併信息,並期望這通過git生存。這是一個主要的缺點,如果你使用(可以說相當體面的)svn 1.5合併功能。

git-svn的手冊頁還包含一些您應該瞭解的「注意事項」部分。一旦我理解了所有的注意事項,我就明白使用這種設置的好處比我的具體情況下的實際成本要低。所以我用我的精力去說服項目轉,而不是與git,這是我剛succeded在

1

我認爲git-svn更好的用例是,如果你被迫使用中央svn倉庫,但你想親自使用git。或者也許團隊中的大多數人現在更喜歡與svn合作。使用git-svn你不會失去在本地git倉庫中提交的歷史。

如果您從頭開始設置新的存儲庫和/或可以自由選擇,我會選擇其中一個。 git-svn可以很好地工作,但你會一直在與兩個系統之間的'阻抗不匹配'作鬥爭。

如果它只是一個集中式模型,您正在尋求實現,那麼公共git存儲庫可以用作中央存儲庫。請參閱setting up a shared repository上的Git用戶手冊部分。

2

一個解決方案,我會嘗試是:使用SVN

  • git的初始化從中央回購

    1. 結帳創建本地回購
    2. 添加的.svn到的.gitignore
    3. git的添加*到所有文件添加到本地回購
    4. 把你所有的中間分支/提交/恢復的飯桶。
    5. 完成後,使用SVN提交回中央回購站。
  • 4

    說你的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它還不完美,但它應該明確地讓生活變得更容易。

    對我很好,希望它對你有幫助。

    相關問題