Make refs/remotes/m management the manifest object's responsibility

I plan to have the new submodule manifest format use a different
layout for the m refs than the XML manifest format has used in
the past.  Thus we need to move the behavior management into the
manifest object, and out of the project, so we can change it.

Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2009-07-03 15:29:02 -07:00
parent 2095179bee
commit cc6c79643e
4 changed files with 14 additions and 7 deletions

View File

@ -21,7 +21,6 @@ HEAD = 'HEAD'
R_HEADS = 'refs/heads/' R_HEADS = 'refs/heads/'
R_TAGS = 'refs/tags/' R_TAGS = 'refs/tags/'
R_PUB = 'refs/published/' R_PUB = 'refs/published/'
R_M = 'refs/remotes/m/'
class GitRefs(object): class GitRefs(object):

View File

@ -35,3 +35,10 @@ class Manifest(object):
@property @property
def IsMirror(self): def IsMirror(self):
return self.manifestProject.config.GetBoolean('repo.mirror') return self.manifestProject.config.GetBoolean('repo.mirror')
@property
def projects(self):
return {}
def SetMRefs(self, project):
pass

View File

@ -29,6 +29,7 @@ from error import ManifestParseError
MANIFEST_FILE_NAME = 'manifest.xml' MANIFEST_FILE_NAME = 'manifest.xml'
LOCAL_MANIFEST_NAME = 'local_manifest.xml' LOCAL_MANIFEST_NAME = 'local_manifest.xml'
R_M = 'refs/remotes/m/'
class _Default(object): class _Default(object):
"""Project defaults within the manifest.""" """Project defaults within the manifest."""
@ -168,6 +169,10 @@ class XmlManifest(Manifest):
self._Load() self._Load()
return self._default return self._default
def SetMRefs(self, project):
if self.branch:
project._InitAnyMRef(R_M + self.branch)
def _Unload(self): def _Unload(self):
self._loaded = False self._loaded = False
self._projects = {} self._projects = {}

View File

@ -27,7 +27,7 @@ from git_config import GitConfig, IsId
from error import GitError, ImportError, UploadError from error import GitError, ImportError, UploadError
from error import ManifestInvalidRevisionError from error import ManifestInvalidRevisionError
from git_refs import GitRefs, HEAD, R_HEADS, R_TAGS, R_PUB, R_M from git_refs import GitRefs, HEAD, R_HEADS, R_TAGS, R_PUB
def _lwrite(path, content): def _lwrite(path, content):
lock = '%s.lock' % path lock = '%s.lock' % path
@ -598,7 +598,7 @@ class Project(object):
return False return False
if self.worktree: if self.worktree:
self._InitMRef() self.manifest.SetMRefs(self)
else: else:
self._InitMirrorHead() self._InitMirrorHead()
try: try:
@ -1080,10 +1080,6 @@ class Project(object):
remote.ResetFetch(mirror=True) remote.ResetFetch(mirror=True)
remote.Save() remote.Save()
def _InitMRef(self):
if self.manifest.branch:
self._InitAnyMRef(R_M + self.manifest.branch)
def _InitMirrorHead(self): def _InitMirrorHead(self):
self._InitAnyMRef(HEAD) self._InitAnyMRef(HEAD)