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

Re: [PATCH v2 5/5] ls-remote: add support for showing symrefs

From
Thomas Gummerer <t.gummerer@gmail.com>
Date
Jan 18, 2016, 22:09 UTC
Message-ID
<20160118220913.GI7100@hank>
In-Reply-To
<20160118195159.GD1009@sigill.intra.peff.net>
On 01/18, Jeff King wrote:
Show 28 quoted lines
> On Mon, Jan 18, 2016 at 05:57:18PM +0100, Thomas Gummerer wrote:
>
> > While there, replace a literal tab in the format string with \t to make
> > it more obvious to the reader.
>
> Heh, I didn't notice in the first review that you actually inherited
> that from the original. Definitely worth doing, IMHO.
>
> > @@ -101,7 +104,9 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
> >  			continue;
> >  		if (!tail_match(pattern, ref->name))
> >  			continue;
> > -		printf("%s	%s\n", oid_to_hex(&ref->old_oid), ref->name);
> > +		if (symrefs && ref->symref)
> > +			printf("ref: %s\t%s\n", ref->symref, ref->name);
> > +		printf("%s\t%s\n", oid_to_hex(&ref->old_oid), ref->name);
> >  		status = 0; /* we found something */
>
> Yeah, this looks like the right logic to me.
>
> > +test_expect_success 'ls-remote --symrefs' '
> > +	cat >expect <<-EOF &&
>
> Please use "<<-\EOF" here (and in the test below) to prevent
> interpolation. It's not wrong in your case, but it's easier for a reader
> (or somebody who later modifies the test) to not have to wonder what you
> were expecting to be expanded. So as a general style, we quote our
> here-doc markers.
Will do, thanks!
Show 61 quoted lines
> > +	ref: refs/heads/master	HEAD
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	HEAD
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/heads/master
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/remotes/origin/HEAD
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/remotes/origin/master
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/tags/mark
> > +	EOF
> > +	git ls-remote --symrefs >actual &&
> > +	test_cmp expect actual
> > +'
>
> This test covers "symrefs, along with everything". And this one:
>
> > +test_expect_success 'ls-remote with filtered symrefs' '
> > +	cat >expect <<-EOF &&
> > +	ref: refs/heads/master	HEAD
> > +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	HEAD
> > +	EOF
> > +	git ls-remote --symrefs . HEAD >actual &&
> > +	test_cmp expect actual
> > +'
>
> covers symrefs plus a refname filter. It would be nice to also test that
> "git ls-remote --symrefs --heads" shows "refs/heads/foo" as a symref.
> But that cannot work with the current code, because upload-pack only
> tells us about the symref HEAD, and not any others.
>
> This may change in the future, though. I'm not sure if it's worth
> squashing in the expect_failure test below. The "negative" one below
> that does tell us something, though it is somewhat redundant (it does
> catch the "always show symrefs" logic from your original version, but
> it seems unlikely that would pop up as a regression).
>
> ---
> diff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh
> index 3edbc9e..92fc7e9 100755
> --- a/t/t5512-ls-remote.sh
> +++ b/t/t5512-ls-remote.sh
> @@ -176,7 +176,7 @@ test_expect_success 'ls-remote --symrefs' '
>  	test_cmp expect actual
>  '
>
> -test_expect_success 'ls-remote with filtered symrefs' '
> +test_expect_success 'ls-remote with filtered symrefs (refname)' '
>  	cat >expect <<-EOF &&
>  	ref: refs/heads/master	HEAD
>  	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	HEAD
> @@ -185,4 +185,27 @@ test_expect_success 'ls-remote with filtered symrefs' '
>  	test_cmp expect actual
>  '
>
> +test_expect_failure 'ls-remote with filtered symrefs (--heads)' '
> +	git symbolic-ref refs/heads/foo refs/tags/mark &&
> +	cat >expect <<-\EOF &&
> +	ref: refs/heads/bar	refs/tags/mark
> +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/heads/foo
> +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/heads/master
> +	EOF
> +	git ls-remote --symrefs --heads . >actual &&
> +	test_cmp expect actual
> +'

