|
@@ -63,12 +63,14 @@ class _XmlRemote(object):
|
|
|
alias=None,
|
|
alias=None,
|
|
|
fetch=None,
|
|
fetch=None,
|
|
|
manifestUrl=None,
|
|
manifestUrl=None,
|
|
|
- review=None):
|
|
|
|
|
|
|
+ review=None,
|
|
|
|
|
+ revision=None):
|
|
|
self.name = name
|
|
self.name = name
|
|
|
self.fetchUrl = fetch
|
|
self.fetchUrl = fetch
|
|
|
self.manifestUrl = manifestUrl
|
|
self.manifestUrl = manifestUrl
|
|
|
self.remoteAlias = alias
|
|
self.remoteAlias = alias
|
|
|
self.reviewUrl = review
|
|
self.reviewUrl = review
|
|
|
|
|
+ self.revision = revision
|
|
|
self.resolvedFetchUrl = self._resolveFetchUrl()
|
|
self.resolvedFetchUrl = self._resolveFetchUrl()
|
|
|
|
|
|
|
|
def __eq__(self, other):
|
|
def __eq__(self, other):
|
|
@@ -159,6 +161,8 @@ class XmlManifest(object):
|
|
|
e.setAttribute('alias', r.remoteAlias)
|
|
e.setAttribute('alias', r.remoteAlias)
|
|
|
if r.reviewUrl is not None:
|
|
if r.reviewUrl is not None:
|
|
|
e.setAttribute('review', r.reviewUrl)
|
|
e.setAttribute('review', r.reviewUrl)
|
|
|
|
|
+ if r.revision is not None:
|
|
|
|
|
+ e.setAttribute('revision', r.revision)
|
|
|
|
|
|
|
|
def Save(self, fd, peg_rev=False, peg_rev_upstream=True):
|
|
def Save(self, fd, peg_rev=False, peg_rev_upstream=True):
|
|
|
"""Write the current manifest out to the given file descriptor.
|
|
"""Write the current manifest out to the given file descriptor.
|
|
@@ -240,7 +244,8 @@ class XmlManifest(object):
|
|
|
if d.remote:
|
|
if d.remote:
|
|
|
remoteName = d.remote.remoteAlias or d.remote.name
|
|
remoteName = d.remote.remoteAlias or d.remote.name
|
|
|
if not d.remote or p.remote.name != remoteName:
|
|
if not d.remote or p.remote.name != remoteName:
|
|
|
- e.setAttribute('remote', p.remote.name)
|
|
|
|
|
|
|
+ remoteName = p.remote.name
|
|
|
|
|
+ e.setAttribute('remote', remoteName)
|
|
|
if peg_rev:
|
|
if peg_rev:
|
|
|
if self.IsMirror:
|
|
if self.IsMirror:
|
|
|
value = p.bare_git.rev_parse(p.revisionExpr + '^0')
|
|
value = p.bare_git.rev_parse(p.revisionExpr + '^0')
|
|
@@ -252,8 +257,10 @@ class XmlManifest(object):
|
|
|
# isn't our value, and the if the default doesn't already have that
|
|
# isn't our value, and the if the default doesn't already have that
|
|
|
# covered.
|
|
# covered.
|
|
|
e.setAttribute('upstream', p.revisionExpr)
|
|
e.setAttribute('upstream', p.revisionExpr)
|
|
|
- elif not d.revisionExpr or p.revisionExpr != d.revisionExpr:
|
|
|
|
|
- e.setAttribute('revision', p.revisionExpr)
|
|
|
|
|
|
|
+ else:
|
|
|
|
|
+ revision = self.remotes[remoteName].revision or d.revisionExpr
|
|
|
|
|
+ if not revision or revision != p.revisionExpr:
|
|
|
|
|
+ e.setAttribute('revision', p.revisionExpr)
|
|
|
|
|
|
|
|
for c in p.copyfiles:
|
|
for c in p.copyfiles:
|
|
|
ce = doc.createElement('copyfile')
|
|
ce = doc.createElement('copyfile')
|
|
@@ -592,8 +599,11 @@ class XmlManifest(object):
|
|
|
review = node.getAttribute('review')
|
|
review = node.getAttribute('review')
|
|
|
if review == '':
|
|
if review == '':
|
|
|
review = None
|
|
review = None
|
|
|
|
|
+ revision = node.getAttribute('revision')
|
|
|
|
|
+ if revision == '':
|
|
|
|
|
+ revision = None
|
|
|
manifestUrl = self.manifestProject.config.GetString('remote.origin.url')
|
|
manifestUrl = self.manifestProject.config.GetString('remote.origin.url')
|
|
|
- return _XmlRemote(name, alias, fetch, manifestUrl, review)
|
|
|
|
|
|
|
+ return _XmlRemote(name, alias, fetch, manifestUrl, review, revision)
|
|
|
|
|
|
|
|
def _ParseDefault(self, node):
|
|
def _ParseDefault(self, node):
|
|
|
"""
|
|
"""
|
|
@@ -686,7 +696,7 @@ class XmlManifest(object):
|
|
|
raise ManifestParseError("no remote for project %s within %s" %
|
|
raise ManifestParseError("no remote for project %s within %s" %
|
|
|
(name, self.manifestFile))
|
|
(name, self.manifestFile))
|
|
|
|
|
|
|
|
- revisionExpr = node.getAttribute('revision')
|
|
|
|
|
|
|
+ revisionExpr = node.getAttribute('revision') or remote.revision
|
|
|
if not revisionExpr:
|
|
if not revisionExpr:
|
|
|
revisionExpr = self._default.revisionExpr
|
|
revisionExpr = self._default.revisionExpr
|
|
|
if not revisionExpr:
|
|
if not revisionExpr:
|