2009-08-19 142 views
0

我使用瞭如此之多的git-svn版本庫(同時),以至於它將全部更新它們變得越來越麻煩。我想寫一個腳本來自動化這個,所以我可以每天早上在我拿一杯咖啡的時候運行它。git-svn rebase檢測到衝突

基本上我的工作流程是這樣的

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變基--abort,並寫一行到一個日誌文件,以便我可以檢查失敗,當我回到我的咖啡:)

回答

1

從我可以從git-svngit-rebase聚集,git-sh-setup混帳如果由於衝突無法執行rebase,將退出1退出代碼。

+0

這似乎是正確的,但如果因爲例如不能執行rebase,它也會返回1。工作副本中有未提交的更改。我應該運行git rebase --abort嗎? – amarillion 2009-08-19 13:01:32

+0

那麼,如果沒有交互就無法執行rebase,那麼當它自動運行時你並沒有真正的選擇,是嗎? – Bombe 2009-08-19 13:29:29

3

做「混帳SVN獲取」後,您可以使用合併代替的變基以獲得最新的svn東西到你的本地分支。如果合併成功,你會知道,因爲沒有衝突(你可以用git ls-files等工具找到)。如果合併沒有工作,那麼您沒有改變任何東西,並且可以忽略那些對工作樹進行的頂級更改。

然後做一個變基在最後一步之前提交(如果你想,它不是嚴格需要),並可以處理容易出錯墊底交互只有一次。