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, 15:42 UTC
Message-ID
<CAMP44s0n_O-7j329WyTxsWgVbCV2mEAnPG-WQeWBFdmHdfOjnQ@mail.gmail.com>
In-Reply-To
<5093D0DD.3050801@gmail.com>

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

Show 6 quoted lines
>> +#!/bin/bash
>>
> I think git can't assume the existence of bash unconditionally, neither
> in its scripts, nor in its tests (the exception being the tests on
> bash completion, of course).  This script probably need to be re-written
> to be a valid POSIX shell script.

Well, this is a _reference_ script, and that is used only for testing purposes. The test itself can be like the bash completion tests, and simply be skipped.

The reason I chose bash is because associative arrays, which you see in a later patch.

Show 15 quoted lines
> It almost is, anyway, apart from the nits below ...
>
>> +# Copyright (c) 2012 Felipe Contreras
>> +
>> +alias="$1"
>>
> Just FYI: the double quoting here (and in several variable assignments
> below) is redundant.  You can portably write it as:
>
>     alias=$1
>
> and still be safe in the face of spaces and metacharacters in $1.
> I'm not sure whether the Git coding guidelines suggest the use of
> quoting in this situation though; if this is the case, feel free
> to disregard my observation.
What happens when you call this with:
 ./script "alias with spaces"
Show 19 quoted lines
>> +url="$2"
>> +
>> +# huh?
>> +url="${url#file://}"
>> +
>> +dir="$GIT_DIR/testgit/$alias"
>> +prefix="refs/testgit/$alias"
>> +refspec="refs/heads/*:${prefix}/heads/*"
>> +
>> +gitmarks="$dir/git.marks"
>> +testgitmarks="$dir/testgit.marks"
>> +
>> +export GIT_DIR="$url/.git"
>> +
> I believe this should be rewritten as:
>
>   GIT_DIR="$url/.git"; export GIT_DIR
>
> in order to be portable to all the POSIX shells targeted by Git.
_If_ we want this as POSIX, yeah.
Show 13 quoted lines
>> +mkdir -p "$dir"
>> +
>> +test -e "$gitmarks" || echo -n > "$gitmarks"
>> +test -e "$testgitmarks" || echo -n > "$testgitmarks"
>> +
> The '-n' option to echo is not portable.  To create an empty
> file, you can just use
>
>    : > file
>
> or
>
>    true > file
All right, thanks.
Show 5 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? To me it makes sense to quote it.
Show 10 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.
-- 
Felipe Contreras
Previous: Jeff KingNext: Stefano Lattarini
Message 8 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.