Skip to content

Commit

Permalink
remote-bzr: add support for shared repo
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Felipe Contreras authored and Junio C Hamano committed May 1, 2013
1 parent 42b48ef commit c95c35f
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions contrib/remote-helpers/git-remote-bzr
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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:
Expand All @@ -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)
Expand All @@ -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
Expand Down

0 comments on commit c95c35f

Please sign in to comment.