svn不是致力于分支,只有中继
我正在处理一个像这样布置的SVN存储库:
$SVN/[project]/trunk $SVN/[project]/branches/[user]/[branch] $SVN/[project]/tags/releases/[tag]
我的.git / config如下所示:
[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 / project / trunk。 git svn info
总是将URL报告为$ SVN / project / trunk
我尝试过使用--track,我试着用--hard重新设置。 我在这里没有想法。 我怀疑这是我的[svn-remote],但这只是一种预感。
看起来这样做或多或少都在寻找:使用Git-Svn克隆非标准Svn库
我仍然有一些问题没有出现,但那是另一天。 感谢大家!
分支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
你可以尝试svn2git和git2svn,因为它们考虑到了非标准的SVN布局。
他们确实使用了git svn
的--tags
和--branches
参数,即使你没有使用我上面提到的脚本,你也可以使用这些参数来获取svn仓库中正确位置的数据。