summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Felipe Contreras <felipe.contreras@gmail.com>2013-04-30 20:10:03 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-04-30 22:06:47 -0700
commitc95c35f4b8908fcda713c09eba4e55aac2c39be6 (patch)
tree9013791b1ffd5f1dce6b3c85df8ba987d51fd4b9
parentremote-bzr: fix branch names (diff)
downloadtgif-c95c35f4b8908fcda713c09eba4e55aac2c39be6.tar.xz
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>
-rwxr-xr-xcontrib/remote-helpers/git-remote-bzr22
1 files changed, 15 insertions, 7 deletions
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index 38cec07ed8..9fe830e3cd 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -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