git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
BGBerislav Lopac via GitGitGadget <gitgitgadget@gmail.com>
Date
Sep 22, 2020, 08:31 UTC
Message-ID
<pull.833.git.git.1600763496510.gitgitgadget@gmail.com>
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(-)
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
Message 1 of 1 in “git-p4: ignore binary file diffs in git-p4 commit”
  1. git-p4: ignore binary file diffs in git-p4 commitBerislav Lopac via GitGitGadget, Sep 22, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.