]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-p4: honor lfs.storage configuration variable
authorr.burenkov <panzercheg@gmail.com>
Wed, 11 Dec 2019 17:47:23 +0000 (09:47 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 11 Dec 2019 17:59:17 +0000 (09:59 -0800)
"git lfs" allows users to specify the custom storage location with
the configuration variable `lfs.storage`, but when interacting with
GitLFS pointers, "git p4" always uses the hardcoded default that is
the `.git/lfs/` directory, without paying attention to the
configuration.

Use the value configured in `lfs.storage`, if exists, as all the
"git" operations do, for consistency.

Signed-off-by: r.burenkov <panzercheg@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4.py

index 60c73b6a374ccce59ef922c26704f8e5e244b7ef..0b3a07cb31c4802b22dbdf8f49698973437d2dc2 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -1257,9 +1257,15 @@ class GitLFS(LargeFileSystem):
             pointerFile = re.sub(r'Git LFS pointer for.*\n\n', '', pointerFile)
 
         oid = re.search(r'^oid \w+:(\w+)', pointerFile, re.MULTILINE).group(1)
+        # if someone use external lfs.storage ( not in local repo git )
+        lfs_path = gitConfig('lfs.storage')
+        if not lfs_path:
+            lfs_path = 'lfs'
+        if not os.path.isabs(lfs_path):
+            lfs_path = os.path.join(os.getcwd(), '.git', lfs_path)
         localLargeFile = os.path.join(
-            os.getcwd(),
-            '.git', 'lfs', 'objects', oid[:2], oid[2:4],
+            lfs_path,
+            'objects', oid[:2], oid[2:4],
             oid,
         )
         # LFS Spec states that pointer files should not have the executable bit set.