Svn

透明的 git-svn 網關

  • August 27, 2012

目前我們有一個具有以下佈局的 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 中。

引用自:https://serverfault.com/questions/149377