透明的 git-svn 網關
目前我們有一個具有以下佈局的 subversion 儲存庫:
/截斷
/group1
- /項目1
- /proj2
組2
- /proj3
- /等等..
/標籤
/group1
- /項目1
- /proj2
組2
- /proj3
- /等等..
/分支
- /任何暫時的
我相信這是一個相當糟糕的佈局,但目前很難完全改變它。
我個人不喜歡顛覆,主要是因為檢查歷史記錄需要很長時間,而且分支和合併很麻煩等,所以我真的想改用 git。
遺憾的是,我們不能只是切換到 git,因為某些人的心智能力可能會不堪重負,所以我正在研究 git-svn 看看我是否可以實際使用它來解決問題。
可悲的是,這直接導致了糟糕的情況,因為我想將每個項目分解為一個 git repo,並且我不想在我工作的每台電腦上重新創建 git-svn checkout。所以我雖然也許有可能創建某種透明的 git ←→ svn 代理/網關,以便對該 repo 的推送“送出”到 svn repo,並且對 svn repo 的送出更新 git repo。
Google不是我的朋友,只找到了使用 git-svn 的通用用法幫助,所以我問你是否有一些好的想法來完成這個。
對於透明的 Git/Svn 網關,您可以使用SubGit,它非常符合您的要求,只是現在它只支持簡單的單項目(/trunk、/branches、/tags)或多項目(/project/trunk、 …) 佈局。
如果你不控製或不想弄亂 Subversion 伺服器,那麼你不能使用 SubGit。在這種情況下,您可以為每個主幹自動同步 git 儲存庫。我們的團隊就是這樣工作的——我們有一個 git-Subversion 橋,可以同步我們團隊的 git 儲存庫和公司 Subversion 儲存庫中項目的主乾之間的更改,以便我們的 git 使用對其他 Subversion 使用者是透明的。
設置在https://github.com/mrts/git-svn-bridge有更詳細的描述。
我們已經在生產中使用這種設置一年多了。
我想設置的最大警告是在合併到主幹期間 git 分支將被壓縮為一個送出。對我們來說這沒有問題——我們使用短期任務分支,並認為它們是輕量級的、短暫的“工作單元”,可以在單個塊中進入主線——並且分支歷史保留在 git 中。