git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stefano Lattarini <stefano.lattarini@gmail.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Jeff King <peff@peff.net>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Elijah Newren <newren@gmail.com>,
	Ilari Liusvaara <ilari.liusvaara@elisanet.fi>,
	Sverre Rabbelier <srabbelier@gmail.com>
Subject: Re: [PATCH v4 04/14] Add new simplified git-remote-testgit
Date: Fri, 02 Nov 2012 14:55:41 +0100	[thread overview]
Message-ID: <5093D0DD.3050801@gmail.com> (raw)
In-Reply-To: <1351821738-17526-5-git-send-email-felipe.contreras@gmail.com>

On 11/02/2012 03:02 AM, Felipe Contreras wrote:
> It's way simpler. It exerceises the same features of remote helpers.
> It's easy to read and understand. It doesn't depend on python.
> 
> It does _not_ exercise the python remote helper framework; there's
> another tool and another test for that.
> 
> For now let's just copy the old remote-helpers test script, although
> some of those tests don't make sense for this testgit (they still pass).
> 
> In addition, this script would be able to test other features not
> currently being tested.
> 
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  Documentation/git-remote-testgit.txt |   2 +-
>  git-remote-testgit                   |  62 ++++++++++++++++
>  t/t5801-remote-helpers.sh            | 134 +++++++++++++++++++++++++++++++++++
>  3 files changed, 197 insertions(+), 1 deletion(-)
>  create mode 100755 git-remote-testgit
>  create mode 100755 t/t5801-remote-helpers.sh
> 
> diff --git a/git-remote-testgit b/git-remote-testgit
> new file mode 100755
> index 0000000..6650402
> --- /dev/null
> +++ b/git-remote-testgit
> @@ -0,0 +1,62 @@
> +#!/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.

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.

> +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.

> +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

> +while read line; do
> +    case "$line" in
>
Useless double quoting (my previous observation about Git coding
guidelines applies here as well, of course).

> +    capabilities)
> +        echo 'import'
> +        echo 'export'
> +        echo "refspec $refspec"
> +        echo "*import-marks $gitmarks"
> +        echo "*export-marks $gitmarks"
> +        echo
> +        ;;
> +    list)
> +        git for-each-ref --format='? %(refname)' 'refs/heads/'
> +        head=$(git symbolic-ref HEAD)
> +        echo "@$head HEAD"
> +        echo
> +        ;;
> +    import*)
> +        # read all import lines
> +        while true; do
> +            ref="${line#* }"
> +            refs="$refs $ref"
> +            read line
> +            test "${line%% *}" != "import" && break
> +        done
> +
> +        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 | \

> +            sed -e "s#refs/heads/#${prefix}/heads/#g"
> +        ;;
> +    export)
> +        git fast-import --{import,export}-marks="$testgitmarks" --quiet
>
Here too.

> +        echo
> +        ;;
> +    '')
> +        exit
>
I'd put an explicit exit status here, for clarity (this is a matter
of personal preference, so feel free to disregard this nit).

> +        ;;
> +    esac
> +done

Regards,
  Stefano

  reply	other threads:[~2012-11-02 13:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-02  2:02 [PATCH v4 00/14] fast-export and remote-testgit improvements Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 01/14] fast-export: avoid importing blob marks Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 02/14] remote-testgit: fix direction of marks Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 03/14] Rename git-remote-testgit to git-remote-testpy Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 04/14] Add new simplified git-remote-testgit Felipe Contreras
2012-11-02 13:55   ` Stefano Lattarini [this message]
2012-11-02 14:00     ` Jeff King
2012-11-02 15:42     ` Felipe Contreras
2012-11-02 16:03       ` Stefano Lattarini
2012-11-02 16:16         ` Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 05/14] remote-testgit: get rid of non-local functionality Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 06/14] remote-testgit: remove irrelevant test Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 07/14] remote-testgit: cleanup tests Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 08/14] remote-testgit: exercise more features Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 09/14] remote-testgit: report success after an import Felipe Contreras
2012-11-02 13:58   ` Stefano Lattarini
2012-11-02 15:46     ` Felipe Contreras
2012-11-02 16:08       ` Stefano Lattarini
2012-11-02 16:19         ` Felipe Contreras
2012-11-02 16:23           ` Stefano Lattarini
2012-11-02 17:19           ` Jeff King
2012-11-02  2:02 ` [PATCH v4 10/14] remote-testgit: make clear the 'done' feature Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 11/14] fast-export: trivial cleanup Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 12/14] fast-export: fix comparison in tests Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 13/14] fast-export: make sure updated refs get updated Felipe Contreras
2012-11-02  2:02 ` [PATCH v4 14/14] fast-export: don't handle uninteresting refs Felipe Contreras

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5093D0DD.3050801@gmail.com \
    --to=stefano.lattarini@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ilari.liusvaara@elisanet.fi \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=srabbelier@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).