Skip to content

Commit

Permalink
builtin-remote: Show push urls as well
Browse files Browse the repository at this point in the history
Teach builtin remote to show push urls also when asked to
"show" a specific remote.

This improves upon the standard display mode: multiple specified "url"s
mean that the first one is for fetching, all are used for pushing. We
make this clearer now by displaying the first one prefixed with "Fetch
URL", and all "url"s (or, if present, all "pushurl"s) prefixed with
"Push  URL".

Example with "one" having one url, "two" two urls, "three" one url and
one pushurl (URL part only):

* remote one
  Fetch URL: hostone.com:/somepath/repoone.git
  Push  URL: hostone.com:/somepath/repoone.git
* remote two
  Fetch URL: hosttwo.com:/somepath/repotwo.git
  Push  URL: hosttwo.com:/somepath/repotwo.git
  Push  URL: hosttwobackup.com:/somewheresafe/repotwo.git
* remote three
  Fetch URL: http://hostthree.com/otherpath/repothree.git
  Push  URL: hostthree.com:/pathforpushes/repothree.git

Also, adjust t5505 accordingly and make it test for the new output.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael J Gruber authored and Junio C Hamano committed Jun 13, 2009
1 parent 056724c commit 857f8c3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
20 changes: 15 additions & 5 deletions builtin-remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -1002,15 +1002,25 @@ static int show(int argc, const char **argv)
info.list = &info_list;
for (; argc; argc--, argv++) {
int i;
const char **url;
int url_nr;

get_remote_ref_states(*argv, &states, query_flag);

printf("* remote %s\n", *argv);
if (states.remote->url_nr) {
for (i=0; i < states.remote->url_nr; i++)
printf(" URL: %s\n", states.remote->url[i]);
} else
printf(" URL: %s\n", "(no URL)");
printf(" Fetch URL: %s\n", states.remote->url_nr > 0 ?
states.remote->url[0] : "(no URL)");
if (states.remote->pushurl_nr) {
url = states.remote->pushurl;
url_nr = states.remote->pushurl_nr;
} else {
url = states.remote->url;
url_nr = states.remote->url_nr;
}
for (i=0; i < url_nr; i++)
printf(" Push URL: %s\n", url[i]);
if (!i)
printf(" Push URL: %s\n", "(no URL)");
if (no_query)
printf(" HEAD branch: (not queried)\n");
else if (!states.heads.nr)
Expand Down
10 changes: 7 additions & 3 deletions t/t5505-remote.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ EOF

cat > test/expect << EOF
* remote origin
URL: $(pwd)/one
Fetch URL: $(pwd)/one
Push URL: $(pwd)/one
HEAD branch: master
Remote branches:
master new (next fetch will store in remotes/origin)
Expand All @@ -151,7 +152,8 @@ cat > test/expect << EOF
master pushes to master (local out of date)
master pushes to upstream (create)
* remote two
URL: ../two
Fetch URL: ../two
Push URL: ../three
HEAD branch (remote HEAD is ambiguous, may be one of the following):
another
master
Expand All @@ -173,6 +175,7 @@ test_expect_success 'show' '
git branch --track rebase origin/master &&
git branch -d -r origin/master &&
git config --add remote.two.url ../two &&
git config --add remote.two.pushurl ../three &&
git config branch.rebase.rebase true &&
git config branch.octopus.merge "topic-a topic-b topic-c" &&
(cd ../one &&
Expand All @@ -191,7 +194,8 @@ test_expect_success 'show' '

cat > test/expect << EOF
* remote origin
URL: $(pwd)/one
Fetch URL: $(pwd)/one
Push URL: $(pwd)/one
HEAD branch: (not queried)
Remote branches: (status not queried)
master
Expand Down

0 comments on commit 857f8c3

Please sign in to comment.