git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: elliottcable <me@ell.io>
Cc: git@vger.kernel.org
Subject: Re: [PATCH/RFC] rev-list: add --authorship-order alternative ordering
Date: Tue, 04 Jun 2013 12:14:21 -0700	[thread overview]
Message-ID: <7vip1t7koi.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1370369299-20744-2-git-send-email-me@ell.io> (elliottcable's message of "Tue, 4 Jun 2013 14:08:18 -0400")

elliottcable <me@ell.io> writes:

> --date-order is an excellent alternative to --topo-order if you want a feel for
> the *actual history*, chronologically, of your project. I use it often, with
> --graph as well; it's a great way to get an overview of a project's recent
> development history.
>
> However, in a project that rebases various in-development topic-branches often,
> it gets hard to demonstrate a *chronological history* of changes to the
> codebase, as this always “resets” the COMMITTER_DATE (which --date-order uses)
> to the time the rebase happened; which often means ‘last time all of the
> topic-branches were rebased on the latest fixes in master.’
>
> Thus, I've added an --authorship-order version of --date-order, which relies
> upon the AUTHOR_DATE instead of the COMMITTER_DATE; this means that old commits
> will continue to show up chronologically in-order despite rebasing.
> ---

Missing sign-off.  Please see Documentation/SubmittingPatches.

>  builtin/log.c                          |  2 +-
>  builtin/rev-list.c                     |  1 +
>  builtin/rev-parse.c                    |  1 +
>  builtin/show-branch.c                  | 12 ++++-
>  commit.c                               | 83 ++++++++++++++++++++++++++++++----
>  commit.h                               |  3 +-
>  contrib/completion/git-completion.bash |  4 +-
>  po/de.po                               |  4 +-
>  po/git.pot                             |  2 +-
>  po/sv.po                               |  4 +-
>  po/vi.po                               |  4 +-
>  po/zh_CN.po                            |  4 +-

Please drop all the changes to po/ area; it is managed by the i18n
coordinator and generated by an automated tool that extracts these
strings from the code.

People who code should not (and do not have to) touch these files.

>  revision.c                             | 11 ++++-
>  revision.h                             |  1 +
>  14 files changed, 110 insertions(+), 26 deletions(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index 9e21232..54d4d7f 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -237,7 +237,7 @@ static void log_show_early(struct rev_info *revs, struct commit_list *list)
>  	int i = revs->early_output;
>  	int show_header = 1;
>  
> -	sort_in_topological_order(&list, revs->lifo);
> +	sort_in_topological_order(&list, revs->lifo, revs->use_author);

The name "use-author" is a clear sign that the person who added this
code were too narrowly focused to think "author" automatically would
mean "author date" ;-).

It probably makes sense to revamp sort_in_topological_order(), so
that its second parameter is not a boolean 'lifo' that tells too
much about its implementation without telling what it actually
means.  Instead, we can make it an enum sort_order, that tells it to
emit the commits in committer-date order, author-date order, or
graph-traversal order.

And update revs->lifo to use that same enum, without adding
use_author_date bit to rev_info.

> @@ -694,6 +697,11 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
>  			   show_branch_usage, PARSE_OPT_STOP_AT_NON_OPTION);
>  	if (all_heads)
>  		all_remotes = 1;
> +	/* I'm having trouble figuring out exactly what `lifo` stores. Why do both 'date-order' and
> +	 * 'topo-order' set the same variable!? Aren't they mutually exclusive? Since *both* set it, for
> +	 * the moment, I'm going to set it for '--authorship-order'; but that seems counterintuitive. */

Lines that are too wide.

	/*
         * Also please format multi-line comments
         * like this, nothing other than slash-asterisk
         * on the first and the last lines.
         */

