mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Merge branch 'ls/p4-lfs' into HEAD
Recent update to Git LFS broke "git p4" by changing the output from its "lfs pointer" subcommand. * ls/p4-lfs: git-p4: fix Git LFS pointer parsing travis-ci: express Linux/OS X dependency versions more clearly travis-ci: update Git-LFS and P4 to the latest version
This commit is contained in:
commit
803fd70cee
17
.travis.yml
17
.travis.yml
|
@ -22,8 +22,11 @@ addons:
|
|||
env:
|
||||
global:
|
||||
- DEVELOPER=1
|
||||
- P4_VERSION="15.2"
|
||||
- GIT_LFS_VERSION="1.1.0"
|
||||
# The Linux build installs the defined dependency versions below.
|
||||
# The OS X build installs the latest available versions. Keep that
|
||||
# in mind when you encounter a broken OS X build!
|
||||
- LINUX_P4_VERSION="16.1"
|
||||
- LINUX_GIT_LFS_VERSION="1.2.0"
|
||||
- DEFAULT_TEST_TARGET=prove
|
||||
- GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
|
||||
- GIT_TEST_OPTS="--verbose --tee"
|
||||
|
@ -38,17 +41,17 @@ before_install:
|
|||
linux)
|
||||
mkdir --parents custom/p4
|
||||
pushd custom/p4
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4d
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4
|
||||
chmod u+x p4d
|
||||
chmod u+x p4
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
mkdir --parents custom/git-lfs
|
||||
pushd custom/git-lfs
|
||||
wget --quiet https://github.com/github/git-lfs/releases/download/v$GIT_LFS_VERSION/git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz
|
||||
tar --extract --gunzip --file "git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz"
|
||||
cp git-lfs-$GIT_LFS_VERSION/git-lfs .
|
||||
wget --quiet https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz
|
||||
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
||||
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
;;
|
||||
|
|
13
git-p4.py
13
git-p4.py
|
@ -1064,8 +1064,15 @@ def generatePointer(self, contentFile):
|
|||
if pointerProcess.wait():
|
||||
os.remove(contentFile)
|
||||
die('git-lfs pointer command failed. Did you install the extension?')
|
||||
pointerContents = [i+'\n' for i in pointerFile.split('\n')[2:][:-1]]
|
||||
oid = pointerContents[1].split(' ')[1].split(':')[1][:-1]
|
||||
|
||||
# Git LFS removed the preamble in the output of the 'pointer' command
|
||||
# starting from version 1.2.0. Check for the preamble here to support
|
||||
# earlier versions.
|
||||
# c.f. https://github.com/github/git-lfs/commit/da2935d9a739592bc775c98d8ef4df9c72ea3b43
|
||||
if pointerFile.startswith('Git LFS pointer for'):
|
||||
pointerFile = re.sub(r'Git LFS pointer for.*\n\n', '', pointerFile)
|
||||
|
||||
oid = re.search(r'^oid \w+:(\w+)', pointerFile, re.MULTILINE).group(1)
|
||||
localLargeFile = os.path.join(
|
||||
os.getcwd(),
|
||||
'.git', 'lfs', 'objects', oid[:2], oid[2:4],
|
||||
|
@ -1073,7 +1080,7 @@ def generatePointer(self, contentFile):
|
|||
)
|
||||
# LFS Spec states that pointer files should not have the executable bit set.
|
||||
gitMode = '100644'
|
||||
return (gitMode, pointerContents, localLargeFile)
|
||||
return (gitMode, pointerFile, localLargeFile)
|
||||
|
||||
def pushFile(self, localLargeFile):
|
||||
uploadProcess = subprocess.Popen(
|
||||
|
|
|
@ -13,6 +13,10 @@ test_file_in_lfs () {
|
|||
FILE="$1" &&
|
||||
SIZE="$2" &&
|
||||
EXPECTED_CONTENT="$3" &&
|
||||
sed -n '1,1 p' "$FILE" | grep "^version " &&
|
||||
sed -n '2,2 p' "$FILE" | grep "^oid " &&
|
||||
sed -n '3,3 p' "$FILE" | grep "^size " &&
|
||||
test_line_count = 3 "$FILE" &&
|
||||
cat "$FILE" | grep "size $SIZE" &&
|
||||
HASH=$(cat "$FILE" | grep "oid sha256:" | sed -e "s/oid sha256://g") &&
|
||||
LFS_FILE=".git/lfs/objects/$(echo "$HASH" | cut -c1-2)/$(echo "$HASH" | cut -c3-4)/$HASH" &&
|
||||
|
|
Loading…
Reference in a new issue