2009-08-23 58 views
6

我與被奠定了這樣一個SVN倉庫工作:混帳SVN不承諾分支,只有主幹

 
$SVN/[project]/trunk 
$SVN/[project]/branches/[user]/[branch] 
$SVN/[project]/tags/releases/[tag] 

我的.git /配置是這樣的:

 
[svn-remote "svn"] 
    url = $SVN 
    fetch = project/trunk:refs/remotes/trunk 
    branches = project/branches/*/*:refs/remotes/* 

當我看着git分支-a,我看到所有的遠程分支。比方說,我想檢查一個,處理它,然後再提交更改。這裏就是我想要做的事:

 
git checkout -b comments erik/comments 
.... work, commit locally .... 
git svn dcommit 

然而,dcommit總是推到$ SVN /項目/主幹。 git svn info總是報告URL爲$ SVN/project/trunk

我試過使用--track,我試過用-hard重置。我在這裏沒有想法。我懷疑這是我的[svn-remote],但這只是一種預感。

回答

0

您可以嘗試svn2git, and git2svn,因爲它們會考慮到非標準的SVN佈局。

他們確實使用的git svn--tags--branches參數,即使你不使用我上面提到的腳本,您可以使用這些參數,以獲得在你的svn庫在正確的地方的數據。

1

分支erik/comments已經存在於SVN中了嗎?

我的工作方式如下:

git svn fetch #update any newly created branches 
git checkout davec/new-feature # on remote branch, git may warn you 
git checkout -b new-feature davec/new-feature # assumes this exists in SVN 
# hack 
# commit 
git svn dcommit 

我意識到git checkout -b local remote是什麼,我在兩個步驟做的一步版本,然而,這似乎工作。

另一種選擇是用您的用戶名替換您的配置,例如,

branches = project/branches/erik/*:refs/remotes/* 

然後

git checkout new-feature # remote branch 
git checkout -b new-feature-branch # local