> @@ -301,7 +328,8 @@ int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long s
>  			pptr = &commit_list_insert(new_parent, pptr)->next;
>  		}
>  	}
> -	item->date = parse_commit_date(bufptr, tail);
> +	item->date = parse_commit_committer_date(bufptr, tail);
> +	item->author_date = parse_commit_author_date(bufptr, tail);
> ...
> diff --git a/commit.h b/commit.h
> index 67bd509..de07525 100644
> --- a/commit.h
> +++ b/commit.h
> @@ -17,6 +17,7 @@ struct commit {
>  	void *util;
>  	unsigned int indegree;
>  	unsigned long date;
> +	unsigned long author_date;

While walking we keep many of them in-core, and 8-byte each for each
commit objects add up.  We do not want to make "struct commit" any
larger than it already is.

  reply	other threads:[~2013-06-04 19:14 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-04 18:08 [PATCH/RFC] add --authorship-order flag to git log / rev-list elliottcable
2013-06-04 18:08 ` [PATCH/RFC] rev-list: add --authorship-order alternative ordering elliottcable
2013-06-04 19:14   ` Junio C Hamano [this message]
2013-06-04 21:20     ` Junio C Hamano
2013-06-06 19:03       ` Elliott Cable
2013-06-06 19:29         ` Junio C Hamano
2013-06-06 19:32           ` Elliott Cable
2013-06-06 19:40         ` Junio C Hamano
2013-06-06 22:48           ` Junio C Hamano
2013-06-06 23:25             ` [PATCH] toposort: rename "lifo" field Junio C Hamano
2013-06-07  1:25               ` Junio C Hamano
2013-06-07  5:11                 ` [PATCH 0/3] Preparing for --date-order=author Junio C Hamano
2013-06-07  5:11                   ` [PATCH 1/3] toposort: rename "lifo" field Junio C Hamano
2013-06-07  5:18                     ` Eric Sunshine
2013-06-07  5:21                       ` Junio C Hamano
2013-06-07  5:11                   ` [PATCH 2/3] commit-queue: LIFO or priority queue of commits Junio C Hamano
2013-06-07  5:29                     ` Eric Sunshine
2013-06-07  5:11                   ` [PATCH 3/3] sort-in-topological-order: use commit-queue Junio C Hamano
2013-06-09 23:24                   ` [PATCH v2 0/4] log --author-date-order Junio C Hamano
2013-06-09 23:24                     ` [PATCH v2 1/4] toposort: rename "lifo" field Junio C Hamano
2013-06-10  2:12                       ` Eric Sunshine
2013-06-10  5:05                       ` Jeff King
2013-06-09 23:24                     ` [PATCH v2 2/4] commit-queue: LIFO or priority queue of commits Junio C Hamano
2013-06-10  5:25                       ` Jeff King
2013-06-10  7:21                         ` Junio C Hamano
2013-06-10 18:15                           ` Jeff King
2013-06-10 18:56                             ` Junio C Hamano
2013-06-10 18:59                               ` Jeff King
2013-06-10 23:23                                 ` Junio C Hamano
2013-06-11  6:36                                   ` Jeff King
2013-06-11 17:02                                     ` Junio C Hamano
2013-06-11 22:19                                     ` [PATCH v3 0/4] log --author-date-order Junio C Hamano
2013-06-11 22:19                                       ` [PATCH v3 1/4] toposort: rename "lifo" field Junio C Hamano
2013-06-11 22:19                                       ` [PATCH v3 2/4] prio-queue: priority queue of pointers to structs Junio C Hamano
2013-06-11 22:19                                       ` [PATCH v3 3/4] sort-in-topological-order: use prio-queue Junio C Hamano
2013-06-11 22:19                                       ` [PATCH v3 4/4] log: --author-date-order Junio C Hamano
2013-06-09 23:24                     ` [PATCH v2 3/4] sort-in-topological-order: use commit-queue Junio C Hamano
2013-06-09 23:37                       ` Junio C Hamano
2013-06-10  5:31                         ` Jeff King
2013-06-10  7:27                           ` Junio C Hamano
2013-06-10 18:24                             ` Jeff King
2013-06-09 23:24                     ` [PATCH v2 4/4] log: --author-date-order Junio C Hamano
2013-06-10  5:50                       ` Jeff King
2013-06-10  7:39                         ` Junio C Hamano
2013-06-10 18:49                           ` Jeff King
2013-06-20 19:36                             ` Junio C Hamano
2013-06-20 20:16                               ` Jeff King
2013-06-07  5:09               ` [PATCH] toposort: rename "lifo" field Eric Sunshine
2013-06-04 21:22     ` [PATCH/RFC] rev-list: add --authorship-order alternative ordering Jeff King
2013-06-04 18:53 ` [PATCH/RFC] add --authorship-order flag to git log / rev-list Junio C Hamano
2013-06-06 18:06   ` Elliott Cable

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=7vip1t7koi.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=me@ell.io \
    /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).