diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2013-04-30 20:10:03 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-04-30 22:06:47 -0700 |
commit | c95c35f4b8908fcda713c09eba4e55aac2c39be6 (patch) | |
tree | 9013791b1ffd5f1dce6b3c85df8ba987d51fd4b9 | |
parent | remote-bzr: fix branch names (diff) | |
download | tgif-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-x | contrib/remote-helpers/git-remote-bzr | 22 |
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 |