Add "--branches", "--tags" and "--remotes" options to git-rev-parse.

"git branch" uses "rev-parse --all" and becomes much too slow when
there are many tags (it scans all refs).  Use the new "--branches"
option of rev-parse to speed things up.

Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Sean
2006-05-13 21:43:00 -04:00
committed by Junio C Hamano
parent 975bf9cf5a
commit a62be77f5e
5 changed files with 48 additions and 7 deletions

View File

@ -36,6 +36,7 @@ static int is_rev_argument(const char *arg)
"--all",
"--bisect",
"--dense",
"--branches",
"--header",
"--max-age=",
"--max-count=",
@ -45,7 +46,9 @@ static int is_rev_argument(const char *arg)
"--objects-edge",
"--parents",
"--pretty",
"--remotes",
"--sparse",
"--tags",
"--topo-order",
"--date-order",
"--unpacked",
@ -165,7 +168,7 @@ int main(int argc, char **argv)
int i, as_is = 0, verify = 0;
unsigned char sha1[20];
const char *prefix = setup_git_directory();
git_config(git_default_config);
for (i = 1; i < argc; i++) {
@ -255,6 +258,18 @@ int main(int argc, char **argv)
for_each_ref(show_reference);
continue;
}
if (!strcmp(arg, "--branches")) {
for_each_branch_ref(show_reference);
continue;
}
if (!strcmp(arg, "--tags")) {
for_each_tag_ref(show_reference);
continue;
}
if (!strcmp(arg, "--remotes")) {
for_each_remote_ref(show_reference);
continue;
}
if (!strcmp(arg, "--show-prefix")) {
if (prefix)
puts(prefix);