From: Berislav Lopac <berislav@xxxxxxxxx> 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@xxxxxxxxx> --- 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