{"thread":{"id":"42165","subject":"[PATCH v4 1/3] travis-ci: update Git-LFS and P4 to the latest version","startedAt":"2016-04-28T06:26:30Z","lastAt":"2016-04-28T06:34:09Z","messageCount":5,"participants":["larsxschneider@gmail.com","Sebastian Schuberth"],"isPatch":true,"patchVersion":4,"patchTotal":3},"messages":[{"id":"284771","messageId":"1461824793-43235-1-git-send-email-larsxschneider@gmail.com","threadId":"42165","inReplyTo":null,"subject":"[PATCH v4 0/3] git-p4: fix Git LFS pointer parsing","fromName":"","fromEmail":"larsxschneider@gmail.com","sentAt":"2016-04-28T06:26:30Z","receivedAt":"2016-04-28T06:26:30Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"From: Lars Schneider <larsxschneider@gmail.com>\n\nv1: $gmane/291917\nv2: $gmane/291991\nv3: $gmane/292425\n\ndiff to v3:\n* fix missing assignment of pointerFile variable\n  ($gmane/292454, thanks Sebastian for making me aware)\n* fix s/brake/break/ in commit message\n  ($gmane/292451, thanks Eric)\n\nThanks,\nLars\n\nLars Schneider (3):\n  travis-ci: update Git-LFS and P4 to the latest version\n  travis-ci: express Linux/OS X dependency versions more clearly\n  git-p4: fix Git LFS pointer parsing\n\n .travis.yml               | 17 ++++++++++-------\n git-p4.py                 | 13 ++++++++++---\n t/t9824-git-p4-git-lfs.sh |  4 ++++\n 3 files changed, 24 insertions(+), 10 deletions(-)\n\n--\n2.5.1\n"},{"id":"284769","messageId":"1461824793-43235-2-git-send-email-larsxschneider@gmail.com","threadId":"42165","inReplyTo":"1461824793-43235-1-git-send-email-larsxschneider@gmail.com","subject":"[PATCH v4 1/3] travis-ci: update Git-LFS and P4 to the latest version","fromName":"","fromEmail":"larsxschneider@gmail.com","sentAt":"2016-04-28T06:26:31Z","receivedAt":"2016-04-28T06:26:31Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"From: Lars Schneider <larsxschneider@gmail.com>\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\n---\n .travis.yml | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/.travis.yml b/.travis.yml\nindex 78e433b..4acf617 100644\n--- a/.travis.yml\n+++ b/.travis.yml\n@@ -22,8 +22,8 @@ addons:\n env:\n   global:\n     - DEVELOPER=1\n-    - P4_VERSION=\"15.2\"\n-    - GIT_LFS_VERSION=\"1.1.0\"\n+    - P4_VERSION=\"16.1\"\n+    - GIT_LFS_VERSION=\"1.2.0\"\n     - DEFAULT_TEST_TARGET=prove\n     - GIT_PROVE_OPTS=\"--timer --jobs 3 --state=failed,slow,save\"\n     - GIT_TEST_OPTS=\"--verbose --tee\"\n-- \n2.5.1\n"},{"id":"284772","messageId":"1461824793-43235-3-git-send-email-larsxschneider@gmail.com","threadId":"42165","inReplyTo":"1461824793-43235-1-git-send-email-larsxschneider@gmail.com","subject":"[PATCH v4 2/3] travis-ci: express Linux/OS X dependency versions more clearly","fromName":"","fromEmail":"larsxschneider@gmail.com","sentAt":"2016-04-28T06:26:32Z","receivedAt":"2016-04-28T06:26:32Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"From: Lars Schneider <larsxschneider@gmail.com>\n\nThe Git Travis CI OSX build always installs the latest versions of Git LFS and\nPerforce via brew and the Linux build installs fixed versions. Consequently new\nLFS/Perforce versions can break the OS X build even if there is no change in\nGit.\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\n---\n .travis.yml | 17 ++++++++++-------\n 1 file changed, 10 insertions(+), 7 deletions(-)\n\ndiff --git a/.travis.yml b/.travis.yml\nindex 4acf617..1fdcec8 100644\n--- a/.travis.yml\n+++ b/.travis.yml\n@@ -22,8 +22,11 @@ addons:\n env:\n   global:\n     - DEVELOPER=1\n-    - P4_VERSION=\"16.1\"\n-    - GIT_LFS_VERSION=\"1.2.0\"\n+    # The Linux build installs the defined dependency versions below.\n+    # The OS X build installs the latest available versions. Keep that\n+    # in mind when you encounter a broken OS X build!\n+    - LINUX_P4_VERSION=\"16.1\"\n+    - LINUX_GIT_LFS_VERSION=\"1.2.0\"\n     - DEFAULT_TEST_TARGET=prove\n     - GIT_PROVE_OPTS=\"--timer --jobs 3 --state=failed,slow,save\"\n     - GIT_TEST_OPTS=\"--verbose --tee\"\n@@ -38,17 +41,17 @@ before_install:\n     linux)\n       mkdir --parents custom/p4\n       pushd custom/p4\n-        wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4d\n-        wget --quiet http://filehost.perforce.com/perforce/r$P4_VERSION/bin.linux26x86_64/p4\n+        wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d\n+        wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4\n         chmod u+x p4d\n         chmod u+x p4\n         export PATH=\"$(pwd):$PATH\"\n       popd\n       mkdir --parents custom/git-lfs\n       pushd custom/git-lfs\n-        wget --quiet https://github.com/github/git-lfs/releases/download/v$GIT_LFS_VERSION/git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz\n-        tar --extract --gunzip --file \"git-lfs-linux-amd64-$GIT_LFS_VERSION.tar.gz\"\n-        cp git-lfs-$GIT_LFS_VERSION/git-lfs .\n+        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\n+        tar --extract --gunzip --file \"git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz\"\n+        cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .\n         export PATH=\"$(pwd):$PATH\"\n       popd\n       ;;\n-- \n2.5.1\n"},{"id":"284770","messageId":"1461824793-43235-4-git-send-email-larsxschneider@gmail.com","threadId":"42165","inReplyTo":"1461824793-43235-1-git-send-email-larsxschneider@gmail.com","subject":"[PATCH v4 3/3] git-p4: fix Git LFS pointer parsing","fromName":"","fromEmail":"larsxschneider@gmail.com","sentAt":"2016-04-28T06:26:33Z","receivedAt":"2016-04-28T06:26:33Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"From: Lars Schneider <larsxschneider@gmail.com>\n\nGit LFS 1.2.0 removed a preamble from the output of the 'git lfs pointer'\ncommand [1] which broke the parsing of this output. Adjust the parser\nto support the old and the new format.\n\nPlease note that this patch slightly changes the second return parameter\nfrom a list of LF terminated strings to a single string that contains\na number of LF characters.\n\n[1] https://github.com/github/git-lfs/commit/da2935d9a739592bc775c98d8ef4df9c72ea3b43\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\nHelped-by: Sebastian Schuberth <sschuberth@gmail.com>\nHelped-by: Ben Woosley <ben.woosley@gmail.com>\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\n---\n git-p4.py                 | 13 ++++++++++---\n t/t9824-git-p4-git-lfs.sh |  4 ++++\n 2 files changed, 14 insertions(+), 3 deletions(-)\n\ndiff --git a/git-p4.py b/git-p4.py\nindex 527d44b..8ab48f2 100755\n--- a/git-p4.py\n+++ b/git-p4.py\n@@ -1064,8 +1064,15 @@ class GitLFS(LargeFileSystem):\n         if pointerProcess.wait():\n             os.remove(contentFile)\n             die('git-lfs pointer command failed. Did you install the extension?')\n-        pointerContents = [i+'\\n' for i in pointerFile.split('\\n')[2:][:-1]]\n-        oid = pointerContents[1].split(' ')[1].split(':')[1][:-1]\n+\n+        # Git LFS removed the preamble in the output of the 'pointer' command\n+        # starting from version 1.2.0. Check for the preamble here to support\n+        # earlier versions.\n+        # c.f. https://github.com/github/git-lfs/commit/da2935d9a739592bc775c98d8ef4df9c72ea3b43\n+        if pointerFile.startswith('Git LFS pointer for'):\n+            pointerFile = re.sub(r'Git LFS pointer for.*\\n\\n', '', pointerFile)\n+\n+        oid = re.search(r'^oid \\w+:(\\w+)', pointerFile, re.MULTILINE).group(1)\n         localLargeFile = os.path.join(\n             os.getcwd(),\n             '.git', 'lfs', 'objects', oid[:2], oid[2:4],\n@@ -1073,7 +1080,7 @@ class GitLFS(LargeFileSystem):\n         )\n         # LFS Spec states that pointer files should not have the executable bit set.\n         gitMode = '100644'\n-        return (gitMode, pointerContents, localLargeFile)\n+        return (gitMode, pointerFile, localLargeFile)\n \n     def pushFile(self, localLargeFile):\n         uploadProcess = subprocess.Popen(\ndiff --git a/t/t9824-git-p4-git-lfs.sh b/t/t9824-git-p4-git-lfs.sh\nindex 0b664a3..ca93ac8 100755\n--- a/t/t9824-git-p4-git-lfs.sh\n+++ b/t/t9824-git-p4-git-lfs.sh\n@@ -13,6 +13,10 @@ test_file_in_lfs () {\n \tFILE=\"$1\" &&\n \tSIZE=\"$2\" &&\n \tEXPECTED_CONTENT=\"$3\" &&\n+\tsed -n '1,1 p' \"$FILE\" | grep \"^version \" &&\n+\tsed -n '2,2 p' \"$FILE\" | grep \"^oid \" &&\n+\tsed -n '3,3 p' \"$FILE\" | grep \"^size \" &&\n+\ttest_line_count = 3 \"$FILE\" &&\n \tcat \"$FILE\" | grep \"size $SIZE\" &&\n \tHASH=$(cat \"$FILE\" | grep \"oid sha256:\" | sed -e \"s/oid sha256://g\") &&\n \tLFS_FILE=\".git/lfs/objects/$(echo \"$HASH\" | cut -c1-2)/$(echo \"$HASH\" | cut -c3-4)/$HASH\" &&\n-- \n2.5.1\n"},{"id":"284773","messageId":"CAHGBnuN93Pz_CDxajugnFbaPhrQNpH6b_8D5rahEO2DOREZJuw@mail.gmail.com","threadId":"42165","inReplyTo":"1461824793-43235-1-git-send-email-larsxschneider@gmail.com","subject":"Re: [PATCH v4 0/3] git-p4: fix Git LFS pointer parsing","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2016-04-28T06:34:09Z","receivedAt":"2016-04-28T06:34:09Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"On Thu, Apr 28, 2016 at 8:26 AM,  <larsxschneider@gmail.com> wrote:\n\n> diff to v3:\n> * fix missing assignment of pointerFile variable\n>   ($gmane/292454, thanks Sebastian for making me aware)\n> * fix s/brake/break/ in commit message\n>   ($gmane/292451, thanks Eric)\n\nThe series looks good to me now.\n\nRegards,\nSebastian\n"}]}