diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-01 15:00:14 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-01 15:00:14 -0700 |
commit | 59d9ba869e900bf4da9822f417e4d40a710d8063 (patch) | |
tree | 07f1a07ddcff4c61e52cb959e6e7c0eec7abeb53 /git-remote-testgit.py | |
parent | Merge branch 'jc/maint-reset-unmerged-path' (diff) | |
parent | transport-helper: die early on encountering deleted refs (diff) | |
download | tgif-59d9ba869e900bf4da9822f417e4d40a710d8063.tar.xz |
Merge branch 'sr/transport-helper-fix'
* sr/transport-helper-fix: (21 commits)
transport-helper: die early on encountering deleted refs
transport-helper: implement marks location as capability
transport-helper: Use capname for refspec capability too
transport-helper: change import semantics
transport-helper: update ref status after push with export
transport-helper: use the new done feature where possible
transport-helper: check status code of finish_command
transport-helper: factor out push_update_refs_status
fast-export: support done feature
fast-import: introduce 'done' command
git-remote-testgit: fix error handling
git-remote-testgit: only push for non-local repositories
remote-curl: accept empty line as terminator
remote-helpers: export GIT_DIR variable to helpers
git_remote_helpers: push all refs during a non-local export
transport-helper: don't feed bogus refs to export push
git-remote-testgit: import non-HEAD refs
t5800: document some non-functional parts of remote helpers
t5800: use skip_all instead of prereq
t5800: factor out some ref tests
...
Diffstat (limited to 'git-remote-testgit.py')
-rw-r--r-- | git-remote-testgit.py | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/git-remote-testgit.py b/git-remote-testgit.py index df9d512f1a..e9c832bfd3 100644 --- a/git-remote-testgit.py +++ b/git-remote-testgit.py @@ -35,7 +35,7 @@ def get_repo(alias, url): prefix = 'refs/testgit/%s/' % alias debug("prefix: '%s'", prefix) - repo.gitdir = "" + repo.gitdir = os.environ["GIT_DIR"] repo.alias = alias repo.prefix = prefix @@ -70,9 +70,19 @@ def do_capabilities(repo, args): print "import" print "export" - print "gitdir" print "refspec refs/heads/*:%s*" % repo.prefix + dirname = repo.get_base_path(repo.gitdir) + + if not os.path.exists(dirname): + os.makedirs(dirname) + + path = os.path.join(dirname, 'testgit.marks') + + print "*export-marks %s" % path + if os.path.exists(path): + print "*import-marks %s" % path + print # end capabilities @@ -121,8 +131,24 @@ def do_import(repo, args): if not repo.gitdir: die("Need gitdir to import") + ref = args[0] + refs = [ref] + + while True: + line = sys.stdin.readline() + if line == '\n': + break + if not line.startswith('import '): + die("Expected import line.") + + # strip of leading 'import ' + ref = line[7:].strip() + refs.append(ref) + repo = update_local_repo(repo) - repo.exporter.export_repo(repo.gitdir) + repo.exporter.export_repo(repo.gitdir, refs) + + print "done" def do_export(repo, args): @@ -132,32 +158,15 @@ def do_export(repo, args): if not repo.gitdir: die("Need gitdir to export") - dirname = repo.get_base_path(repo.gitdir) - - if not os.path.exists(dirname): - os.makedirs(dirname) - - path = os.path.join(dirname, 'testgit.marks') - print path - if os.path.exists(path): - print path - else: - print "" - sys.stdout.flush() - update_local_repo(repo) - repo.importer.do_import(repo.gitdir) - repo.non_local.push(repo.gitdir) - - -def do_gitdir(repo, args): - """Stores the location of the gitdir. - """ + changed = repo.importer.do_import(repo.gitdir) - if not args: - die("gitdir needs an argument") + if not repo.local: + repo.non_local.push(repo.gitdir) - repo.gitdir = ' '.join(args) + for ref in changed: + print "ok %s" % ref + print COMMANDS = { @@ -165,7 +174,6 @@ COMMANDS = { 'list': do_list, 'import': do_import, 'export': do_export, - 'gitdir': do_gitdir, } |