I'm a bit confused by this. Shouldn't the "ref: refs/heads/bar refs/tags/mark" line only show up when we use --tags, not --heads? Also should refs/heads/bar be refs/heads/foo?

Show 15 quoted lines
> +
> +test_expect_success 'ls-remote --symrefs omits filtered-out matches' '
> +	cat >expect <<-\EOF &&
> +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/heads/foo
> +	1bd44cb9d13204b0fe1958db0082f5028a16eb3a	refs/heads/master
> +	EOF
> +	git ls-remote --symrefs --heads . >actual &&
> +	test_cmp expect actual &&
> +	git ls-remote --symrefs . "refs/heads/*" >actual &&
> +	test_cmp expect actual
> +'
> +
> +
>  test_done
>

-- Thomas

Previous: Thomas GummererNext: Jeff King
Message 32 of 44 in “ls-remote: introduce symref argument”
  1. 0/4 ls-remote: introduce symref argumentThomas Gummerer, Jan 17, 2016
  2. 1/4 ls-remote: document --quiet optionThomas Gummerer, Jan 17, 2016
  3. Jeff KingJan 17, 2016
  4. Thomas GummererJan 17, 2016
  5. 2/4 ls-remote: fix synopsisThomas Gummerer, Jan 17, 2016
  6. 3/4 ls-remote: use parse-options apiThomas Gummerer, Jan 17, 2016
  7. Jeff KingJan 17, 2016
  8. Thomas GummererJan 17, 2016
  9. 4/4 builtin/ls-remote: add support for showing symrefsThomas Gummerer, Jan 17, 2016
  10. Thomas GummererJan 17, 2016
  11. 4/4 ls-remote: add support for showing symrefsThomas Gummerer, Jan 17, 2016
  12. Jeff KingJan 17, 2016
  13. Thomas GummererJan 17, 2016
  14. Junio C HamanoJan 17, 2016
  15. Thomas GummererJan 17, 2016
  16. Jeff KingJan 17, 2016
  17. Thomas GummererJan 17, 2016
  18. Junio C HamanoJan 17, 2016
  19. 0/5 ls-remote: introduce symrefs argumentThomas Gummerer, Jan 18, 2016
  20. 1/5 ls-remote: document --quiet optionThomas Gummerer, Jan 18, 2016
  21. 2/5 ls-remote: document --refs optionThomas Gummerer, Jan 18, 2016
  22. Jeff KingJan 18, 2016
  23. Junio C HamanoJan 18, 2016
  24. Thomas GummererJan 18, 2016
  25. 3/5 ls-remote: fix synopsisThomas Gummerer, Jan 18, 2016
  26. 4/5 ls-remote: use parse-options apiThomas Gummerer, Jan 18, 2016
  27. Jeff KingJan 18, 2016
  28. 5/5 ls-remote: add support for showing symrefsThomas Gummerer, Jan 18, 2016
  29. Jeff KingJan 18, 2016
  30. Jeff KingJan 18, 2016
  31. Thomas GummererJan 18, 2016
  32. Thomas GummererJan 18, 2016
  33. Jeff KingJan 18, 2016
  34. Thomas GummererJan 18, 2016
  35. Junio C HamanoJan 18, 2016
  36. Thomas GummererJan 18, 2016
  37. Jeff KingJan 18, 2016
  38. 0/5 ls-remote: introduce symref argumentThomas Gummerer, Jan 18, 2016
  39. 1/5 ls-remote: document --quiet optionThomas Gummerer, Jan 18, 2016
  40. 2/5 ls-remote: document --refs optionThomas Gummerer, Jan 18, 2016
  41. 3/5 ls-remote: fix synopsisThomas Gummerer, Jan 18, 2016
  42. 4/5 ls-remote: use parse-options apiThomas Gummerer, Jan 18, 2016
  43. 5/5 ls-remote: add support for showing symrefsThomas Gummerer, Jan 18, 2016
  44. Junio C HamanoJan 19, 2016

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.