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

Re: [PATCH 1/8] am: suppress error output from a conditional

From
Junio C Hamano <gitster@pobox.com>
Date
May 12, 2013, 03:09 UTC
Message-ID
<7vwqr4vqpv.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CALkWK0mtJU_fWK7A2BXN3f5VRT4Qh69PE0nfQaTJ6GU1Z5=wig@mail.gmail.com>
Ramkumar Ramachandra <artagnon@gmail.com> writes:
Show 7 quoted lines
> Junio C Hamano wrote:
>> If you are introducing "dotest exists but next/last may not be
>> present" as a valid new state, it probably should check the presence
>> and/or absence of them explicitly,
>
> Um, a test -f preceding the cat?  Why, when cat implicitly checks
> existence anyway?

With that logic, 'test -d "$dotest"' on the first line would also be redundant, as we read from "$dotest/last" and that will catch an error.

It is more about what is conceptually right. You need to think what the condition _means_.

We protect the "remove $dotest directory" with the precondition you are changing, but what is that precondition really trying to say? If $dotest does not exist, obviously we do not need to remove it, but what is the essence of that sereis of tests?

It is what the comment says:
    "We have finished applying all the patches in them"

Earlier, presense of $dotest _must_ have meant that last and next should exist (otherwise you have a corrupt state and we did want to see error messages), and the check original did was perfectly fine.

Now, a mere presense of $dotest does _not_ mean "we have finished applying all the patches", because sometimes you create it without having anything to put in last or next yet. That is why it starts to make sense to do

        if test -d "$dotest" &&
           test -f "$dotest/last" &&
           test -f "$dotest/next" &&
           last=$(cat "$dotest/last") &&
           ...
Previous: Ramkumar RamachandraNext: Ramkumar Ramachandra
Message 5 of 18 in “rebase.autostash completed”
  1. 0/8 rebase.autostash completedRamkumar Ramachandra, May 10, 2013
  2. 1/8 am: suppress error output from a conditionalRamkumar Ramachandra, May 10, 2013
  3. Junio C HamanoMay 10, 2013
  4. Ramkumar RamachandraMay 11, 2013
  5. Junio C HamanoMay 12, 2013
  6. 2/8 rebase -i: don't error out if $state_dir already existsRamkumar Ramachandra, May 10, 2013
  7. 3/8 am: tighten a conditional that checks for $dotestRamkumar Ramachandra, May 10, 2013
  8. 4/8 rebase: prepare to do generic housekeepingRamkumar Ramachandra, May 10, 2013
  9. Eric SunshineMay 10, 2013
  10. Junio C HamanoMay 10, 2013
  11. Junio C HamanoMay 10, 2013
  12. Ramkumar RamachandraMay 10, 2013
  13. 5/8 am: return control to caller, for housekeepingRamkumar Ramachandra, May 10, 2013
  14. 6/8 rebase -i: return control to caller, for housekeepingRamkumar Ramachandra, May 10, 2013
  15. 7/8 rebase --merge: return control to caller, for housekeepingRamkumar Ramachandra, May 10, 2013
  16. 8/8 rebase: implement --[no-]autostash and rebase.autostashRamkumar Ramachandra, May 10, 2013
  17. Eric SunshineMay 10, 2013
  18. Junio C HamanoMay 10, 2013

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.