2009-08-23 3 views
6

Ich bin mit einem SVN-Repository arbeiten, wie dies gelegt:git-svn ist nicht auf Zweige zu begehen, Stamm nur

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

Meine .git/config sieht wie folgt aus:

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

Wenn ich git Zweig -a betrachte, sehe ich alle Remote-Zweige. Lassen Sie uns sagen, ich möchte eins überprüfen, daran arbeiten und dann die Änderungen zurücknehmen. Hier ist, was ich versuche zu tun:

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

jedoch dcommit schiebt immer auf $ SVN/Projekt/trunk. git svn info meldet immer die URL als $ SVN/Projekt/Stamm

Ich habe versucht mit --track, ich habe versucht, mit --hard. Ich habe hier keine Ideen mehr. Ich vermute, es ist meine [svn-remote], aber das ist nur eine Ahnung.

Antwort

0

Sie könnten svn2git, and git2svn versuchen, da sie Nicht-Standard-SVN-Layouts berücksichtigen.

Sie tun verwenden, um die --tags und --branches Parameter git svn, und selbst wenn man die ich oben erwähnte nicht die Skripte verwenden, können Sie diese Parameter verwenden, um die Daten an den richtigen Stellen in Ihrer SVN-Repository zu erhalten.

1

Existiert der Zweig erik/comments bereits in SVN?

Ich arbeite wie folgt:

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 

Ich weiß, dass git checkout -b local remote ist ein Ein-Schritt-Version von dem, was ich in zwei Schritten tun, aber dies scheint zu funktionieren.

Eine andere Möglichkeit besteht darin, Ihre Konfiguration durch Ihren Benutzernamen zu ersetzen, z.

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

Und dann

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