transport-helper: update ref status after push with export
Also add check_output from python 2.7. Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
1f25c50419
commit
6c8151a32e
@ -1,7 +1,7 @@
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from git_remote_helpers.util import check_call
|
||||
from git_remote_helpers.util import check_call, check_output
|
||||
|
||||
|
||||
class GitImporter(object):
|
||||
@ -16,6 +16,18 @@ class GitImporter(object):
|
||||
|
||||
self.repo = repo
|
||||
|
||||
def get_refs(self, gitdir):
|
||||
"""Returns a dictionary with refs.
|
||||
"""
|
||||
args = ["git", "--git-dir=" + gitdir, "for-each-ref", "refs/heads"]
|
||||
lines = check_output(args).strip().split('\n')
|
||||
refs = {}
|
||||
for line in lines:
|
||||
value, name = line.split(' ')
|
||||
name = name.strip('commit\t')
|
||||
refs[name] = value
|
||||
return refs
|
||||
|
||||
def do_import(self, base):
|
||||
"""Imports a fast-import stream to the given directory.
|
||||
|
||||
@ -32,9 +44,23 @@ class GitImporter(object):
|
||||
if not os.path.exists(dirname):
|
||||
os.makedirs(dirname)
|
||||
|
||||
refs_before = self.get_refs(gitdir)
|
||||
|
||||
args = ["git", "--git-dir=" + gitdir, "fast-import", "--quiet", "--export-marks=" + path]
|
||||
|
||||
if os.path.exists(path):
|
||||
args.append("--import-marks=" + path)
|
||||
|
||||
check_call(args)
|
||||
|
||||
refs_after = self.get_refs(gitdir)
|
||||
|
||||
changed = {}
|
||||
|
||||
for name, value in refs_after.iteritems():
|
||||
if refs_before.get(name) == value:
|
||||
continue
|
||||
|
||||
changed[name] = value
|
||||
|
||||
return changed
|
||||
|
Reference in New Issue
Block a user