git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <junkio@cox.net>
To: Linus Torvalds <torvalds@osdl.org>
Cc: git@vger.kernel.org
Subject: Re: What's in git.git (stable)
Date: Mon, 18 Dec 2006 14:04:38 -0800	[thread overview]
Message-ID: <7vzm9kvp1l.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <Pine.LNX.4.64.0612181012280.3479@woody.osdl.org> (Linus Torvalds's message of "Mon, 18 Dec 2006 10:16:12 -0800 (PST)")

Linus Torvalds <torvalds@osdl.org> writes:

> On Sun, 17 Dec 2006, Junio C Hamano wrote:
>> 
>>  - blame A..B's output shows lines attributed to the boundary
>>    commit with commit SHA-1 prefixed with '^';
>
> I wonder if it would make sense to have a flag or mode or something where 
> boundary commit attributions are simply left unattributed (ie just leave 
> that _empty_).

How about this?

-- >8 --
blame: -b (blame.blankboundary) and --root (blame.showroot)

When blame.blankboundary is set (or -b option is given), commit
object names are blanked out in the "human readable" output
format for boundary commits.

When blame.showroot is not set (or --root is not given), the
root commits are treated as boundary commits.  The code still
attributes the lines to them, but with -b their object names are
not shown.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---
 builtin-blame.c |   33 +++++++++++++++++++++++++++++++--
 1 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/builtin-blame.c b/builtin-blame.c
index a250724..211bdb3 100644
--- a/builtin-blame.c
+++ b/builtin-blame.c
@@ -22,7 +22,9 @@
 static char blame_usage[] =
 "git-blame [-c] [-l] [-t] [-f] [-n] [-p] [-L n,m] [-S <revs-file>] [-M] [-C] [-C] [commit] [--] file\n"
 "  -c, --compatibility Use the same output mode as git-annotate (Default: off)\n"
+"  -b                  Show blank SHA-1 for boundary commits (Default: off)\n"
 "  -l, --long          Show long commit SHA1 (Default: off)\n"
+"  --root              Do not treat root commits as boundaries (Default: off)\n"
 "  -t, --time          Show raw timestamp (Default: off)\n"
 "  -f, --show-name     Show original filename (Default: auto)\n"
 "  -n, --show-number   Show original linenumber (Default: off)\n"
@@ -36,6 +38,8 @@ static int longest_author;
 static int max_orig_digits;
 static int max_digits;
 static int max_score_digits;
+static int show_root;
+static int blank_boundary;
 
 #ifndef DEBUG
 #define DEBUG 0
@@ -1095,6 +1099,9 @@ static void assign_blame(struct scoreboard *sb, struct rev_info *revs, int opt)
 			if (commit->object.parsed)
 				mark_parents_uninteresting(commit);
 		}
+		/* treat root commit as boundary */
+		if (!commit->parents && !show_root)
+			commit->object.flags |= UNINTERESTING;
 
 		/* Take responsibility for the remaining entries */
 		for (ent = sb->ent; ent; ent = ent->next)
@@ -1318,8 +1325,12 @@ static void emit_other(struct scoreboard *sb, struct blame_entry *ent, int opt)
 		int length = (opt & OUTPUT_LONG_OBJECT_NAME) ? 40 : 8;
 
 		if (suspect->commit->object.flags & UNINTERESTING) {
-			length--;
-			putchar('^');
+			if (!blank_boundary) {
+				length--;
+				putchar('^');
+			}
+			else
+				memset(hex, ' ', length);
 		}
 
 		printf("%.*s", length, hex);
@@ -1639,6 +1650,19 @@ static void prepare_blame_range(struct scoreboard *sb,
 		usage(blame_usage);
 }
 
