mirror of
https://github.com/Dev-Wiki/git-repo.git
synced 2025-09-26 01:42:13 +08:00
Introduce manifest format using git submodules
If a manifest top level directory contains '.gitmodules' we now assume this is a git module format manifest and switch to using that code, rather than the legacy XML based manifest. At the same time, we move the bare repository for a project from $TOP/.repo/projects/$REPO_PATH.git to be $REPO_NAME.git instead. This makes it easier for us to later support a repo init from an existing work tree, as we can more accurately predict the path of the project's repository in the workspace. It also means that the $TOP/.repo/projects/ directory is layed out like a mirror would be. Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
@@ -21,6 +21,7 @@ from command import InteractiveCommand, MirrorSafeCommand
|
||||
from error import ManifestParseError
|
||||
from project import SyncBuffer
|
||||
from git_command import git_require, MIN_GIT_VERSION
|
||||
from manifest_submodule import SubmoduleManifest
|
||||
from manifest_xml import XmlManifest
|
||||
from subcmds.sync import _ReloadManifest
|
||||
|
||||
@@ -144,6 +145,14 @@ to update the working directory files.
|
||||
print >>sys.stderr, 'fatal: cannot obtain manifest %s' % r.url
|
||||
sys.exit(1)
|
||||
|
||||
if is_new and SubmoduleManifest.IsBare(m):
|
||||
new = self.GetManifest(reparse=True, type=SubmoduleManifest)
|
||||
if m.gitdir != new.manifestProject.gitdir:
|
||||
os.rename(m.gitdir, new.manifestProject.gitdir)
|
||||
new = self.GetManifest(reparse=True, type=SubmoduleManifest)
|
||||
m = new.manifestProject
|
||||
self._ApplyOptions(opt, is_new)
|
||||
|
||||
if not is_new:
|
||||
# Force the manifest to load if it exists, the old graph
|
||||
# may be needed inside of _ReloadManifest().
|
||||
|
@@ -22,7 +22,7 @@ from manifest_xml import XmlManifest
|
||||
def _doc(name):
|
||||
r = os.path.dirname(__file__)
|
||||
r = os.path.dirname(r)
|
||||
fd = open(os.path.join(r, 'docs', 'manifest_xml.txt'))
|
||||
fd = open(os.path.join(r, 'docs', name))
|
||||
try:
|
||||
return fd.read()
|
||||
finally:
|
||||
@@ -48,6 +48,8 @@ in a Git repository for use during future 'repo init' invocations.
|
||||
help = ''
|
||||
if isinstance(self.manifest, XmlManifest):
|
||||
help += self._xmlHelp + '\n' + _doc('manifest_xml.txt')
|
||||
if isinstance(self.manifest, SubmoduleManifest):
|
||||
help += _doc('manifest_submodule.txt')
|
||||
return help
|
||||
|
||||
def _Options(self, p):
|
||||
|
Reference in New Issue
Block a user