Skip to content

Commit

Permalink
Remove python 2.5'isms
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
drafnel authored and gitster committed Jun 14, 2010
1 parent ae45732 commit 23b093e
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 13 deletions.
15 changes: 12 additions & 3 deletions 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","."))
Expand All @@ -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()

Expand Down Expand Up @@ -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)
Expand Down
4 changes: 3 additions & 1 deletion git_remote_helpers/git/exporter.py
Expand Up @@ -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
4 changes: 3 additions & 1 deletion git_remote_helpers/git/importer.py
Expand Up @@ -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
16 changes: 12 additions & 4 deletions git_remote_helpers/git/non_local.py
Expand Up @@ -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

Expand All @@ -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.
Expand All @@ -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
9 changes: 7 additions & 2 deletions git_remote_helpers/git/repo.py
Expand Up @@ -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.
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions t/t5800-remote-helpers.sh
Expand Up @@ -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

Expand Down

0 comments on commit 23b093e

Please sign in to comment.