Browse Source

Remove python 2.5'isms

The following python 2.5 features were worked around:

    * the sha module is used as a fallback when the hashlib module is
      not available
    * the 'any' built-in method was replaced with a 'for' loop
    * a conditional expression was replaced with an 'if' statement
    * the subprocess.check_call method was replaced by a call to
      subprocess.Popen followed by a call to subprocess.wait with a
      check of its return status

These changes allow the python infrastructure to be used with python 2.4
which is distributed with RedHat's RHEL 5, for example.

t5800 was updated to check for python >= 2.4 to reflect these changes.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Brandon Casey 15 years ago committed by Junio C Hamano
parent
commit
23b093ee08
  1. 15
      git-remote-testgit.py
  2. 4
      git_remote_helpers/git/exporter.py
  3. 4
      git_remote_helpers/git/importer.py
  4. 16
      git_remote_helpers/git/non_local.py
  5. 9
      git_remote_helpers/git/repo.py
  6. 4
      t/t5800-remote-helpers.sh

15
git-remote-testgit.py

@ -1,6 +1,12 @@
#!/usr/bin/env python #!/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 sys
import os import os
sys.path.insert(0, os.getenv("GITPYTHONLIB",".")) sys.path.insert(0, os.getenv("GITPYTHONLIB","."))
@ -19,7 +25,7 @@ def get_repo(alias, url):
repo.get_revs() repo.get_revs()
repo.get_head() repo.get_head()


hasher = hashlib.sha1() hasher = _digest()
hasher.update(repo.path) hasher.update(repo.path)
repo.hash = hasher.hexdigest() repo.hash = hasher.hexdigest()


@ -133,7 +139,10 @@ def do_export(repo, args):


path = os.path.join(dirname, 'testgit.marks') path = os.path.join(dirname, 'testgit.marks')
print path print path
print path if os.path.exists(path) else "" if os.path.exists(path):
print path
else:
print ""
sys.stdout.flush() sys.stdout.flush()


update_local_repo(repo) update_local_repo(repo)

4
git_remote_helpers/git/exporter.py

@ -48,4 +48,6 @@ class GitExporter(object):


args = ["sed", "s_refs/heads/_" + self.repo.prefix + "_g"] 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

4
git_remote_helpers/git/importer.py

@ -35,4 +35,6 @@ class GitImporter(object):
if os.path.exists(path): if os.path.exists(path):
args.append("--import-marks=" + path) args.append("--import-marks=" + path)


subprocess.check_call(args) child = subprocess.Popen(args)
if child.wait() != 0:
raise CalledProcessError

16
git_remote_helpers/git/non_local.py

@ -29,7 +29,9 @@ class NonLocalGit(object):
os.makedirs(path) os.makedirs(path)
args = ["git", "clone", "--bare", "--quiet", self.repo.gitpath, 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 return path


@ -43,10 +45,14 @@ class NonLocalGit(object):
die("could not find repo at %s", path) die("could not find repo at %s", path)


args = ["git", "--git-dir=" + path, "fetch", "--quiet", self.repo.gitpath] 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"] 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): def push(self, base):
"""Pushes from the non-local repo to base. """Pushes from the non-local repo to base.
@ -58,4 +64,6 @@ class NonLocalGit(object):
die("could not find repo at %s", path) die("could not find repo at %s", path)


args = ["git", "--git-dir=" + path, "push", "--quiet", self.repo.gitpath] args = ["git", "--git-dir=" + path, "push", "--quiet", self.repo.gitpath]
subprocess.check_call(args) child = subprocess.Popen(args)
if child.wait() != 0:
raise CalledProcessError

9
git_remote_helpers/git/repo.py

@ -19,7 +19,10 @@ def is_remote(url):


prefixes = ["http", "file", "git"] 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): class GitRepo(object):
"""Repo object representing a repo. """Repo object representing a repo.
@ -50,7 +53,9 @@ class GitRepo(object):
path = ".cached_revs" path = ".cached_revs"
ofile = open(path, "w") 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() output = open(path).readlines()
self.revmap = dict(sanitize(i) for i in output) self.revmap = dict(sanitize(i) for i in output)
if "HEAD" in self.revmap: if "HEAD" in self.revmap:

4
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 ' if test_have_prereq PYTHON && "$PYTHON_PATH" -c '
import sys import sys
if sys.hexversion < 0x02050000: if sys.hexversion < 0x02040000:
sys.exit(1) sys.exit(1)
' '
then then
: :
else 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 test_done
fi fi



Loading…
Cancel
Save