git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Problems with ra/rebase-i-more-options - should we revert it?

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Jan 12, 2020, 17:31 UTC
Message-ID
<089637d7-b4b6-f6ba-cce1-29e22ce47521@gmail.com>
In-Reply-To
<f2fe7437-8a48-3315-4d3f-8d51fe4bb8f1@gmail.com>
On 12/01/2020 16:12, Phillip Wood wrote:
Show 5 quoted lines
> I'm concerned that there are some bugs in this series and think
> it may be best to revert it before releasing 2.25.0. Jonathan
> Nieder posted a bug report on Friday [1] which I think is caused
> by this series. While trying to reproduce Jonathan's bug I came
> up with the test below which fails, but not in the same way.

Doh I forgot to add --committer-date-is-author-date to the rebase command line in that test. It passes with that added - how embarrassing. However it does appear that it prefixes the date in GIT_COMMITTER_DATE with @@ rather than @. I think (though am not completely certain yet) the reason the test still passes is that the date has more than 8 digits so although match_object_header_date() fails because of the '@@' match_digit() succeeds once the loop in parse_date_basic() strips that prefix. Jonathan's test date only has 7 digits so match_digit() does not treat it as a number of seconds since the start of the epoch and fails to parse it. The fix for the @@ is quite simple, the date we read from the author script already has an @ so we don't need to add another. The diff below shows a basic fix but we should get rid of datebuf altogether as we don't need it. I need a break now I'll try and put a patch together later in the week if no one else has by then.

Best Wishes
Phillip
--- >8 ---
diff --git a/sequencer.c b/sequencer.c
index 763ccbbc45..22a38de47b 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -988,7 +988,7 @@ static int run_git_commit(struct repository *r,
                if (!date)
                        return -1;
 
-               strbuf_addf(&datebuf, "@%s", date);
+               strbuf_addf(&datebuf, "%s", date);
                res = setenv("GIT_COMMITTER_DATE",
                             opts->ignore_date ? "" : datebuf.buf, 1);
 
> The
> test coverage of this series has always been pretty poor and I
> think it needs improving for us to have confidence in it. I'm
> also concerned that at least one of the
> tests ('--committer-date-is-author-date works with rebase -r')
> does not detect failures properly in the code below
> 
> 	while read HASH
> 	do
> 		git show $HASH --pretty="format:%ai" >authortime
> 		git show $HASH --pretty="format:%ci" >committertime
> 		test_cmp authortime committertime
> 	done <rev_list
> 
> 
> Best Wishes
> 
> Phillip
> 
> [1] https://lore.kernel.org/git/20200110231436.GA24315@google.com/
> 
> --- >8 ---
> diff --git a/t/t3433-rebase-options-compatibility.sh b/t/t3433-rebase-options-compatibility.sh
> index 5166f158dd..c81e1d7167 100755
> --- a/t/t3433-rebase-options-compatibility.sh
> +++ b/t/t3433-rebase-options-compatibility.sh
> @@ -6,6 +6,7 @@
>   test_description='tests to ensure compatibility between am and interactive backends'
>   
>   . ./test-lib.sh
> +. "$TEST_DIRECTORY"/lib-rebase.sh
>   
>   GIT_AUTHOR_DATE="1999-04-02T08:03:20+05:30"
>   export GIT_AUTHOR_DATE
> @@ -99,6 +100,22 @@ test_expect_success '--committer-date-is-author-date works with rebase -r' '
>          done <rev_list
>   '
>   
> +test_expect_success '--committer-date-is-author-date works when committing conflict resolution' '
> +       git checkout commit2 &&
> +       (
> +               set_fake_editor &&
> +               FAKE_LINES=2 &&
> +               export FAKE_LINES &&
> +               test_must_fail git rebase -i HEAD^^
> +       ) &&
> +       echo resolved > foo &&
> +       git add foo &&
> +       git rebase --continue &&
> +       git log -1 --format=%at commit2 >expect &&
> +       git log -1 --format=%ct HEAD >actual &&
> +       test_cmp expect actual
> +'
> +
>   # Checking for +0000 in author time is enough since default
>   # timezone is UTC, but the timezone used while committing
>   # sets to +0530.
> 
Previous: Phillip WoodNext: Johannes Schindelin
Message 2 of 14 in “Problems with ra/rebase-i-more-options - should we revert it?”
  1. Phillip WoodJan 12, 2020
  2. Phillip WoodJan 12, 2020
  3. Johannes SchindelinJan 12, 2020
  4. Phillip WoodJan 17, 2020
  5. Johannes SchindelinJan 20, 2020
  6. Junio C HamanoJan 12, 2020
  7. Junio C HamanoJan 13, 2020
  8. Junio C HamanoJan 13, 2020
  9. "rebase -ri" (was Re: Problems with ra/rebase-i-more-options - should we revert it?)Junio C Hamano, Jan 13, 2020
  10. Johannes SchindelinJan 15, 2020
  11. Junio C HamanoJan 15, 2020
  12. Rebasing evil merges with --rebase-mergesIgor Djordjevic, Jan 15, 2020
  13. Sergey OrganovJan 16, 2020
  14. Junio C HamanoJan 15, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.