Re: encoding bug in git.el
From: Karl Hasselström <hidden>
Date: 2016-06-15 22:44:38
Possibly related (same subject, not in this thread)
- 2016-06-15 · encoding bug in git.el · Karl Hasselström <hidden>
On 2008-05-21 23:08:09 +0900, Clifford Caoile wrote:
quoted hunk ↗ jump to hunk
Here is a proposed fix. I suggest that process-environment should be given these envvars already encoded as shown in this code sample: ------------------ git.el ------------------ [not a proper git-diff]@@ -216,6 +216,11 @@ and `git-diff-setup-hook'." "Build a list of NAME=VALUE strings from a list of environment strings." (mapcar (lambda (entry) (concat (car entry) "=" (cdr entry))) env)) +(defun git-get-env-strings-encoded (env encoding) + "Build a list of NAME=VALUE strings from a list of environment strings, +converting from mule-encoding to ENCODING (e.g. mule-utf-8, latin-1, etc)." + (mapcar (lambda (entry) (concat (car entry) "="(encode-coding-string (cdr entry) encoding))) env)) + (defun git-call-process-env (buffer env &rest args) "Wrapper for call-process that sets environment strings." (let ((process-environment (append (git-get-env-strings env)@@ -265,7 +270,7 @@ and returns the process output as a string, or nilif the git failed." (defun git-run-command-region (buffer start end env &rest args) "Run a git command with specified buffer region as input." - (unless (eq 0 (let ((process-environment (append (git-get-env-strings env) + (unless (eq 0 (let ((process-environment (append (git-get-env-strings-encoded env coding-system-for-write) process-environment))) (git-run-process-region buffer start end "git" args))) The buffer text is saved with the encoding coding-system-for-write, while the GIT_* envvars were not encoded, so when appending to process-environment variable, use the same encoding.
I don't claim to understand any of the design issues around this, but
your patch certainly fixes my problem (once I managed to apply it,
which involved working around the lack of headers, non-matching
offsets, and whitespace damage -- luckily it was just two hunks). So:
Tested-by: Karl Hasselström <redacted>
Thanks for taking the time.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalle