#!/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","."))
repo.get_revs()
repo.get_head()
- hasher = hashlib.sha1()
+ hasher = _digest()
hasher.update(repo.path)
repo.hash = hasher.hexdigest()
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)
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
if os.path.exists(path):
args.append("--import-marks=" + path)
- subprocess.check_call(args)
+ child = subprocess.Popen(args)
+ if child.wait() != 0:
+ raise CalledProcessError
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
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.
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
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.
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:
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