diff --git a/git-remote-testgit.py b/git-remote-testgit.py index 92539222c..df9d512f1 100644 --- a/git-remote-testgit.py +++ b/git-remote-testgit.py @@ -1,6 +1,12 @@ #!/usr/bin/env python -import hashlib +# hashlib is only available in python >= 2.5 +try: + import hashlib + _digest = hashlib.sha1 +except ImportError: + import sha + _digest = sha.new import sys import os sys.path.insert(0, os.getenv("GITPYTHONLIB",".")) @@ -19,7 +25,7 @@ def get_repo(alias, url): repo.get_revs() repo.get_head() - hasher = hashlib.sha1() + hasher = _digest() hasher.update(repo.path) repo.hash = hasher.hexdigest() @@ -133,7 +139,10 @@ def do_export(repo, args): path = os.path.join(dirname, 'testgit.marks') print path - print path if os.path.exists(path) else "" + if os.path.exists(path): + print path + else: + print "" sys.stdout.flush() update_local_repo(repo) diff --git a/git_remote_helpers/git/exporter.py b/git_remote_helpers/git/exporter.py index dfaab00b5..f40f9d6a2 100644 --- a/git_remote_helpers/git/exporter.py +++ b/git_remote_helpers/git/exporter.py @@ -48,4 +48,6 @@ def export_repo(self, base): args = ["sed", "s_refs/heads/_" + self.repo.prefix + "_g"] - subprocess.check_call(args, stdin=p1.stdout) + child = subprocess.Popen(args, stdin=p1.stdout) + if child.wait() != 0: + raise CalledProcessError diff --git a/git_remote_helpers/git/importer.py b/git_remote_helpers/git/importer.py index af2919d92..70a712729 100644 --- a/git_remote_helpers/git/importer.py +++ b/git_remote_helpers/git/importer.py @@ -35,4 +35,6 @@ def do_import(self, base): if os.path.exists(path): args.append("--import-marks=" + path) - subprocess.check_call(args) + child = subprocess.Popen(args) + if child.wait() != 0: + raise CalledProcessError diff --git a/git_remote_helpers/git/non_local.py b/git_remote_helpers/git/non_local.py index d75ef8f21..f27389bb9 100644 --- a/git_remote_helpers/git/non_local.py +++ b/git_remote_helpers/git/non_local.py @@ -29,7 +29,9 @@ def clone(self, base): os.makedirs(path) args = ["git", "clone", "--bare", "--quiet", self.repo.gitpath, path] - subprocess.check_call(args) + child = subprocess.Popen(args) + if child.wait() != 0: + raise CalledProcessError return path @@ -43,10 +45,14 @@ def update(self, base): die("could not find repo at %s", path) args = ["git", "--git-dir=" + path, "fetch", "--quiet", self.repo.gitpath] - subprocess.check_call(args) + child = subprocess.Popen(args) + if child.wait() != 0: + raise CalledProcessError args = ["git", "--git-dir=" + path, "update-ref", "refs/heads/master", "FETCH_HEAD"] - subprocess.check_call(args) + child = subprocess.Popen(args) + if child.wait() != 0: + raise CalledProcessError def push(self, base): """Pushes from the non-local repo to base. @@ -58,4 +64,6 @@ def push(self, base): die("could not find repo at %s", path) args = ["git", "--git-dir=" + path, "push", "--quiet", self.repo.gitpath] - subprocess.check_call(args) + child = subprocess.Popen(args) + if child.wait() != 0: + raise CalledProcessError diff --git a/git_remote_helpers/git/repo.py b/git_remote_helpers/git/repo.py index 82d5f78c7..58e1cdb56 100644 --- a/git_remote_helpers/git/repo.py +++ b/git_remote_helpers/git/repo.py @@ -19,7 +19,10 @@ def is_remote(url): prefixes = ["http", "file", "git"] - return any(url.startswith(i) for i in prefixes) + for prefix in prefixes: + if url.startswith(prefix): + return True + return False class GitRepo(object): """Repo object representing a repo. @@ -50,7 +53,9 @@ def get_revs(self): path = ".cached_revs" ofile = open(path, "w") - subprocess.check_call(args, stdout=ofile) + child = subprocess.Popen(args, stdout=ofile) + if child.wait() != 0: + raise CalledProcessError output = open(path).readlines() self.revmap = dict(sanitize(i) for i in output) if "HEAD" in self.revmap: diff --git a/t/t5800-remote-helpers.sh b/t/t5800-remote-helpers.sh index 22c7df47f..4ee7b65ce 100755 --- a/t/t5800-remote-helpers.sh +++ b/t/t5800-remote-helpers.sh @@ -9,13 +9,13 @@ test_description='Test remote-helper import and export commands' if test_have_prereq PYTHON && "$PYTHON_PATH" -c ' import sys -if sys.hexversion < 0x02050000: +if sys.hexversion < 0x02040000: sys.exit(1) ' then : else - say 'skipping git remote-testgit tests: requires Python 2.5 or newer' + say 'skipping git remote-testgit tests: requires Python 2.4 or newer' test_done fi