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

Re: [PATCH v4 04/14] Add new simplified git-remote-testgit

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Nov 2, 2012, 16:16 UTC
Message-ID
<CAMP44s38oBadxCew+mWzQJG1o1g++Pi4G50FuHzRO-c1sAk53Q@mail.gmail.com>
In-Reply-To
<5093EEB4.3040402@gmail.com>

On Fri, Nov 2, 2012 at 5:03 PM, Stefano Lattarini <stefano.lattarini@gmail.com> wrote:

> On 11/02/2012 04:42 PM, Felipe Contreras wrote:
Show 11 quoted lines
>> What happens when you call this with:
>>
>>  ./script "alias with spaces"
>>
> '$alias' will correctly expand to "alias with spaces".  Try out:
>
>   $ sh -c 'alias=$1; echo "$alias"' dummy '1   2*3'
>   1   2*3
>
> This works consistently with every known shell (even non-POSIX
> relics like Solaris /bin/sh).
All right.
Show 13 quoted lines
>> _If_ we want this as POSIX, yeah.
>>
> Why don't we?  Why add an extra requirement for a test that
>
>  1. can be easily written in POSIX shell, and
>  2. tests a feature that doesn't require bash to work (unless
>     I'm sorely mistaken, that is)?
>
> Honest question.  But of course, if the Git active contributors
> deem the extra requirement (which is not an invasive one, given
> how often bash is installed even on non-Linux systems) acceptable
> in order to have the test case simpler and clearer, feel free to
> disregard all my observations in this thread.

Because the code will be more complicated. Most of the changes required are relatively small, so it's not a big issue, but I would like to see how you replace the code that uses associative arrays. I don't know know of a clean, simple way to do it in POSIX. If you can find one, I don't see any strong reason to use bash.

Show 12 quoted lines
>>>> +while read line; do
>>>> +    case "$line" in
>>>>
>>> Useless double quoting (my previous observation about Git coding
>>> guidelines applies here as well, of course).
>>
>> What if line has multiple spaces?
>>
> Still no problem, as in the case of the 'alias=$1' assignment before:
>
>   $ sh -c 'case $1 in *x"  "x*) echo ok;; *) exit 1;; esac' dummy 'x  x'
>   ok
All right.
Show 18 quoted lines
>>>> +        echo "feature import-marks=$gitmarks"
>>>> +        echo "feature export-marks=$gitmarks"
>>>> +        git fast-export --use-done-feature --{import,export}-marks="$testgitmarks" $refs | \
>>>>
>>> Better avoid the tricky {foo,bar} bashism:
>>>
>>>     git fast-export --use-done-feature \
>>>                     --import-marks="$testgitmarks" \
>>>                     --export-marks="$testgitmarks" \
>>>                     $refs | \
>>
>> If that's what we want, yeah.
>>
> Honestly, I find my longer-and-more-explicit version clearer, even
> if you can assume bash for your script.  But that's a matter of
> personal preference (sorry for not stating that right away), so
> feel free to ignore it if you decide to keep the bash requirement
> in the end.

And I prefer the other form. I fact, I would prefer if both tools simply had a --marks option set both, and didn't require the file to be created beforehand. I've _never_ seen a situation where separate marks for import and export made sense. But that's off-topic.

If you find a way to replace the associative arrays code, I have no trouble in switching this to the POSIX version.

Cheers.
-- 
Felipe Contreras
Previous: Stefano LattariniNext: Felipe Contreras
Message 10 of 26 in “fast-export and remote-testgit improvements”
  1. 00/14 fast-export and remote-testgit improvementsFelipe Contreras, Nov 2, 2012
  2. 01/14 fast-export: avoid importing blob marksFelipe Contreras, Nov 2, 2012
  3. 02/14 remote-testgit: fix direction of marksFelipe Contreras, Nov 2, 2012
  4. 03/14 Rename git-remote-testgit to git-remote-testpyFelipe Contreras, Nov 2, 2012
  5. 04/14 Add new simplified git-remote-testgitFelipe Contreras, Nov 2, 2012
  6. Stefano LattariniNov 2, 2012
  7. Jeff KingNov 2, 2012
  8. Felipe ContrerasNov 2, 2012
  9. Stefano LattariniNov 2, 2012
  10. Felipe ContrerasNov 2, 2012
  11. 05/14 remote-testgit: get rid of non-local functionalityFelipe Contreras, Nov 2, 2012
  12. 06/14 remote-testgit: remove irrelevant testFelipe Contreras, Nov 2, 2012
  13. 07/14 remote-testgit: cleanup testsFelipe Contreras, Nov 2, 2012
  14. 08/14 remote-testgit: exercise more featuresFelipe Contreras, Nov 2, 2012
  15. 09/14 remote-testgit: report success after an importFelipe Contreras, Nov 2, 2012
  16. Stefano LattariniNov 2, 2012
  17. Felipe ContrerasNov 2, 2012
  18. Stefano LattariniNov 2, 2012
  19. Felipe ContrerasNov 2, 2012
  20. Stefano LattariniNov 2, 2012
  21. Jeff KingNov 2, 2012
  22. 10/14 remote-testgit: make clear the 'done' featureFelipe Contreras, Nov 2, 2012
  23. 11/14 fast-export: trivial cleanupFelipe Contreras, Nov 2, 2012
  24. 12/14 fast-export: fix comparison in testsFelipe Contreras, Nov 2, 2012
  25. 13/14 fast-export: make sure updated refs get updatedFelipe Contreras, Nov 2, 2012
  26. 14/14 fast-export: don't handle uninteresting refsFelipe Contreras, Nov 2, 2012

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.