Merge branch 'bc/git-p4-for-python-2.4'
With small updates to remove dependency on newer features of Python, keep git-p4 usable with older Python. * bc/git-p4-for-python-2.4: INSTALL: git-p4 does not support Python 3 git-p4.py: support Python 2.4 git-p4.py: support Python 2.5
This commit is contained in:
commit
97fbc23ad7
5
INSTALL
5
INSTALL
@ -131,8 +131,9 @@ Issues of note:
|
||||
use English. Under autoconf the configure script will do this
|
||||
automatically if it can't find libintl on the system.
|
||||
|
||||
- Python version 2.6 or later is needed to use the git-p4
|
||||
interface to Perforce.
|
||||
- Python version 2.4 or later (but not 3.x, which is not
|
||||
supported by Perforce) is needed to use the git-p4 interface
|
||||
to Perforce.
|
||||
|
||||
- Some platform specific issues are dealt with Makefile rules,
|
||||
but depending on your specific installation, you may not
|
||||
|
30
git-p4.py
30
git-p4.py
@ -18,6 +18,21 @@ import optparse, os, marshal, subprocess, shelve
|
||||
import tempfile, getopt, os.path, time, platform
|
||||
import re, shutil
|
||||
|
||||
try:
|
||||
from subprocess import CalledProcessError
|
||||
except ImportError:
|
||||
# from python2.7:subprocess.py
|
||||
# Exception classes used by this module.
|
||||
class CalledProcessError(Exception):
|
||||
"""This exception is raised when a process run by check_call() returns
|
||||
a non-zero exit status. The exit status will be stored in the
|
||||
returncode attribute."""
|
||||
def __init__(self, returncode, cmd):
|
||||
self.returncode = returncode
|
||||
self.cmd = cmd
|
||||
def __str__(self):
|
||||
return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
|
||||
|
||||
verbose = False
|
||||
|
||||
# Only labels/tags matching this will be imported/exported
|
||||
@ -158,13 +173,17 @@ def system(cmd):
|
||||
expand = isinstance(cmd,basestring)
|
||||
if verbose:
|
||||
sys.stderr.write("executing %s\n" % str(cmd))
|
||||
subprocess.check_call(cmd, shell=expand)
|
||||
retcode = subprocess.call(cmd, shell=expand)
|
||||
if retcode:
|
||||
raise CalledProcessError(retcode, cmd)
|
||||
|
||||
def p4_system(cmd):
|
||||
"""Specifically invoke p4 as the system command. """
|
||||
real_cmd = p4_build_cmd(cmd)
|
||||
expand = isinstance(real_cmd, basestring)
|
||||
subprocess.check_call(real_cmd, shell=expand)
|
||||
retcode = subprocess.call(real_cmd, shell=expand)
|
||||
if retcode:
|
||||
raise CalledProcessError(retcode, real_cmd)
|
||||
|
||||
def p4_integrate(src, dest):
|
||||
p4_system(["integrate", "-Dt", wildcard_encode(src), wildcard_encode(dest)])
|
||||
@ -768,7 +787,8 @@ def wildcard_encode(path):
|
||||
return path
|
||||
|
||||
def wildcard_present(path):
|
||||
return path.translate(None, "*#@%") != path
|
||||
m = re.search("[*#@%]", path)
|
||||
return m is not None
|
||||
|
||||
class Command:
|
||||
def __init__(self):
|
||||
@ -3173,7 +3193,9 @@ class P4Clone(P4Sync):
|
||||
init_cmd = [ "git", "init" ]
|
||||
if self.cloneBare:
|
||||
init_cmd.append("--bare")
|
||||
subprocess.check_call(init_cmd)
|
||||
retcode = subprocess.call(init_cmd)
|
||||
if retcode:
|
||||
raise CalledProcessError(retcode, init_cmd)
|
||||
|
||||
if not P4Sync.run(self, depotPaths):
|
||||
return False
|
||||
|
@ -105,12 +105,13 @@ build_gendouble() {
|
||||
cat >gendouble.py <<-\EOF
|
||||
import sys
|
||||
import struct
|
||||
import array
|
||||
|
||||
s = array.array("c", '\0' * 26)
|
||||
struct.pack_into(">L", s, 0, 0x00051607) # AppleDouble
|
||||
struct.pack_into(">L", s, 4, 0x00020000) # version 2
|
||||
s.tofile(sys.stdout)
|
||||
s = struct.pack(">LL18s",
|
||||
0x00051607, # AppleDouble
|
||||
0x00020000, # version 2
|
||||
"" # pad to 26 bytes
|
||||
)
|
||||
sys.stdout.write(s)
|
||||
EOF
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user