Change project.revision to revisionExpr and revisionId
The revisionExpr field now holds an expression from the manifest,
such as "refs/heads/master", while revisionId holds the current
commit-ish SHA-1 of the revisionExpr. Currently that is only
filled in if the manifest points directly to a SHA-1.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/manifest_xml.py b/manifest_xml.py
index 5c5617a..51e653e 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -27,7 +27,7 @@
class _Default(object):
"""Project defaults within the manifest."""
- revision = None
+ revisionExpr = None
remote = None
class _XmlRemote(object):
@@ -116,9 +116,9 @@
if d.remote:
have_default = True
e.setAttribute('remote', d.remote.name)
- if d.revision:
+ if d.revisionExpr:
have_default = True
- e.setAttribute('revision', d.revision)
+ e.setAttribute('revision', d.revisionExpr)
if have_default:
root.appendChild(e)
root.appendChild(doc.createTextNode(''))
@@ -138,12 +138,12 @@
if peg_rev:
if self.IsMirror:
e.setAttribute('revision',
- p.bare_git.rev_parse(p.revision + '^0'))
+ p.bare_git.rev_parse(p.revisionExpr + '^0'))
else:
e.setAttribute('revision',
p.work_git.rev_parse(HEAD + '^0'))
- elif not d.revision or p.revision != d.revision:
- e.setAttribute('revision', p.revision)
+ elif not d.revisionExpr or p.revisionExpr != d.revisionExpr:
+ e.setAttribute('revision', p.revisionExpr)
for c in p.copyfiles:
ce = doc.createElement('copyfile')
@@ -286,7 +286,8 @@
gitdir = gitdir,
worktree = None,
relpath = None,
- revision = m.revision)
+ revisionExpr = m.revisionExpr,
+ revisionId = None)
self._projects[project.name] = project
def _ParseRemote(self, node):
@@ -306,9 +307,9 @@
"""
d = _Default()
d.remote = self._get_remote(node)
- d.revision = node.getAttribute('revision')
- if d.revision == '':
- d.revision = None
+ d.revisionExpr = node.getAttribute('revision')
+ if d.revisionExpr == '':
+ d.revisionExpr = None
return d
def _ParseProject(self, node):
@@ -325,10 +326,10 @@
"no remote for project %s within %s" % \
(name, self.manifestFile)
- revision = node.getAttribute('revision')
- if not revision:
- revision = self._default.revision
- if not revision:
+ revisionExpr = node.getAttribute('revision')
+ if not revisionExpr:
+ revisionExpr = self._default.revisionExpr
+ if not revisionExpr:
raise ManifestParseError, \
"no revision for project %s within %s" % \
(name, self.manifestFile)
@@ -355,7 +356,8 @@
gitdir = gitdir,
worktree = worktree,
relpath = path,
- revision = revision)
+ revisionExpr = revisionExpr,
+ revisionId = None)
for n in node.childNodes:
if n.nodeName == 'copyfile':