From d3153825723b2bec3476e84f2e423c646fd4c598 Mon Sep 17 00:00:00 2001 From: Mike Pontillo Date: Tue, 28 Feb 2012 11:53:24 -0800 Subject: [PATCH] Add 'rebase="false"' attribute to the XML. This new attribute can prevent 'repo sync' from automatically rebasing. I hit a situation in where one of the git repositories I was tracking was actually an external repository that I wanted to pull commits into and merge myself. (NOT rebase, since that would lose the merge history.) In this case, I'm not using 'repo upload', I'm manually managing the merges to and from this repository. Everything was going great until I typed 'repo sync' and it rebased my manually-merged tree. Hence the option to skip it. Change-Id: I965e0dd1acb87f4a56752ebedc7e2de1c502dbf8 --- manifest_xml.py | 9 ++++++++- project.py | 7 +++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index 9189eec4..44538690 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -498,6 +498,12 @@ class XmlManifest(object): "project %s path cannot be absolute in %s" % \ (name, self.manifestFile) + rebase = node.getAttribute('rebase') + if not rebase: + rebase = True + else: + rebase = rebase.lower() in ("yes", "true", "1") + if self.IsMirror: relpath = None worktree = None @@ -513,7 +519,8 @@ class XmlManifest(object): worktree = worktree, relpath = path, revisionExpr = revisionExpr, - revisionId = None) + revisionId = None, + rebase = rebase) for n in node.childNodes: if n.nodeName == 'copyfile': diff --git a/project.py b/project.py index f1a931c6..60fa510a 100644 --- a/project.py +++ b/project.py @@ -503,7 +503,8 @@ class Project(object): worktree, relpath, revisionExpr, - revisionId): + revisionId, + rebase = True): self.manifest = manifest self.name = name self.remote = remote @@ -522,6 +523,8 @@ class Project(object): else: self.revisionId = revisionId + self.rebase = rebase + self.snapshots = {} self.copyfiles = [] self.config = GitConfig.ForRepository( @@ -1096,7 +1099,7 @@ class Project(object): branch.merge = self.revisionExpr branch.Save() - if cnt_mine > 0: + if cnt_mine > 0 and self.rebase: def _dorebase(): self._Rebase(upstream = '%s^1' % last_mine, onto = revid) self._CopyFiles()