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

Re: What's cooking in git.git (Feb 2014, #06; Wed, 19)

From
Torsten Bögershausen <tboegi@web.de>
Date
Feb 21, 2014, 15:46 UTC
Message-ID
<530774D5.8040101@web.de>
In-Reply-To
<FB0B19C8-65BF-49CF-8EE4-5B9D55BBCE7C@quendi.de>
On 2014-02-21 10.55, Max Horn wrote:
Show 50 quoted lines
> 
> On 20.02.2014, at 20:22, Junio C Hamano <gitster@pobox.com> wrote:
> 
>> Max Horn <max@quendi.de> writes:
>>
>>> On 19.02.2014, at 22:41, Junio C Hamano <gitster@pobox.com> wrote:
>>>
>>>> * fc/transport-helper-fixes (2013-12-09) 6 commits
>>>> - remote-bzr: support the new 'force' option
>>>> - test-hg.sh: tests are now expected to pass
>>>> - transport-helper: check for 'forced update' message
>>>> - transport-helper: add 'force' to 'export' helpers
>>>> - transport-helper: don't update refs in dry-run
>>>> - transport-helper: mismerge fix
>>>>
>>>> Reported to break t5541, and has been stalled for a while without
>>>> fixes.
>>> ...
>>> Since I somewhat care about transport-helpers, I had a closer look
>>> at this failure.
>>
>> Thanks.  Let's keep it a bit longer and see how your new
>> investigation (and possibly help from others) develops to a
>> solution.
> 
> So I had a closer look, and I now believe to now understand what the right fix is. Simply dropping 
>   transport-helper: check for 'forced update' message
> would be wrong, because it would cause the contrib/remote-helpers test cases to fail -- when I tested last night, I forgot that I had to run those separately. Silly me!
> 
> Indeed, these tests include a test with a force push, and trigger the code path added in that commit. The remaining problem then is that the new code should be changed to only tell git when a remote-helper signals a forced update; but it should not incorrectly reset the forced_update flag to 0 if git already considers the update to be forced.
> 
> In other words, the following patch should be the correct solution, as far as I can tell. I verified that it fixes t5541 and causes no regressions in the contrib/remote-helpers test suite.
> 
> -- 8< --
> diff --git a/transport-helper.c b/transport-helper.c
> index fa7c608..86e1679 100644
> --- a/transport-helper.c
> +++ b/transport-helper.c
> @@ -734,7 +734,7 @@ static int push_update_ref_status(struct strbuf *buf,
>         }
> 
>         (*ref)->status = status;
> -       (*ref)->forced_update = forced;
> +       (*ref)->forced_update |= forced;
>         (*ref)->remote_status = msg;
>         return !(status == REF_STATUS_OK);
>  }
> -- 8< --
> 
> 
Ack from my side:

There are 2 fields: ref->force and ref->forced_update.

forced_update is set in set_ref_status_for_push() in remote.c:
		if (!force_ref_update)
			ref->status = reject_reason;
		else if (reject_reason)
			ref->forced_update = 1;
		}
And transport-helper.c sets it to 0 even if it had been 1, which is wrong.
Previous: Max HornNext: Junio C Hamano
Message 5 of 11 in “What's cooking in git.git (Feb 2014, #06; Wed, 19)”
  1. Junio C HamanoFeb 19, 2014
  2. Max HornFeb 20, 2014
  3. Junio C HamanoFeb 20, 2014
  4. Max HornFeb 21, 2014
  5. Torsten BögershausenFeb 21, 2014
  6. Junio C HamanoFeb 21, 2014
  7. Max HornFeb 22, 2014
  8. Junio C HamanoFeb 24, 2014
  9. Junio C HamanoFeb 24, 2014
  10. Max HornFeb 24, 2014
  11. Ramkumar RamachandraFeb 21, 2014

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.