Browse Source

Merge branch 'bc/git-p4-for-python-2.4' into maint

* 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
maint
Junio C Hamano 12 years ago
parent
commit
390ac27a18
  1. 5
      INSTALL
  2. 30
      git-p4.py
  3. 11
      t/t9802-git-p4-filetype.sh

5
INSTALL

@ -131,8 +131,9 @@ Issues of note: @@ -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

@ -12,6 +12,21 @@ import optparse, sys, os, marshal, subprocess, shelve @@ -12,6 +12,21 @@ import optparse, sys, 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
@ -152,13 +167,17 @@ def system(cmd): @@ -152,13 +167,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)])
@ -742,7 +761,8 @@ def wildcard_encode(path): @@ -742,7 +761,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):
@ -3103,7 +3123,9 @@ class P4Clone(P4Sync): @@ -3103,7 +3123,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

11
t/t9802-git-p4-filetype.sh

@ -105,12 +105,13 @@ build_gendouble() { @@ -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…
Cancel
Save