Re: [PATCH] stripspace: allow -s/-c outside git repository
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 18, 2018, 11:58 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1812181256290.43@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20181217165957.GA60293@google.com>
Hi Jonathan,
On Mon, 17 Dec 2018, Jonathan Nieder wrote:
Show 15 quoted lines
> v2.11.0-rc3~3^2~1 (stripspace: respect repository config, 2016-11-21) > improved stripspace --strip-comments / --comentlines by teaching them > to read repository config, but it went a little too far: when running > stripspace outside any repository, the result is > > $ git stripspace --strip-comments <test-input > fatal: not a git repository (or any parent up to mount point /tmp) > > That makes experimenting with the stripspace command unnecessarily > fussy. Fix it by discovering the git directory gently, as intended > all along. > > Reported-by: Han-Wen Nienhuys <hanwen@google.com> > Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> > ---
ACK!
Show 22 quoted lines
> builtin/stripspace.c | 3 ++-
> t/t0030-stripspace.sh | 12 +++++++++---
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/stripspace.c b/builtin/stripspace.c
> index bdf0328869..be33eb83c1 100644
> --- a/builtin/stripspace.c
> +++ b/builtin/stripspace.c
> @@ -30,6 +30,7 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix)
> {
> struct strbuf buf = STRBUF_INIT;
> enum stripspace_mode mode = STRIP_DEFAULT;
> + int nongit;
>
> const struct option options[] = {
> OPT_CMDMODE('s', "strip-comments", &mode,
> @@ -46,7 +47,7 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix)
> usage_with_options(stripspace_usage, options);
>
> if (mode == STRIP_COMMENTS || mode == COMMENT_LINES) {
> - setup_git_directory_gently(NULL);
> + setup_git_directory_gently(&nongit);What a fool I was to believe that _gently() was always gentle...
Show 19 quoted lines
> git_config(git_default_config, NULL); > } > > diff --git a/t/t0030-stripspace.sh b/t/t0030-stripspace.sh > index 5ce47e8af5..0c24a0f9a3 100755 > --- a/t/t0030-stripspace.sh > +++ b/t/t0030-stripspace.sh > @@ -430,9 +430,15 @@ test_expect_success '-c with changed comment char' ' > test_expect_success '-c with comment char defined in .git/config' ' > test_config core.commentchar = && > printf "= foo\n" >expect && > - printf "foo" | ( > - mkdir sub && cd sub && git stripspace -c > - ) >actual && > + rm -fr sub && > + mkdir sub && > + printf "foo" | git -C sub stripspace -c >actual && > + test_cmp expect actual > +'
Sneaky. But I like it.
Thanks, Dscho
Show 11 quoted lines
> + > +test_expect_success '-c outside git repository' ' > + printf "# foo\n" >expect && > + printf "foo" | nongit git stripspace -c >actual && > test_cmp expect actual > ' > > -- > 2.20.0.405.gbc1bbc6f85 > >