2011-04-01 23 views
13

我有一個SVN回購與像
PROJECT1佈局/後備箱
PROJECT1 /分支
PROJECT1 /標籤
項目2 /後備箱
項目2 /一個SVN回購分支機構
項目2 /標籤
我可以混帳svn的克隆與多個標準的目錄佈局

對於一些原因,我想一個git - svn的回購協議,讓我在任何這些項目從/在工作和獲取/ dcommit到所有的人一旦。這種事情可能嗎?我知道我可以只是git-svn克隆整個事物而不指定分支,標籤和樹幹,但是我會失去很多使用git的優勢。

回答

9

這就是我做到的。不過,可能有更簡單的方法。

  1. 選擇的標準佈局的第一個項目,你想上git svn clone它的工作:

    git svn clone --stdlayout http://sample.com/svn/repository-name/project-name repository-name

  2. 走進了repository-name目錄並編輯其.git/config文件。你也可以用git-config命令來做到這一點,但我發現它在文本編輯器中更容易。

  3. 您會看到已爲第一個項目定義的[svn-remote "svn"]部分。將svn-remote重命名爲比"svn"更獨特的東西,可能與您的項目名稱相同。例如,[svn-remote "project-name"]

  4. 爲每個項目製作更多[svn-remote "project-name"]部分,遵循第一個模板。給每個人一個獨特的名字!您需要更改fetch,branchestags設置,以便爲每個項目使用正確的Subversion目錄名稱。

  5. 一旦你完成了,保存你的文件並運行git svn fetch --fetch-all。其他項目將在本地存儲庫中作爲遠程存儲提取。

  6. 要在項目之間切換master,請執行git reset --hard other-project-name/trunk,就像切換到其他任何遠程Subversion分支一樣。

+0

請問一個混帳SVN變基重新設計所有的項目? git svn dcommit會提交所有更改嗎? – 2011-04-01 03:14:56

+1

'git svn rebase'只是讓你修改當前的HEAD,所以不行,你只能得到當前項目的當前分支。 'git svn dcommit'也一樣。要獲得每個項目,您需要執行'git svn fetch --fetch-all',然後重新綁定當前的HEAD。不幸的是,我不知道等同於提交所有遠離其遙控器的本地分支,但我確定它可以編寫腳本。 – 2011-04-01 03:20:26

+2

這就是我正在尋找的。爲了簡化,在步驟1中將-R project1-name --prefix = project1-name /添加到git svn clone命令中,以使初始克隆從頭開始使用正確的svn-remote名稱和分支前綴。 – 2011-04-01 14:06:46