1. 程式人生 > >repo sync 時自動切換當前分支的remote track分支的問題

repo sync 時自動切換當前分支的remote track分支的問題

使用repo sync時,如果當前倉庫有檢出本地分支,假設為dev, 對應的遠端track分支為origin/dev。 而manifest.xml中指定的track分支為origin/master,那麼在repo sync時會自動將當前的dev分支的遠端track分支修改為origin/master, 不僅如此,同時還會將origin/master上的修改rebase到本地的這個dev分支上。


projectA/: manifest switched refs/heads/dev...master
project projectA/
First, rewinding head to replay your work on top of it...
Applying: y

雖然repo會給出上面的提示資訊"  manifest switched",但經常會被接下來的輸出淹沒掉,而且很多時候這樣的行為都不是我們想要的,要想終止這個行為,可以這樣修改

diff --git a/project.py b/project.py
index 22e4a5d..3ce6500 100644
--- a/project.py
+++ b/project.py
@@ -1169,6 +1169,8 @@ class Project(object):
         syncbuf.info(self,
                      'manifest no longer tracks %s',
                      branch.merge)
+      syncbuf.fail(self, "branch is not consistent:%s, %s" %(branch.merge, self.revisionExpr))  
+      return
 
     if cnt_mine < len(local_changes):
       # Upstream rebased.  Not everything in HEAD


that's all