@matheusbsbs / matheus-bagliano / commits / dbe48256b4
Fork 0

git.el: Set process-environment instead of invoking env

According to the similar patch from David Kågedal [1], "this will make it a little less posix-dependent and more efficient." However, there are two other areas that need to replaced, namely git-run-command-region and git-run-hooks. This patch implements the changes of [1] onto those Emacs Lisp functions. If unpatched, using the git port "msysgit" on Windows will require defadvice changes as shown at [2] (also explained at 4msysgit.git [3]). I have tested git-run-command-region on msysgit, because this is always called by git-commit (via git-commit-tree <- git-do-commit <- git-commit-file). However, I could not test git-run-hooks because it currently does not work on the Emacs Windows port. The latter reports the hooks files as a+rw and a-x, despite msysgit and cygwin chmod setting on the respective files. References: [1] f27e55864317611385be4d33b3c53ca787379df9 [2] http://groups.google.com/group/msysgit/browse_thread/thread/b852fef689817707 [3] http://repo.or.cz/w/git/mingw/4msysgit.git?a=commit;h=3c30e5e87358eba7b6d7dcd6301ae8438f0c30ea Signed-off-by: Clifford Caoile <piyo@users.sourceforge.net> Acked-by: David Kågedal <davidk@lysator.liu.se> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Clifford Caoile committed Apr 18, 2008 at 22:07 UTC dbe48256b41c1e94d81f2458d7e84b1fdcb47026
1 file changed +4 -7
contrib/emacs/git.el
+4 -7
@@ -232,10 +232,8 @@ and returns the process output as a string, or nil if the git failed."
232
233 (defun git-run-command-region (buffer start end env &rest args)
234 "Run a git command with specified buffer region as input."
235 - (unless (eq 0 (if env
236 - (git-run-process-region
237 - buffer start end "env"
238 - (append (git-get-env-strings env) (list "git") args))
235 + (unless (eq 0 (let ((process-environment (append (git-get-env-strings env)
236 + process-environment)))
237 (git-run-process-region
238 buffer start end "git" args)))
239 (error "Failed to run \"git %s\":\n%s" (mapconcat (lambda (x) x) args " ") (buffer-string))))
@@ -250,9 +248,8 @@ and returns the process output as a string, or nil if the git failed."
248 (erase-buffer)
249 (cd dir)
250 (setq status
253 - (if env
254 - (apply #'call-process "env" nil (list buffer t) nil
255 - (append (git-get-env-strings env) (list hook-name) args))
251 + (let ((process-environment (append (git-get-env-strings env)
252 + process-environment)))
253 (apply #'call-process hook-name nil (list buffer t) nil args))))
254 (display-message-or-buffer buffer)
255 (eq 0 status)))))