我正在将大型存储库从SVN转换为Git。我已经使用SVN2Git来处理转换。但是,这需要很长时间。所以,我一直在使用svn2git --rebase
命令在我们测试,准备CI和构建基础架构等时引入更改。
但是,我不确定我应该如何处理对分支或更改分支的更改。例如,今天有人创建了一个分支,我需要将其引入。我运行svn2git --rebase
(针对[master]),它按预期更新master,但新分支没有转换。< / p>
这让我怀疑它是否正在更新现有的分支机构。那么,svn2git在--rebase
期间做了什么,确切地说,但更重要的是,我如何确保我的分支机构得到更新并且任何新的分支机构也在被转换?
我甚至会讨论如何从svn手动转换或更新git分支,因为它们并不多,但它们很重要。
答案 0 :(得分:0)
在我的情况下,我最后使用与我最初使用的相同的参数调用svn2git
,除了我使用-revision
跳过我感兴趣的分支的提交。
我不确定这是否正确,但它对我有用。
答案 1 :(得分:0)
我发现使用svn2git,即使使用--rebase,分支也不总是保持最新。所以如果你跑:
svn2git --rebase
...并且您仍然没有更新本地分支机构,那么您可能需要在运行svn2git后手动更新本地引用。 (不要在当前分支上执行此操作,因为它将失败。首先关闭主服务器。)
git branch -f master remotes/svn/trunk
这会强制您的本地Git主分支与远程SVN主干分支进行相同的提交。
如果您有很多分支要执行此操作,那么以下循环应该能够为您纠正此问题(确保您当前的分支不在此列表中 - 可能是好转到主人):
for i in `git branch -a \
| grep remotes/svn | grep -v trunk \
| sed -e 's/^ remotes.svn.//'`; do
git branch -f $i remotes/svn/$i
done
请注意,这样做会覆盖您在该分支上对Git所做的任何提交。 我建议只在您没有的情况下然后开始使用Git存储库。