在git-svn rebase之后检测冲突

时间:2009-08-19 12:32:10

标签: git automation git-svn lazy-evaluation git-rebase

我正在使用这么多git-svn存储库(同时),它正在变成一件苦差事来更新它们。我想编写一个自动执行此脚本的脚本,因此我每天早上都可以在拿咖啡时运行它。

基本上我的工作流程就像这样

cd ~/module1
git svn fetch
git checkout master
git svn rebase

git checkout topicbranch
git svn rebase

cd ~/module2
git svn fetch
git checkout master
git svn rebase

我已经自动化了git svn fetch部分,可以随时安全地完成。但是因为可能存在冲突而自动执行git svn rebase并不是那么安全。

脚本如何判断rebase之后是否存在冲突?然后我可以运行git rebase --abort,并在日志文件中写一行,这样我可以在回来喝咖啡时查看失败:)

2 个答案:

答案 0 :(得分:3)

执行“git svn fetch”后,您可以使用 merge 而不是 rebase 来获取最新的svn内容到您的本地分支。如果合并成功,您就会知道因为没有冲突(您可以使用git ls-files等工具找到)。如果合并没有工作,那么你没有破坏任何东西,只能忽略那些对工作树的顶级更改。

然后在提交之前做一个rebase作为最后一步(如果你想要;它不是严格需要的),你只能交互式地处理容易出错的rebase。

答案 1 :(得分:1)

我可以从git-svn收集git-rebasegit-sh-setup git将退出,退出代码为1,如果由于冲突而无法执行rebase