Skip to content

Commit

Permalink
git-remote-testgit: import non-HEAD refs
Browse files Browse the repository at this point in the history
Upon receiving an "import" command, the testgit remote
helper would ignore the ref asked for by git and generate a
fast-export stream based on HEAD. Instead, we should
actually give git the ref it asked for.

This requires adding a new parameter to the export_repo
method in the remote-helpers python library, which may be
used by code outside of git.git. We use a default parameter
so that callers without the new parameter will get the same
behavior as before.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jul 19, 2011
1 parent c00dd33 commit 4e51ba2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion git-remote-testgit.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ def do_import(repo, args):
die("Need gitdir to import")

repo = update_local_repo(repo)
repo.exporter.export_repo(repo.gitdir)
repo.exporter.export_repo(repo.gitdir, args)


def do_export(repo, args):
Expand Down
9 changes: 7 additions & 2 deletions git_remote_helpers/git/exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,21 @@ def __init__(self, repo):

self.repo = repo

def export_repo(self, base):
def export_repo(self, base, refs=None):
"""Exports a fast-export stream for the given directory.
Simply delegates to git fast-epxort and pipes it through sed
to make the refs show up under the prefix rather than the
default refs/heads. This is to demonstrate how the export
data can be stored under it's own ref (using the refspec
capability).
If None, refs defaults to ["HEAD"].
"""

if not refs:
refs = ["HEAD"]

dirname = self.repo.get_base_path(base)
path = os.path.abspath(os.path.join(dirname, 'testgit.marks'))

Expand All @@ -42,7 +47,7 @@ def export_repo(self, base):
if os.path.exists(path):
args.append("--import-marks=" + path)

args.append("HEAD")
args.extend(refs)

p1 = subprocess.Popen(args, stdout=subprocess.PIPE)

Expand Down
2 changes: 1 addition & 1 deletion t/t5800-remote-helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ test_expect_success 'pushing remote local repo' '
compare_refs clone HEAD server HEAD
'

test_expect_failure 'fetch new branch' '
test_expect_success 'fetch new branch' '
(cd public &&
git checkout -b new &&
echo content >>file &&
Expand Down

0 comments on commit 4e51ba2

Please sign in to comment.