mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
Use reference also for manifest git
When running 'repo init --reference=<mirror>', the mirror will be used for all projects except the manifest project. This is because the _InitGitDir function uses the 'repo.reference' git config value specified in the manifest git, which has no effect when creating the manifest git as that value will be set after the git has been successfully cloned. Information about where the manifest git is located on the server is only known when performing the 'repo init', so that information has to be provided when cloning the git in order for it to set up a proper mapping. Change-Id: I47a2c8b3267a4065965058718ce1def4ecb34d5a Signed-off-by: Chirayu Desai <cdesai@cyanogenmod.org>
This commit is contained in:
parent
793f90cdc0
commit
2b30e3aaba
@ -1854,16 +1854,17 @@ class Project(object):
|
|||||||
if GitCommand(self, cmd).Wait() != 0:
|
if GitCommand(self, cmd).Wait() != 0:
|
||||||
raise GitError('%s merge %s ' % (self.name, head))
|
raise GitError('%s merge %s ' % (self.name, head))
|
||||||
|
|
||||||
def _InitGitDir(self):
|
def _InitGitDir(self, mirror_git=None):
|
||||||
if not os.path.exists(self.gitdir):
|
if not os.path.exists(self.gitdir):
|
||||||
os.makedirs(self.gitdir)
|
os.makedirs(self.gitdir)
|
||||||
self.bare_git.init()
|
self.bare_git.init()
|
||||||
|
|
||||||
mp = self.manifest.manifestProject
|
mp = self.manifest.manifestProject
|
||||||
ref_dir = mp.config.GetString('repo.reference')
|
ref_dir = mp.config.GetString('repo.reference') or ''
|
||||||
|
|
||||||
if ref_dir:
|
if ref_dir or mirror_git:
|
||||||
mirror_git = os.path.join(ref_dir, self.name + '.git')
|
if not mirror_git:
|
||||||
|
mirror_git = os.path.join(ref_dir, self.name + '.git')
|
||||||
repo_git = os.path.join(ref_dir, '.repo', 'projects',
|
repo_git = os.path.join(ref_dir, '.repo', 'projects',
|
||||||
self.relpath + '.git')
|
self.relpath + '.git')
|
||||||
|
|
||||||
|
@ -19,6 +19,15 @@ import platform
|
|||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
|
try:
|
||||||
|
# For python3
|
||||||
|
import urllib.parse
|
||||||
|
except ImportError:
|
||||||
|
# For python2
|
||||||
|
import imp
|
||||||
|
import urlparse
|
||||||
|
urllib = imp.new_module('urllib')
|
||||||
|
urllib.parse = urlparse.urlparse
|
||||||
|
|
||||||
from color import Coloring
|
from color import Coloring
|
||||||
from command import InteractiveCommand, MirrorSafeCommand
|
from command import InteractiveCommand, MirrorSafeCommand
|
||||||
@ -135,7 +144,19 @@ to update the working directory files.
|
|||||||
if not opt.quiet:
|
if not opt.quiet:
|
||||||
print('Get %s' % GitConfig.ForUser().UrlInsteadOf(opt.manifest_url),
|
print('Get %s' % GitConfig.ForUser().UrlInsteadOf(opt.manifest_url),
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
m._InitGitDir()
|
|
||||||
|
# The manifest project object doesn't keep track of the path on the
|
||||||
|
# server where this git is located, so let's save that here.
|
||||||
|
mirrored_manifest_git = None
|
||||||
|
if opt.reference:
|
||||||
|
manifest_git_path = urllib.parse(opt.manifest_url).path[1:]
|
||||||
|
mirrored_manifest_git = os.path.join(opt.reference, manifest_git_path)
|
||||||
|
if not mirrored_manifest_git.endswith(".git"):
|
||||||
|
mirrored_manifest_git += ".git"
|
||||||
|
if not os.path.exists(mirrored_manifest_git):
|
||||||
|
mirrored_manifest_git = os.path.join(opt.reference + '/.repo/manifests.git')
|
||||||
|
|
||||||
|
m._InitGitDir(mirror_git=mirrored_manifest_git)
|
||||||
|
|
||||||
if opt.manifest_branch:
|
if opt.manifest_branch:
|
||||||
m.revisionExpr = opt.manifest_branch
|
m.revisionExpr = opt.manifest_branch
|
||||||
|
Loading…
Reference in New Issue
Block a user