Skip to content

Commit fbf3d06

Browse files
LemmingAvalanchegitster
authored andcommitted
doc: warn against --committer-date-is-author-date
This option could create a commit history which violates the assumption that commits have non-decreasing commit timestamps. Warn against that in both git-am(1) and git-rebase(1). The genesis of this option is from git-am(1) and was added in 3f01ad6 (am: Add --committer-date-is-author-date option, 2009-01-22). The commit message doesn’t give us an example of a use case, but the thread starter does:[1] I've a big set of patches in a mbox file: there's sufficient info inside for git-am to work. Yet, each time I do import these, my sha1sums are changing because of different commit dates. I'd like to force the commit date to match the info/date from the time I received the email (and therefore always get back the right sha1sums). [1]: https://lore.kernel.org/git/46d6db660901221441q60eb90bdge601a7a250c3a247@mail.gmail.com/ So the motivation was to treat git-am(1) as an import command that creates the same commit IDs. Putting aside the question of whether you should be using git-am(1) for importing commits, this approach is problematic: • you still need to apply the commits to the same base if you want the same hashes; and • you need the same committer. And if you expect the same committer, why is this person applying the same patches multiple times with the goal of making *identical* commits? That was all for git-am(1). It was added to git-rebase(1) in 570ccad (rebase: add options passed to git-am, 2009-03-18)[2] in order to plug options that could not be sent on to git-am(1). At this point the utility of the option graduated to making no sense; a use case for `git rebase --committer-date-is-author- date` is still yet to be found. Just warn against using this option on both commands and remind the user to consider whether they really need it. † 2: See also 7573cec (rebase -i: support --committer-date-is-author-date, 2020-08-17) for the commit for the merge backend Suggested-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Acked-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent f368df4 commit fbf3d06

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

Documentation/git-am.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@ Valid <action> for the `--whitespace` option are:
161161
commit creation as the committer date. This allows the
162162
user to lie about the committer date by using the same
163163
value as the author date.
164+
+
165+
WARNING: The history walking machinery assumes that commits have
166+
non-decreasing commit timestamps. You should consider if you really need
167+
to use this option. Then you should only use this option to override the
168+
committer date when applying commits on top of a base which commit is
169+
older (in terms of the commit date) than the oldest patch you are
170+
applying.
164171

165172
--ignore-date::
166173
By default the command records the date from the e-mail

Documentation/git-rebase.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,13 @@ See also INCOMPATIBLE OPTIONS below.
507507
Instead of using the current time as the committer date, use
508508
the author date of the commit being rebased as the committer
509509
date. This option implies `--force-rebase`.
510+
+
511+
WARNING: The history walking machinery assumes that commits have
512+
non-decreasing commit timestamps. You should consider if you really need
513+
to use this option. Then you should only use this option to override the
514+
committer date when rebasing commits on top of a base which commit is
515+
older (in terms of the commit date) than the oldest commit you are
516+
applying (in terms of the author date).
510517

511518
--ignore-date::
512519
--reset-author-date::

0 commit comments

Comments
 (0)