Browse Source

remote show: do not show symbolic refs

For symbolic refs, a sane notion of being "stale" is that the ref
they point to no longer exists.  Since this is checked already,
"remote show" does not need to show them at all.

Incidentally, this fixes the issue that "HEAD" was shown as a
stale ref by "remote show" in a freshly cloned repository.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Johannes Schindelin 17 years ago committed by Junio C Hamano
parent
commit
740fdd27f0
  1. 5
      builtin-remote.c
  2. 10
      t/t5505-remote.sh

5
builtin-remote.c

@ -207,7 +207,10 @@ static int handle_one_branch(const char *refname, @@ -207,7 +207,10 @@ static int handle_one_branch(const char *refname,
if (!remote_find_tracking(states->remote, &refspec)) {
struct path_list_item *item;
const char *name = skip_prefix(refspec.src, "refs/heads/");
if (unsorted_path_list_has_path(&states->tracked, name) ||
/* symbolic refs pointing nowhere were handled already */
if ((flags & REF_ISSYMREF) ||
unsorted_path_list_has_path(&states->tracked,
name) ||
unsorted_path_list_has_path(&states->new,
name))
return 0;

10
t/t5505-remote.sh

@ -237,4 +237,14 @@ test_expect_success 'update default (overridden, with funny whitespace)' ' @@ -237,4 +237,14 @@ test_expect_success 'update default (overridden, with funny whitespace)' '

'

test_expect_success '"remote show" does not show symbolic refs' '

git clone one three &&
(cd three &&
git remote show origin > output &&
! grep HEAD < output &&
! grep -i stale < output)

'

test_done

Loading…
Cancel
Save