2009-02-21 47 views
10

夥計我面對重複的代碼衝突而從共享混帳回購協議在以下情況下拉動避免衝突:同時使用Git svn的

  1. 有一個共同的SVN倉庫

  2. 有一些開發人員使用git-svn bridge(通過git svn rebase/dcommit)跟蹤/同步這個常見的svn回購協議

  3. 這些開發人員不時使用git, SVN庫。爲此,他們設置了一個共享的git倉庫,並使用推/拉命令交換他們的工作

  4. 事實證明,由於使用「git svn rebase」與主svn倉庫同步,​​這些開發人員可能會面臨衝突問題。發生這種情況是因爲rebase操作會重寫本地git分支的歷史記錄,並且不可能推入共享的git倉庫,並且通常會導致衝突。

任何人都有同樣的問題?

回答

8

git-svn(1)說:

爲了簡單起見並且 與能力更少 系統(SVN)互操作,則建議 所有GIT-SVN用戶克隆,提取和 dcommit直接從SVN服務器 ,並避免所有git-clone/pull/merge/push操作 git存儲庫和分支之間的所有 。 在git分支和用戶之間交換 代碼的推薦方法是 git-format-patch和git-am,或者只是向SVN存儲庫提交 。

如果您的情況允許,您可以在SVN存儲庫中使用分支(即子目錄)來隔離您的工作與其他開發人員。

3

我發現,合併git-svn更改爲各種git分支之間,他們之間是相當好的。 git-svn問題開始的地方是將這些更改合併回svn(或者說,您從中提交的git分支)。在我看來,如果您將更改手動合併回svn(例如,通過git diff | patch),則可以避免大部分這些問題。這將剝離你合併的東西的歷史,但顛覆用戶習慣了這個,這不是什麼大不了的事情。