[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#38044: 27.0.50; There should be an easier way to look at a specific
From: |
Stephen Berman |
Subject: |
bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit |
Date: |
Sun, 03 Nov 2019 16:43:08 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
On Sun, 03 Nov 2019 16:17:05 +0100 Lars Ingebrigtsen <larsi@gnus.org> wrote:
> Often when discussing code changes, people will send an email saying
> something like "this was fixed by <id>", but Emacs doesn't have a
> convenient way to display that.
>
> For that case, Emacs should have a command that prompts for an ID
> (defaulting to the ID under point), and then (unless default-directory
> is already in a vc-controlled directory), prompts for the directory to
> look for that ID, and then display the commit.
I wrote such a command (appended below) for my own use, but it's
git-specific and I don't know the innards of VC well enough to adapt it,
which is why I haven't proposed it for inclusion in Emacs. Maybe some
of it could be used for a VC command.
Steve Berman
(defun srb-git-log (&optional repo commit)
"Check REPO for COMMIT and if it exists, display its commit message.
Interactively, prompt for REPO, defaulting to emacs-master, and
for COMMIT, defaulting to the commit hash at point. If called
with a prefix argument `C-u', show the commit diff in addition to
the commit message."
(interactive "P")
(let* ((show (equal current-prefix-arg '(4)))
(git-dir (if repo
(read-directory-name "Repo: " "~/src/emacs/"
nil t "emacs-master")
"~/src/emacs/emacs-master"))
(commit0 (substring-no-properties
(or commit
(read-string "Commit: " nil nil (word-at-point)))))
(default-directory git-dir)
(output-buffer (get-buffer-create "*git log*"))
(args (split-string (mapconcat #'concat
(if show
`("show" ,commit0)
`("log" "-1" ,commit0)) " ")))
;; FIXME: output of `git branch --contains' can be ambiguous (even
;; when `git log isn't, because one hash is for a commit, one for a
;; tree?). Can use `git rev-parse --disambiguate=' to find matching
;; full hashes.
(proc (progn
(with-current-buffer output-buffer (erase-buffer))
(call-process "git" nil output-buffer nil
"branch" "--contains" commit0))))
(when proc
(with-current-buffer output-buffer
(goto-char (point-min))
(unless (looking-at "[ *]")
(user-error "%s is not on branch %s" commit0
(file-name-base git-dir)))
(insert "Branches:\n")
(goto-char (point-max))
(apply #'call-process "git" nil output-buffer nil args)
(when show
(with-current-buffer output-buffer
(diff-mode)))
(pop-to-buffer output-buffer)))))
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Lars Ingebrigtsen, 2019/11/03
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit,
Stephen Berman <=
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/03
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/13
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/16
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Dmitry Gutov, 2019/11/17
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/17
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Dmitry Gutov, 2019/11/17
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/17
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Dmitry Gutov, 2019/11/17
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Juri Linkov, 2019/11/18
- bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit, Eli Zaretskii, 2019/11/18