git.el: Add a commit description to the reflog.
Add a description of the commit to the reflog using the first line of the log message, the same way the git-commit script does it. Signed-off-by: Alexandre Julliard <julliard@winehq.org> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
9398e5aa16
commit
413689d36f
|
@ -345,9 +345,15 @@ and returns the process output as a string."
|
|||
(let ((str (git-call-process-env-string nil "symbolic-ref" ref)))
|
||||
(and str (car (split-string str "\n")))))
|
||||
|
||||
(defun git-update-ref (ref val &optional oldval)
|
||||
(defun git-update-ref (ref newval &optional oldval reason)
|
||||
"Update a reference by calling git-update-ref."
|
||||
(apply #'git-call-process-env nil nil "update-ref" ref val (if oldval (list oldval))))
|
||||
(let ((args (and oldval (list oldval))))
|
||||
(push newval args)
|
||||
(push ref args)
|
||||
(when reason
|
||||
(push reason args)
|
||||
(push "-m" args))
|
||||
(eq 0 (apply #'git-call-process-env nil nil "update-ref" args))))
|
||||
|
||||
(defun git-read-tree (tree &optional index-file)
|
||||
"Read a tree into the index file."
|
||||
|
@ -364,8 +370,10 @@ and returns the process output as a string."
|
|||
"Call git-commit-tree with buffer as input and return the resulting commit SHA1."
|
||||
(let ((author-name (git-get-committer-name))
|
||||
(author-email (git-get-committer-email))
|
||||
(subject "commit (initial): ")
|
||||
author-date log-start log-end args coding-system-for-write)
|
||||
(when head
|
||||
(setq subject "commit: ")
|
||||
(push "-p" args)
|
||||
(push head args))
|
||||
(with-current-buffer buffer
|
||||
|
@ -384,22 +392,29 @@ and returns the process output as a string."
|
|||
(goto-char (point-min))
|
||||
(while (re-search-forward "^Parent: +\\([0-9a-f]+\\)" nil t)
|
||||
(unless (string-equal head (match-string 1))
|
||||
(setq subject "commit (merge): ")
|
||||
(push "-p" args)
|
||||
(push (match-string 1) args))))
|
||||
(setq log-start (point-min)))
|
||||
(setq log-end (point-max))
|
||||
(goto-char log-start)
|
||||
(when (re-search-forward ".*$" nil t)
|
||||
(setq subject (concat subject (match-string 0))))
|
||||
(setq coding-system-for-write buffer-file-coding-system))
|
||||
(git-get-string-sha1
|
||||
(with-output-to-string
|
||||
(with-current-buffer standard-output
|
||||
(let ((env `(("GIT_AUTHOR_NAME" . ,author-name)
|
||||
("GIT_AUTHOR_EMAIL" . ,author-email)
|
||||
("GIT_COMMITTER_NAME" . ,(git-get-committer-name))
|
||||
("GIT_COMMITTER_EMAIL" . ,(git-get-committer-email)))))
|
||||
(when author-date (push `("GIT_AUTHOR_DATE" . ,author-date) env))
|
||||
(apply #'git-run-command-region
|
||||
buffer log-start log-end env
|
||||
"commit-tree" tree (nreverse args))))))))
|
||||
(let ((commit
|
||||
(git-get-string-sha1
|
||||
(with-output-to-string
|
||||
(with-current-buffer standard-output
|
||||
(let ((env `(("GIT_AUTHOR_NAME" . ,author-name)
|
||||
("GIT_AUTHOR_EMAIL" . ,author-email)
|
||||
("GIT_COMMITTER_NAME" . ,(git-get-committer-name))
|
||||
("GIT_COMMITTER_EMAIL" . ,(git-get-committer-email)))))
|
||||
(when author-date (push `("GIT_AUTHOR_DATE" . ,author-date) env))
|
||||
(apply #'git-run-command-region
|
||||
buffer log-start log-end env
|
||||
"commit-tree" tree (nreverse args))))))))
|
||||
(and (git-update-ref "HEAD" commit head subject)
|
||||
commit))))
|
||||
|
||||
(defun git-empty-db-p ()
|
||||
"Check if the git db is empty (no commit done yet)."
|
||||
|
@ -662,7 +677,6 @@ and returns the process output as a string."
|
|||
(if (or (not (string-equal tree head-tree))
|
||||
(yes-or-no-p "The tree was not modified, do you really want to perform an empty commit? "))
|
||||
(let ((commit (git-commit-tree buffer tree head)))
|
||||
(git-update-ref "HEAD" commit head)
|
||||
(condition-case nil (delete-file ".git/MERGE_HEAD") (error nil))
|
||||
(condition-case nil (delete-file ".git/MERGE_MSG") (error nil))
|
||||
(with-current-buffer buffer (erase-buffer))
|
||||
|
|
Loading…
Reference in New Issue