Просмотр исходного кода

Fix 'repo sync' rebase logic on a published branch

If the current branch is published, but all published commits are
merged into the manifest revision, but there is also at least one
unpublished commit on the current branch, we should rebase the
unpublished commit, rather than creating a merge commit.

Signed-off-by: Shawn O. Pearce <sop@google.com>
Shawn O. Pearce 17 лет назад
Родитель
Сommit
05f66b6836
1 измененных файлов с 3 добавлено и 6 удалено
  1. 3 6
      project.py

+ 3 - 6
project.py

@@ -682,18 +682,15 @@ class Project(object):
                        branch.name,
                        branch.name,
                        len(upstream_gain))
                        len(upstream_gain))
         return
         return
-      elif upstream_gain:
-        # We can fast-forward safely.
+      elif pub == head:
+        # All published commits are merged, and thus we are a
+        # strict subset.  We can fast-forward safely.
         #
         #
         def _doff():
         def _doff():
           self._FastForward(rev)
           self._FastForward(rev)
           self._CopyFiles()
           self._CopyFiles()
         syncbuf.later1(self, _doff)
         syncbuf.later1(self, _doff)
         return
         return
-      else:
-        # Trivially no changes in the upstream.
-        #
-        return
 
 
     if merge == rev:
     if merge == rev:
       try:
       try: