From: Juri Linkov <juri@linkov.net>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, stephen.berman@gmx.net, 38044@debbugs.gnu.org,
Dmitry Gutov <dgutov@yandex.ru>
Subject: bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit
Date: Sat, 23 Nov 2019 20:50:10 +0200 [thread overview]
Message-ID: <87d0di7959.fsf@linkov.net> (raw)
In-Reply-To: <837e3tx9s8.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 21 Nov 2019 22:19:03 +0200")
[-- Attachment #1: Type: text/plain, Size: 722 bytes --]
> Here's an alternative proposal. It seems like almost all VCS backends
> we support provide a variant of a "log" command that shows the diffs
> together with the usual meta-data shown by "log". Only RCS and CVS
> don't have such an option of "log", all the rest do (most of them via
> "log -p").
>
> So we could make this a subcommand of vc-log, more accurately
> vc-print-root-log, such that "C-u C-u C-x v L" will prompt for a
> revision ID, and display the information produced by such a "log -p"
> command (and fall back to displaying just the diffs for RCS and CVS).
>
> Does this sound better?
This is fine. Here's a new patch that implements 'M-1 C-x v L'
to limit the log to one revision expanded with diff:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: vc-print-root-log-revision.patch --]
[-- Type: text/x-diff, Size: 2784 bytes --]
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index ca4c66a06d..3b977aa1f4 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1160,7 +1159,9 @@ vc-git-print-log
(list (concat start-revision ".." (if (equal limit "")
"HEAD"
limit)))
- (list start-revision)))
+ (if (eq limit 1)
+ (list "-p" start-revision)
+ (list start-revision))))
'("--")))))))
(defun vc-git-log-outgoing (buffer remote-location)
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 0d29c80d02..90603541b5 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2475,13 +2475,26 @@ vc-print-log
(vc-print-log-internal backend files working-revision nil limit)))
;;;###autoload
-(defun vc-print-root-log (&optional limit)
+(defun vc-print-root-log (&optional limit revision)
"List the change log for the current VC controlled tree in a window.
If LIMIT is non-nil, it should be a number specifying the maximum
number of revisions to show; the default is `vc-log-show-limit'.
-When called interactively with a prefix argument, prompt for LIMIT."
+When called interactively with a prefix argument, prompt for LIMIT.
+When the prefix argument is a number, use it as LIMIT.
+A special case is when the prefix argument is 1, in this case
+it asks for the revision and shows it with its diff."
(interactive
(cond
+ ((eq current-prefix-arg 1)
+ (let* ((default (thing-at-point 'word))
+ (revision (vc-read-revision
+ (if default
+ (format "Revision to show (default %s): " default)
+ "Revision to show: ")
+ nil nil default)))
+ (list 1 revision)))
+ ((numberp current-prefix-arg)
+ (list current-prefix-arg))
(current-prefix-arg
(let ((lim (string-to-number
(read-from-minibuffer
@@ -2494,6 +2507,8 @@ vc-print-root-log
(list (when (> vc-log-show-limit 0) vc-log-show-limit)))))
(let ((backend (vc-deduce-backend))
(default-directory default-directory)
+ (vc-log-short-style (unless (and (eq limit 1) revision)
+ vc-log-short-style))
rootdir)
(if backend
(setq rootdir (vc-call-backend backend 'root default-directory))
@@ -2502,7 +2517,9 @@ vc-print-root-log
(unless backend
(error "Directory is not version controlled")))
(setq default-directory rootdir)
- (vc-print-log-internal backend (list rootdir) nil nil limit)))
+ (vc-print-log-internal backend (list rootdir) revision revision limit)
+ (when (and (eq limit 1) revision)
+ (vc-git-region-history-mode))))
;;;###autoload
(defun vc-print-branch-log (branch)
next prev parent reply other threads:[~2019-11-23 18:50 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-03 15:17 bug#38044: 27.0.50; There should be an easier way to look at a specific vc commit Lars Ingebrigtsen
2019-11-03 15:43 ` Stephen Berman
2019-11-03 20:16 ` Juri Linkov
2019-11-13 21:03 ` Juri Linkov
2019-11-16 20:31 ` Juri Linkov
2019-11-17 11:53 ` Dmitry Gutov
2019-11-17 21:20 ` Juri Linkov
2019-11-17 21:58 ` Dmitry Gutov
2019-11-17 22:36 ` Juri Linkov
2019-11-17 23:19 ` Dmitry Gutov
2019-11-18 21:31 ` Juri Linkov
2019-11-19 3:34 ` Eli Zaretskii
2019-11-19 11:12 ` Dmitry Gutov
2019-11-19 16:12 ` Eli Zaretskii
2019-11-19 16:59 ` Dmitry Gutov
2019-11-19 17:43 ` Eli Zaretskii
2019-11-19 23:17 ` Dmitry Gutov
2019-11-20 3:43 ` Eli Zaretskii
2019-11-20 12:19 ` Dmitry Gutov
2019-11-20 16:34 ` Eli Zaretskii
2019-11-20 19:40 ` Dmitry Gutov
2019-11-20 19:57 ` Dmitry Gutov
2019-11-20 20:12 ` Eli Zaretskii
2019-11-20 20:07 ` Eli Zaretskii
2019-11-20 11:04 ` Lars Ingebrigtsen
2019-11-21 15:00 ` Eli Zaretskii
2019-11-19 22:20 ` Juri Linkov
2019-11-20 3:44 ` Eli Zaretskii
2019-11-20 21:50 ` Juri Linkov
2019-11-20 23:37 ` Dmitry Gutov
2019-11-21 23:08 ` Juri Linkov
2019-11-22 18:51 ` Dmitry Gutov
2019-11-21 14:59 ` Eli Zaretskii
2019-11-21 15:34 ` Dmitry Gutov
2019-11-21 15:50 ` Dmitry Gutov
2019-11-21 18:33 ` Eli Zaretskii
2019-11-21 19:08 ` Dmitry Gutov
2019-11-21 20:19 ` Eli Zaretskii
2019-11-21 21:05 ` Dmitry Gutov
2019-11-22 7:20 ` Eli Zaretskii
2019-11-22 19:59 ` Dmitry Gutov
2019-11-22 21:03 ` Eli Zaretskii
2019-11-22 21:43 ` Dmitry Gutov
2019-11-22 21:51 ` Eli Zaretskii
2019-11-23 13:59 ` Eli Zaretskii
2019-11-23 18:52 ` Dmitry Gutov
2019-11-21 21:15 ` Stephen Berman
2019-11-22 7:24 ` Eli Zaretskii
2019-11-22 9:25 ` Stephen Berman
2019-11-23 12:13 ` Eli Zaretskii
2019-11-23 13:16 ` Stephen Berman
2019-11-22 11:19 ` Dmitry Gutov
2019-11-22 12:12 ` Lars Ingebrigtsen
2019-11-22 13:04 ` Eli Zaretskii
2019-11-22 16:27 ` Dmitry Gutov
2019-12-01 13:13 ` Stephen Berman
2019-12-01 17:53 ` Eli Zaretskii
2019-12-01 20:43 ` Stephen Berman
2019-12-01 21:29 ` Dmitry Gutov
2019-12-01 21:39 ` Stephen Berman
2019-12-01 22:30 ` Dmitry Gutov
2019-12-02 3:34 ` Eli Zaretskii
2019-12-02 10:39 ` Dmitry Gutov
2019-12-02 11:07 ` Andreas Schwab
2019-12-02 15:58 ` Eli Zaretskii
2019-12-02 16:05 ` Dmitry Gutov
2019-11-23 18:50 ` Juri Linkov [this message]
2019-11-23 19:11 ` Dmitry Gutov
2019-11-23 22:43 ` Juri Linkov
2019-11-24 16:05 ` Eli Zaretskii
2019-11-26 23:01 ` Juri Linkov
2019-11-27 5:39 ` Eli Zaretskii
2019-11-27 22:15 ` Juri Linkov
2019-11-25 0:12 ` Dmitry Gutov
2019-11-26 23:06 ` Juri Linkov
2019-11-27 0:09 ` Dmitry Gutov
2019-11-27 5:40 ` Eli Zaretskii
2019-11-27 21:32 ` Juri Linkov
2019-11-28 3:34 ` Eli Zaretskii
2019-11-21 23:13 ` Juri Linkov
2019-11-22 8:03 ` Eli Zaretskii
2019-11-22 11:20 ` Dmitry Gutov
2019-11-22 13:06 ` Eli Zaretskii
2019-11-22 16:26 ` Dmitry Gutov
2019-11-22 16:38 ` Eli Zaretskii
2019-11-21 22:36 ` Andrii Kolomoiets
2019-11-22 7:40 ` Eli Zaretskii
2020-07-19 15:31 ` Lars Ingebrigtsen
2020-07-19 17:14 ` Dmitry Gutov
2020-07-19 17:16 ` Lars Ingebrigtsen
2020-07-19 19:43 ` Dmitry Gutov
2020-07-19 19:51 ` Lars Ingebrigtsen
2020-07-20 20:56 ` Dmitry Gutov
2020-07-21 21:44 ` Lars Ingebrigtsen
2020-07-22 15:36 ` Dmitry Gutov
2020-07-22 16:14 ` Dmitry Gutov
2020-07-22 16:25 ` Eli Zaretskii
2020-07-22 16:38 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d0di7959.fsf@linkov.net \
--to=juri@linkov.net \
--cc=38044@debbugs.gnu.org \
--cc=dgutov@yandex.ru \
--cc=eliz@gnu.org \
--cc=larsi@gnus.org \
--cc=stephen.berman@gmx.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).