builtin/refs: add list subcommand
Git's reference management is distributed across multiple commands. As part of an ongoing effort to consolidate and modernize reference handling, introduce a `list` subcommand under the `git refs` umbrella as a replacement for `git for-each-ref`. Implement `cmd_refs_list` by having it call the `for_each_ref_core()` helper function. This helper was factored out of the original `cmd_for_each_ref` in a preceding commit, allowing both commands to share the same core logic as independent peers. Add documentation for the new command. The man page leverages the shared options file, created in a previous commit, by using the AsciiDoc `include::` macro to ensure consistency with git-for-each-ref(1). Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: shejialuo <shejialuo@gmail.com> Mentored-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: Meet Soni <meetsoni3017@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6eeb1c070a
commit
eecccfe98b
@@ -11,6 +11,13 @@ SYNOPSIS
|
|||||||
[synopsis]
|
[synopsis]
|
||||||
git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
|
git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
|
||||||
git refs verify [--strict] [--verbose]
|
git refs verify [--strict] [--verbose]
|
||||||
|
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||||
|
[(--sort=<key>)...] [--format=<format>]
|
||||||
|
[--include-root-refs] [--points-at=<object>]
|
||||||
|
[--merged[=<object>]] [--no-merged[=<object>]]
|
||||||
|
[--contains[=<object>]] [--no-contains[=<object>]]
|
||||||
|
[(--exclude=<pattern>)...] [--start-after=<marker>]
|
||||||
|
[ --stdin | <pattern>... ]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@@ -26,6 +33,11 @@ migrate::
|
|||||||
verify::
|
verify::
|
||||||
Verify reference database consistency.
|
Verify reference database consistency.
|
||||||
|
|
||||||
|
list::
|
||||||
|
List references in the repository with support for filtering,
|
||||||
|
formatting, and sorting. This subcommand is an alias for
|
||||||
|
linkgit:git-for-each-ref[1] and offers identical functionality.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
|
||||||
@@ -57,6 +69,10 @@ The following options are specific to 'git refs verify':
|
|||||||
--verbose::
|
--verbose::
|
||||||
When verifying the reference database consistency, be chatty.
|
When verifying the reference database consistency, be chatty.
|
||||||
|
|
||||||
|
The following options are specific to 'git refs list':
|
||||||
|
|
||||||
|
include::for-each-ref-options.adoc[]
|
||||||
|
|
||||||
KNOWN LIMITATIONS
|
KNOWN LIMITATIONS
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "refs.h"
|
#include "refs.h"
|
||||||
#include "strbuf.h"
|
#include "strbuf.h"
|
||||||
#include "worktree.h"
|
#include "worktree.h"
|
||||||
|
#include "for-each-ref.h"
|
||||||
|
|
||||||
#define REFS_MIGRATE_USAGE \
|
#define REFS_MIGRATE_USAGE \
|
||||||
N_("git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]")
|
N_("git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]")
|
||||||
@@ -101,6 +102,17 @@ static int cmd_refs_verify(int argc, const char **argv, const char *prefix,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmd_refs_list(int argc, const char **argv, const char *prefix,
|
||||||
|
struct repository *repo)
|
||||||
|
{
|
||||||
|
static char const * const refs_list_usage[] = {
|
||||||
|
N_("git refs list " COMMON_USAGE_FOR_EACH_REF),
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
return for_each_ref_core(argc, argv, prefix, repo, refs_list_usage);
|
||||||
|
}
|
||||||
|
|
||||||
int cmd_refs(int argc,
|
int cmd_refs(int argc,
|
||||||
const char **argv,
|
const char **argv,
|
||||||
const char *prefix,
|
const char *prefix,
|
||||||
@@ -109,12 +121,14 @@ int cmd_refs(int argc,
|
|||||||
const char * const refs_usage[] = {
|
const char * const refs_usage[] = {
|
||||||
REFS_MIGRATE_USAGE,
|
REFS_MIGRATE_USAGE,
|
||||||
REFS_VERIFY_USAGE,
|
REFS_VERIFY_USAGE,
|
||||||
|
"git refs list " COMMON_USAGE_FOR_EACH_REF,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
parse_opt_subcommand_fn *fn = NULL;
|
parse_opt_subcommand_fn *fn = NULL;
|
||||||
struct option opts[] = {
|
struct option opts[] = {
|
||||||
OPT_SUBCOMMAND("migrate", &fn, cmd_refs_migrate),
|
OPT_SUBCOMMAND("migrate", &fn, cmd_refs_migrate),
|
||||||
OPT_SUBCOMMAND("verify", &fn, cmd_refs_verify),
|
OPT_SUBCOMMAND("verify", &fn, cmd_refs_verify),
|
||||||
|
OPT_SUBCOMMAND("list", &fn, cmd_refs_list),
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user