+static int git_blame_config(const char *var, const char *value)
+{
+	if (!strcmp(var, "blame.showroot")) {
+		show_root = git_config_bool(var, value);
+		return 0;
+	}
+	if (!strcmp(var, "blame.blankboundary")) {
+		blank_boundary = git_config_bool(var, value);
+		return 0;
+	}
+	return git_default_config(var, value);
+}
+
 int cmd_blame(int argc, const char **argv, const char *prefix)
 {
 	struct rev_info revs;
@@ -1654,6 +1678,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 	char type[10];
 	const char *bottomtop = NULL;
 
+	git_config(git_blame_config);
 	save_commit_buffer = 0;
 
 	opt = 0;
@@ -1662,6 +1687,10 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
 		const char *arg = argv[i];
 		if (*arg != '-')
 			break;
+		else if (!strcmp("-b", arg))
+			blank_boundary = 1;
+		else if (!strcmp("--root", arg))
+			show_root = 1;
 		else if (!strcmp("-c", arg))
 			output_option |= OUTPUT_ANNOTATE_COMPAT;
 		else if (!strcmp("-t", arg))

  parent reply	other threads:[~2006-12-18 22:04 UTC|newest]

Thread overview: 262+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-18  7:26 What's in git.git (stable) Junio C Hamano
     [not found] ` <Pine.LNX.4.64.0612181012280.3479@woody.osdl.org>
2006-12-18 22:04   ` Junio C Hamano [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-07-21  7:09 Junio C Hamano
2008-04-09  6:51 [ANNOUNCE] GIT 1.5.5 Junio C Hamano
2008-04-09  9:44 ` What's in git.git (stable) Junio C Hamano
2008-04-14  7:00   ` Junio C Hamano
2008-04-19  8:18     ` Junio C Hamano
2008-04-27  6:04       ` Junio C Hamano
2008-05-06  6:38         ` Junio C Hamano
2008-05-14 22:35           ` Junio C Hamano
2008-05-24  1:32             ` Junio C Hamano
2008-05-30 20:43               ` Junio C Hamano
2008-06-02  8:01                 ` Junio C Hamano
2008-06-13 10:10                   ` Junio C Hamano
2008-06-18  7:32                     ` Junio C Hamano
2008-06-18 10:59                       ` Jeff King
2008-06-21 10:06                       ` Junio C Hamano
2008-06-23  7:25                         ` Junio C Hamano
2008-06-25  9:34                           ` Junio C Hamano
2008-07-02  6:28                             ` Junio C Hamano
2008-07-06 10:04                               ` Junio C Hamano
2008-07-08  2:46                                 ` Junio C Hamano
2008-07-14  5:33                                   ` Junio C Hamano
2008-07-16  3:33                                     ` Junio C Hamano
2008-07-20  1:59                                       ` Junio C Hamano
2008-07-20 11:20                                         ` Lars Noschinski
2008-07-20 18:27                                           ` Junio C Hamano
2008-01-30  8:32 What's in git.git (stable frozen) Junio C Hamano
2008-02-12  7:25 ` What's in git.git Junio C Hamano
2008-02-17  3:56   ` What's in git.git (stable) Junio C Hamano
2008-02-17 13:39     ` Jakub Narebski
2008-02-17 20:45       ` Junio C Hamano
2008-02-17 20:51         ` Johannes Schindelin
2008-02-18  1:31           ` Junio C Hamano
2008-02-18  1:34             ` Johannes Schindelin
2008-02-18  1:43               ` Jeff King
2008-02-18  2:05                 ` Johannes Schindelin
2008-02-18  3:12                 ` Junio C Hamano
2008-02-18 11:15                   ` Jeff King
2008-02-21  4:16     ` Junio C Hamano
2008-02-25  8:42       ` Junio C Hamano
2008-02-28  0:43         ` Junio C Hamano
2008-03-03  2:06           ` Junio C Hamano
2008-03-06  6:02             ` Junio C Hamano
2008-03-08 10:08               ` Junio C Hamano
2008-03-09 10:46                 ` Junio C Hamano
2008-03-14  9:11                   ` Junio C Hamano
2008-03-23 10:08                     ` Junio C Hamano
2008-03-28  1:45                       ` Junio C Hamano
2008-03-31  8:39                         ` Junio C Hamano
2008-04-04 18:24                           ` Junio C Hamano
2008-04-05  3:13                             ` Shawn O. Pearce
2008-01-14  1:53 Junio C Hamano
2007-10-22  6:11 What's in git/spearce.git (stable) Shawn O. Pearce
2007-11-01  5:39 ` What's in git.git (stable) Junio C Hamano
2007-11-04  3:52   ` Junio C Hamano
2007-11-08  8:06     ` Junio C Hamano
2007-11-08 11:38       ` Pierre Habouzit
2007-11-12  7:06       ` Junio C Hamano
2007-11-15  0:20         ` Junio C Hamano
2007-11-17 21:00           ` Junio C Hamano
2007-11-25 20:45             ` Junio C Hamano
2007-12-01  2:05               ` Junio C Hamano
2007-12-04  8:43                 ` Junio C Hamano
2007-12-05 10:57                   ` Junio C Hamano
2007-12-07  9:50                     ` Junio C Hamano
2007-12-09 10:32                       ` Junio C Hamano
2007-09-06  8:52 Junio C Hamano
     [not found] ` <7v3axhd0lr.fsf@gitster.siamese.dyndns.org>
2007-09-26 20:05   ` Junio C Hamano
2007-10-02  5:52     ` Junio C Hamano
2007-08-23  0:37 Junio C Hamano
2007-08-24  0:28 ` Jakub Narebski
2007-08-11  8:41 Junio C Hamano
2007-08-11  9:32 ` David Kastrup
2007-08-16  5:02 ` Junio C Hamano
2007-05-13 22:30 Junio C Hamano
2007-05-17  0:21 ` Junio C Hamano
2007-05-19  5:24   ` Junio C Hamano
2007-05-23 21:46     ` Junio C Hamano
2007-05-29 10:12       ` Junio C Hamano
2007-06-02 21:09         ` Junio C Hamano
2007-06-07  2:08           ` Junio C Hamano
2007-06-13 20:11             ` Junio C Hamano
2007-06-13 22:31               ` Johannes Schindelin
2007-06-14  7:12                 ` Johannes Sixt
2007-06-21  7:21               ` Junio C Hamano
2007-06-25  9:43                 ` Junio C Hamano
2007-07-02  0:16                   ` Junio C Hamano
2007-07-13  6:06                     ` What's in git.git Junio C Hamano
2007-07-28  8:47                       ` What's in git.git (stable) Junio C Hamano
2007-07-28  8:56                         ` David Kastrup
2007-07-28  9:02                           ` Junio C Hamano
2007-07-28  9:35                           ` David Kastrup
2007-07-29  3:16                             ` Theodore Tso
2007-07-29  9:05                               ` David Kastrup
2007-07-29 16:40                                 ` Theodore Tso
2007-07-29 11:27                               ` Johannes Schindelin
2007-07-28 12:28                         ` Thomas Glanzmann
2007-08-07  6:22                         ` Junio C Hamano
2007-05-09  8:46 Junio C Hamano
2007-04-16  1:27 Junio C Hamano
2007-04-18 23:58 ` Junio C Hamano
2007-04-22  6:22   ` Junio C Hamano
2007-04-23  7:04     ` Junio C Hamano
2007-04-27  8:34       ` Junio C Hamano
2007-04-27  9:19         ` Andy Parkins
2007-04-27 14:01           ` Nicolas Pitre
2007-04-27 15:21             ` Andy Parkins
2007-04-27 17:11           ` Linus Torvalds
2007-04-27 18:03             ` Andy Parkins
2007-04-27 18:12               ` Linus Torvalds
2007-04-29 18:33         ` Junio C Hamano
2007-04-30  4:15           ` J. Bruce Fields
2007-04-30  5:12             ` Junio C Hamano
2007-05-01  3:36               ` J. Bruce Fields
2007-05-06  8:53           ` Junio C Hamano
2007-05-07  0:59             ` Jakub Narebski
2007-05-07 13:33             ` Frank Lichtenheld
2007-04-09  8:17 Junio C Hamano
2007-03-31  9:34 Junio C Hamano
2007-03-31 11:54 ` Alex Riesen
2007-04-05  6:44 ` Junio C Hamano
2007-02-20  7:32 Junio C Hamano
2007-02-23  8:33 ` Junio C Hamano
2007-03-04 10:32   ` Junio C Hamano
2007-03-13  8:49     ` Junio C Hamano
2007-03-13  9:26       ` Junio C Hamano
2007-03-22 17:08       ` Steven Grimm
2007-03-22 21:30         ` Junio C Hamano
2007-03-25  8:32       ` Junio C Hamano
2007-02-14 23:54 Junio C Hamano
2007-02-07 23:21 [ANNOUNCE] GIT 1.5.0-rc4 Junio C Hamano
2007-02-13  5:15 ` What's in git.git (stable) Junio C Hamano
2007-02-13 10:15   ` Johannes Schindelin
2007-02-13 17:33     ` Junio C Hamano
2007-02-13 18:21       ` Randal L. Schwartz
2007-02-13 18:37         ` Johannes Schindelin
2007-02-13 22:02           ` Jimmy Tang
2007-02-13 23:31             ` Linus Torvalds
2007-02-13 13:56   ` Matthias Lederhofer
2007-02-13 16:58     ` Junio C Hamano
2007-02-13 14:33   ` Bill Lear
2007-02-13 14:37     ` Bill Lear
2007-02-13 17:18       ` Randal L. Schwartz
2007-02-01  0:26 [ANNOUNCE] GIT 1.5.0-rc3 Junio C Hamano
2007-02-04  9:36 ` What's in git.git (stable) Junio C Hamano
2007-02-04 18:51   ` Jeff King
2007-02-04 19:12     ` Linus Torvalds
2007-02-04 20:58       ` Theodore Tso
2007-02-04 21:34         ` Jakub Narebski
2007-02-04 22:25           ` David Kågedal
2007-01-27  8:05 Junio C Hamano
2007-01-27  8:59 ` Aneesh Kumar K.V
2007-01-27 18:06   ` J. Bruce Fields
2007-01-27 22:00   ` Junio C Hamano
2007-01-27 17:56 ` J. Bruce Fields
2007-01-28 19:34 ` Bill Lear
2007-01-28 20:06   ` Junio C Hamano
2007-01-10  8:24 Junio C Hamano
2007-01-10  8:23 Junio C Hamano
2007-01-02  0:07 Junio C Hamano
2007-01-07  7:43 ` Junio C Hamano
2006-12-31  8:07 Junio C Hamano
2006-12-26  3:22 What's in git.git (stable) and announcing GIT 1.5.0 preview Junio C Hamano
2006-12-29  5:44 ` What's in git.git (stable) Junio C Hamano
2006-12-22  9:25 Junio C Hamano
2006-12-22 17:15 ` Randal L. Schwartz
2006-12-22 17:19   ` Randal L. Schwartz
2006-12-22 18:09     ` Johannes Schindelin
2006-12-22 18:12       ` Randal L. Schwartz
2006-12-22 18:21         ` Randal L. Schwartz
2006-12-22 19:21         ` Johannes Schindelin
2006-12-22 20:13           ` Junio C Hamano
2006-12-22 20:44             ` Johannes Schindelin
2006-12-22 21:44               ` Junio C Hamano
2006-12-26 20:25                 ` Luben Tuikov
2006-12-26 23:54                   ` Junio C Hamano
2006-12-27  1:19                     ` Luben Tuikov
2006-12-27  2:14                       ` Junio C Hamano
2006-12-22 18:58     ` Junio C Hamano
2006-12-22 20:04       ` Jakub Narebski
2006-12-22 20:16         ` Junio C Hamano
2006-12-22 20:56           ` Jakub Narebski
2006-12-22 21:49             ` Junio C Hamano
2006-12-22 20:21 ` Quy Tonthat
2006-12-16 23:10 Junio C Hamano
2006-12-13 21:35 Junio C Hamano
2006-12-13 22:37 ` Andy Parkins
2006-12-13 22:48   ` Jakub Narebski
2006-12-14  9:27     ` Andy Parkins
2006-12-14  9:36       ` Shawn Pearce
2006-12-14 10:03         ` Andy Parkins
2006-12-14 17:06         ` Nicolas Pitre
2006-12-15 14:28           ` Jakub Narebski
2006-12-13 23:31   ` Junio C Hamano
2006-12-13 23:52     ` Peter Baumann
2006-12-14  0:16     ` Johannes Schindelin
2006-12-14  3:32       ` Nicolas Pitre
2006-12-14  6:29         ` Junio C Hamano
2006-12-14  8:28     ` Andreas Ericsson
2006-12-15 14:39       ` Jakub Narebski
2006-12-14  9:59     ` Andy Parkins
2006-12-14 10:21       ` Junio C Hamano
2006-12-14 11:36         ` Andy Parkins
2006-12-14 11:45           ` Shawn Pearce
2006-12-14 11:58             ` Carl Worth
2006-12-14 12:05               ` Shawn Pearce
2006-12-14 18:06                 ` Nicolas Pitre
2006-12-14 19:52                   ` Junio C Hamano
2006-12-14 20:02                     ` Shawn Pearce
2006-12-14 20:22                       ` Nicolas Pitre
2006-12-14 20:35                       ` Junio C Hamano
2006-12-14 22:44                         ` Shawn Pearce
2006-12-14 21:55                       ` Andreas Ericsson
2006-12-15 21:55                         ` Junio C Hamano
2006-12-16  2:54                           ` Shawn Pearce
2006-12-14 20:17                     ` Nicolas Pitre
2006-12-14 20:50                       ` Junio C Hamano
2006-12-14 17:47             ` Nicolas Pitre
2006-12-14 21:58             ` Junio C Hamano
2006-12-14 22:50               ` Andy Parkins
2006-12-15 15:38                 ` Jakub Narebski
2006-12-15 15:26           ` Jakub Narebski
2006-12-15 15:30             ` Nicolas Pitre
2006-12-15 15:48               ` Andreas Ericsson
2006-12-15 16:08                 ` Nicolas Pitre
2006-12-15 16:12                   ` Shawn Pearce
2006-12-15 16:13                   ` Andreas Ericsson
2006-12-15 23:22               ` Johannes Schindelin
2006-12-15  4:07         ` Nicolas Pitre
2006-12-14 21:22       ` Junio C Hamano
2006-12-14 22:55         ` Andy Parkins
2006-12-14 23:46           ` Junio C Hamano
2006-12-15  8:58             ` Andy Parkins
2006-12-15  9:55               ` Raimund Bauer
2006-12-15 21:55               ` Junio C Hamano
2006-12-15 22:54                 ` Carl Worth
2006-12-14 23:53           ` Johannes Schindelin
2006-12-14 23:52     ` Horst H. von Brand
2006-12-15 10:53       ` Jakub Narebski
2006-12-14  0:22   ` Johannes Schindelin
2006-12-14 10:21     ` Andy Parkins
2006-12-14 10:51       ` Johannes Schindelin
2006-12-14 11:23         ` Andy Parkins
2006-12-14 11:27           ` Johannes Schindelin
2006-12-14 12:00             ` Andy Parkins
2006-12-14 12:10               ` Shawn Pearce
2006-12-14 13:20                 ` Andy Parkins
2006-12-15  0:15         ` Horst H. von Brand
2006-12-15  0:23           ` Johannes Schindelin
2006-12-14 17:23       ` Nicolas Pitre
2006-12-14 21:02         ` Andy Parkins
2006-12-14 23:03   ` Shawn Pearce
2006-12-15 16:16     ` Jakub Narebski
2006-12-15 21:55       ` Junio C Hamano
2006-12-15 22:48         ` Jakub Narebski
2006-12-15 23:25           ` Johannes Schindelin
2006-12-15 23:45             ` Junio C Hamano
2006-12-16  0:14               ` Johannes Schindelin
2006-12-16  0:30                 ` Junio C Hamano
2006-12-16 17:12                   ` Steven Grimm
2006-12-16 19:57                     ` Junio C Hamano
2006-12-15 23:42           ` Junio C Hamano
2006-12-16  9:58 ` Junio C Hamano
2006-12-16 13:59 ` Jakub Narebski
2006-12-16 22:04   ` Junio C Hamano
2006-12-06 21:18 Junio C Hamano
2006-12-08 15:36 ` Jakub Narebski
2006-12-09 20:44 ` Tilman Sauerbeck
2006-12-09 21:10   ` Junio C Hamano

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: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vzm9kvp1l.fsf@assigned-by-dhcp.cox.net \
    --to=junkio@cox.net \
    --cc=git@vger.kernel.org \
    --cc=torvalds@osdl.org \
    /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://80x24.org/mirrors/git.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).