changeset 107811:2c6eaa7826c7

Add --author support to git commit. * vc-git.el (vc-git-checkin): Pass extra-args to the commit command. (vc-git-log-edit-mode): New minor mode. (log-edit-mode, log-edit-extra-flags, log-edit-mode): New declarations.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 09 Apr 2010 08:35:30 -0700
parents 03ef65bf2e25
children f1bfb44da2cb
files etc/NEWS lisp/ChangeLog lisp/vc-git.el
diffstat 3 files changed, 30 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS	Fri Apr 09 10:17:52 2010 -0400
+++ b/etc/NEWS	Fri Apr 09 08:35:30 2010 -0700
@@ -107,6 +107,10 @@
 Author: NAME
 line will add "--author NAME" to the "bzr commit" command.
 
+**** For Git, adding an
+Author: NAME
+line will add "--author NAME" to the "git commit" command.
+
 **** For Hg, adding an
 Author: NAME
 line will add "--user NAME" to the "hg commit" command.
--- a/lisp/ChangeLog	Fri Apr 09 10:17:52 2010 -0400
+++ b/lisp/ChangeLog	Fri Apr 09 08:35:30 2010 -0700
@@ -1,3 +1,11 @@
+2010-04-09  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	Add --author support to git commit.
+	* vc-git.el (vc-git-checkin): Pass extra-args to the commit command.
+	(vc-git-log-edit-mode): New minor mode.
+	(log-edit-mode, log-edit-extra-flags, log-edit-mode): New
+	declarations.
+
 2010-04-09  Eric Raymond  <esr@snark.thyrsus.com>
 
 	* vc-hooks.el, vc-git.el: Improve documentation comments.
--- a/lisp/vc-git.el	Fri Apr 09 10:17:52 2010 -0400
+++ b/lisp/vc-git.el	Fri Apr 09 08:35:30 2010 -0700
@@ -548,10 +548,10 @@
   (vc-git-command nil 0 file "rm" "-f" "--cached" "--"))
 
 
-(defun vc-git-checkin (files rev comment  &optional extra-args-ignored)
+(defun vc-git-checkin (files rev comment  &optional extra-args)
   (let ((coding-system-for-write git-commits-coding-system))
-    (vc-git-command nil 0 files "commit"
-		    "-m" comment "--only" "--")))
+    (apply 'vc-git-command nil 0 files
+	   (nconc (list "commit" "-m" comment) extra-args (list "--only" "--")))))
 
 (defun vc-git-find-revision (file rev buffer)
   (let* (process-file-side-effects
@@ -790,6 +790,21 @@
                    (progn (forward-line 1) (1- (point)))))))))
     (or (vc-git-symbolic-commit next-rev) next-rev)))
 
+(declare-function log-edit-mode "log-edit" ())
+(defvar log-edit-extra-flags)
+(defvar log-edit-before-checkin-process)
+
+(define-derived-mode vc-git-log-edit-mode log-edit-mode "Git-log-edit"
+  "Mode for editing Git commit logs.
+If a line like:
+Author: NAME
+is present in the log, it is removed, and
+--author=NAME
+is passed to the git commit command."
+  (set (make-local-variable 'log-edit-extra-flags) nil)
+  (set (make-local-variable 'log-edit-before-checkin-process)
+       '(("^Author:[ \t]+\\(.*\\)[ \t]*$" . (list "--author" (match-string 1))))))
+
 (defun vc-git-delete-file (file)
   (vc-git-command nil 0 file "rm" "-f" "--"))