mirror of
https://github.com/git/git
synced 2024-10-28 19:25:47 +00:00
remote-bzr: add support for shared repo
This way all the remotes share the same data, so adding multiple remotes, or renaming them doesn't create extra overhead. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
42b48ef25d
commit
c95c35f4b8
1 changed files with 15 additions and 7 deletions
|
@ -752,7 +752,20 @@ def get_repo(url, alias):
|
|||
origin = bzrlib.bzrdir.BzrDir.open(url)
|
||||
is_local = isinstance(origin.transport, bzrlib.transport.local.LocalTransport)
|
||||
|
||||
clone_path = os.path.join(dirname, 'clone')
|
||||
shared_path = os.path.join(gitdir, 'bzr')
|
||||
try:
|
||||
shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path)
|
||||
except bzrlib.errors.NotBranchError:
|
||||
shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path)
|
||||
try:
|
||||
shared_repo = shared_dir.open_repository()
|
||||
except bzrlib.errors.NoRepositoryPresent:
|
||||
shared_repo = shared_dir.create_repository(shared=True)
|
||||
|
||||
if not is_local:
|
||||
clone_path = os.path.join(dirname, 'clone')
|
||||
if not os.path.exists(clone_path):
|
||||
os.mkdir(clone_path)
|
||||
|
||||
try:
|
||||
repo = origin.open_repository()
|
||||
|
@ -763,8 +776,6 @@ def get_repo(url, alias):
|
|||
branch = origin.open_branch()
|
||||
|
||||
if not is_local:
|
||||
if not os.path.exists(clone_path):
|
||||
os.mkdir(clone_path)
|
||||
peers[name] = branch
|
||||
branches[name] = get_remote_branch(origin, branch, name)
|
||||
else:
|
||||
|
@ -774,9 +785,6 @@ def get_repo(url, alias):
|
|||
else:
|
||||
# repository
|
||||
|
||||
if not is_local and not os.path.exists(clone_path):
|
||||
clonedir = bzrlib.bzrdir.BzrDir.create(clone_path)
|
||||
|
||||
for branch in repo.find_branches():
|
||||
|
||||
name = repo.user_transport.relpath(branch.base)
|
||||
|
@ -800,7 +808,7 @@ def fix_path(alias, orig_url):
|
|||
subprocess.call(cmd)
|
||||
|
||||
def main(args):
|
||||
global marks, prefix, dirname
|
||||
global marks, prefix, gitdir, dirname
|
||||
global tags, filenodes
|
||||
global blob_marks
|
||||
global parsed_refs
|
||||
|
|
Loading…
Reference in a new issue