我正在使用这么多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,并在日志文件中写一行,这样我可以在回来喝咖啡时查看失败:)
答案 0 :(得分:3)
执行“git svn fetch”后,您可以使用 merge 而不是 rebase 来获取最新的svn内容到您的本地分支。如果合并成功,您就会知道因为没有冲突(您可以使用git ls-files等工具找到)。如果合并没有工作,那么你没有破坏任何东西,只能忽略那些对工作树的顶级更改。
然后在提交之前做一个rebase作为最后一步(如果你想要;它不是严格需要的),你只能交互式地处理容易出错的rebase。
答案 1 :(得分:1)
我可以从git-svn
收集git-rebase
,git-sh-setup
git将退出,退出代码为1
,如果由于冲突而无法执行rebase