Due to the increasing usage of the ref namespace (e.g. notes, replace) the revision specifier "--all" becomes decreasingly useful. But "something like --all" is needed for getting a quick overview of the development state of a repository. Introduce --lrbranches and --locals specifiers in order to help with that: --lrbranches == HEAD --branches --remotes --locals = HEAD --branches --tags Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> --- Documentation/git-rev-list.txt | 2 ++ Documentation/rev-list-options.txt | 8 ++++++++ builtin/rev-list.c | 2 ++ revision.c | 12 ++++++++++++ t/t6018-rev-list-glob.sh | 12 ++++++++---- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt index 173f3fc..81d67da 100644 --- a/Documentation/git-rev-list.txt +++ b/Documentation/git-rev-list.txt @@ -25,6 +25,8 @@ SYNOPSIS [ \--tags[=pattern] ] [ \--remotes[=pattern] ] [ \--glob=glob-pattern ] + [ \--locals ] + [ \--lrbranches ] [ \--stdin ] [ \--quiet ] [ \--topo-order ] diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index b9fb7a8..21c0c93 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -264,6 +264,14 @@ endif::git-rev-list[] is automatically prepended if missing. If pattern lacks '?', '*', or '[', '/*' at the end is implied. +--locals:: + This is an abbreviation for `HEAD --branches --tags`, i.e. all + local refs. + +--lrbranches:: + + This is an abbreviation for `HEAD --branches --remotes`, i.e. all + local and remote branch heads plus HEAD. ifndef::git-rev-list[] --bisect:: diff --git a/builtin/rev-list.c b/builtin/rev-list.c index 51ceb19..50664b7 100644 --- a/builtin/rev-list.c +++ b/builtin/rev-list.c @@ -20,7 +20,9 @@ static const char rev_list_usage[] = " --all\n" " --branches\n" " --tags\n" +" --locals\n" " --remotes\n" +" --lrbranches\n" " --stdin\n" " --quiet\n" " ordering output:\n" diff --git a/revision.c b/revision.c index f4b8b38..5067fce 100644 --- a/revision.c +++ b/revision.c @@ -1399,10 +1399,22 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s handle_refs(revs, flags, for_each_tag_ref); continue; } + if (!strcmp(arg, "--locals")) { + handle_refs(revs, flags, for_each_branch_ref); + handle_refs(revs, flags, for_each_tag_ref); + handle_refs(revs, flags, head_ref); + continue; + } if (!strcmp(arg, "--remotes")) { handle_refs(revs, flags, for_each_remote_ref); continue; } + if (!strcmp(arg, "--lrbranches")) { + handle_refs(revs, flags, for_each_remote_ref); + handle_refs(revs, flags, for_each_branch_ref); + handle_refs(revs, flags, head_ref); + continue; + } if (!prefixcmp(arg, "--glob=")) { struct all_refs_cb cb; init_all_refs_cb(&cb, revs, flags); diff --git a/t/t6018-rev-list-glob.sh b/t/t6018-rev-list-glob.sh index a1320aa..fd77fe5 100755 --- a/t/t6018-rev-list-glob.sh +++ b/t/t6018-rev-list-glob.sh @@ -207,15 +207,19 @@ test_expect_success 'rev-list --remotes=foo' ' ' -test_expect_success 'rev-list --locals' ' +test_expect_success 'rev-list --no-walk --locals' ' - compare rev-list "master subspace-x someref other/three subspace/one subspace/two" "--localss" + compare "rev-list --no-walk" \ + "master subspace-x someref other/three subspace/one subspace/two foo/bar" \ + "--locals" ' -test_expect_success 'rev-list --lrbranches' ' +test_expect_success 'rev-list --no-walk --lrbranches' ' - compare rev-list "master subspace-x someref other/three subspace/one subspace/two" "--lrbranches" + compare "rev-list --no-walk" \ + "master subspace-x someref other/three subspace/one subspace/two foo/baz" \ + "--lrbranches" ' -- 1.7.1.240.geeaa4d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html