threads / patch / 54272

patchgit-p4: ignore binary file diffs in git-p4 commit

Subject: [PATCH] git-p4: ignore binary file diffs in git-p4 commit

## tl;dr

One message between Sep 22, 2020 and Sep 22, 2020. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

Berislav Lopac via GitGitGadget· Sep 22, 2020, 08:31 UTC · lore
From: Berislav Lopac <berislav@lopac.net>
Currently, when submitting commits, `git p4 submit` helpfully builds a
diff of changes, and then displays them in a text editor before
continuing (mimicking standard git commit behaviour). For changed files
it asks p4 for the diff, but if a file is added it dumps all of its
lines; to do so it opens a file, but as a text -- which obviously fails
if a file is binary, raising `UnicodeDecodeError`.
Signed-off-by: Berislav Lopac <berislav@lopac.net>
---
    ignore binary file diffs in git-p4 commit
    
    Currently, when submitting commits, git p4 submit helpfully builds a
    diff of changes, and then displays them in a text editor before
    continuing (mimicking standard git commit behaviour). For changed files
    it asks git for the diff, but if a file is added it dumps all of its
    lines; to do so it opens a file, but as a text -- which obviously fails
    if a file is binary, raising UnicodeDecodeError.
    
    This simple patch catches that exception and stops building the diff, so
    only the name of the added file is included.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-833%2Fberislavlopac%2Fignore-binary-file-diffs-in-git-p4-commit-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-833/berislavlopac/ignore-binary-file-diffs-in-git-p4-commit-v1
Pull-Request: https://github.com/git/git/pull/833
 git-p4.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
Show changes to git-p4.py +7 −3
diff --git a/git-p4.py b/git-p4.py
index 9a71a6690d..3d72a0dbdb 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -1847,9 +1847,13 @@ def get_diff_description(self, editedFiles, filesToAdd, symlinks):
                 newdiff += "+%s\n" % os.readlink(newFile)
             else:
                 f = open(newFile, "r")
-                for line in f.readlines():
-                    newdiff += "+" + line
-                f.close()
+                try:
+                    for line in f.readlines():
+                        newdiff += "+" + line
+                except UnicodeDecodeError:
+                    pass
+                finally:
+                    f.close()
 
         return (diff + newdiff).replace('\r\n', '\n')
 

base-commit: af6b65d45ef179ed52087e80cb089f6b2349f4ec
-- 
gitgitgadget

← back to recent threads