From: Eric Raible <raible@nextest.com>
To: Jeff King <peff@peff.net>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: RFH: unexpected reflog behavior with --since=
Date: Wed, 9 Nov 2011 23:48:58 -0800 [thread overview]
Message-ID: <4EBB81EA.6060303@nextest.com> (raw)
In-Reply-To: <20111109220128.GA31535@sigill.intra.peff.net>
On 11/9/2011 2:01 PM, Jeff King wrote:
> On Tue, Nov 08, 2011 at 04:22:41PM -0800, Eric Raible wrote:
>
> [explanation how --since is used to limits traversal omitted]
Yes, all that is as expected, and makes sense.
> Now let's look at reflog walking. It's kind of bolted on to the side
> of the revision traversal machinery. We walk through the reflog
> backwards and pretend that entry N's parent is entry N-1 (you can see
> this if you do "git log -g -p", for example; you see the patch versus
> the last reflog entry, not the patch against the commit's true parent).
>
> In the case of rewound history (like the reset you showed above), this
> means that the history graph will appear to have bad clock skew. The
> timestamp of HEAD@{0} is going to be much earlier than its pretend
> parent, HEAD@{1}. And the "--since" optimization is going to cut off
> traversal, even though there are more interesting commits to be shown.
>
> So in that sense, I think it's a bug, and we should probably disable the
> exit-early-from-traversal optimization when we're walking reflogs.
Indeed. Seems like a case of an optimization leading to an incorrect result.
> But it may also be a misfeature, because it's not clear what you're
> actually trying to limit by. We have commit timestamps, of course, but
> when we are walking reflogs, we also have reflog timestamps. Did you
> actually want to say "show me all commits in the reflog, in reverse
> reflog order, omitting commits that happened before time t"? Or did you
> really mean "show me the reflog entries that happened before time t,
> regardless of their commit timestamp"?
I meant "show me the reflog entries that happened *since* time t,
regardless of their commit timestamp.
> In the latter case, we would either need a new specifier (like
> "--reflog-since"), or to rewrite the commit timestamp when we rewrite
> the parent pointers.
>
> The latter has a certain elegance to it (we are making a pretend linear
> history graph out of the reflog, so faking the timestamps to be sensible
> and in order is a logical thing to do) but I worry about lying too much
> in the output. Something like "git log -g --format=%cd" would now have
> the fake timestamp in the output. But then, we already show the fake
> parents in the output, so I don't know that this is any worse.
Since -g is asking specifying for the reflog, and since the reflog has
its own timestamps, I would expect that those timestamps be used.
next prev parent reply other threads:[~2011-11-10 7:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-09 0:22 RFH: unexpected reflog behavior with --since= Eric Raible
2011-11-09 22:01 ` Jeff King
2011-11-09 22:20 ` Jeff King
2011-11-09 22:26 ` Jeff King
2011-11-10 8:04 ` Eric Raible
2011-11-10 8:08 ` Jeff King
2011-11-10 8:20 ` Eric Raible
2011-11-10 8:31 ` Jay Soffian
2011-11-10 11:06 ` Miles Bader
2011-11-10 18:18 ` Eric Raible
2011-11-12 6:50 ` Junio C Hamano
2011-11-10 7:48 ` Eric Raible [this message]
2011-11-10 7:59 ` Jeff King
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EBB81EA.6060303@nextest.com \
--to=raible@nextest.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.