mirror of
https://github.com/git-for-windows/git.git
synced 2026-02-04 03:33:01 -06:00
builtin/stash: factor out revision parsing into a function
We allow several special forms of stash names in this code. In the future, we'll want to allow these same forms without parsing a stash commit, so let's refactor this code out into a function for reuse. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
393bbb21c9
commit
7572e59b3d
@ -169,6 +169,25 @@ static void assert_stash_like(struct stash_info *info, const char *revision)
|
||||
die(_("'%s' is not a stash-like commit"), revision);
|
||||
}
|
||||
|
||||
static int parse_stash_revision(struct strbuf *revision, const char *commit, int quiet)
|
||||
{
|
||||
strbuf_reset(revision);
|
||||
if (!commit) {
|
||||
if (!refs_ref_exists(get_main_ref_store(the_repository), ref_stash)) {
|
||||
if (!quiet)
|
||||
fprintf_ln(stderr, _("No stash entries found."));
|
||||
return -1;
|
||||
}
|
||||
|
||||
strbuf_addf(revision, "%s@{0}", ref_stash);
|
||||
} else if (strspn(commit, "0123456789") == strlen(commit)) {
|
||||
strbuf_addf(revision, "%s@{%s}", ref_stash, commit);
|
||||
} else {
|
||||
strbuf_addstr(revision, commit);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int get_stash_info(struct stash_info *info, int argc, const char **argv)
|
||||
{
|
||||
int ret;
|
||||
@ -196,17 +215,9 @@ static int get_stash_info(struct stash_info *info, int argc, const char **argv)
|
||||
if (argc == 1)
|
||||
commit = argv[0];
|
||||
|
||||
if (!commit) {
|
||||
if (!refs_ref_exists(get_main_ref_store(the_repository), ref_stash)) {
|
||||
fprintf_ln(stderr, _("No stash entries found."));
|
||||
return -1;
|
||||
}
|
||||
|
||||
strbuf_addf(&info->revision, "%s@{0}", ref_stash);
|
||||
} else if (strspn(commit, "0123456789") == strlen(commit)) {
|
||||
strbuf_addf(&info->revision, "%s@{%s}", ref_stash, commit);
|
||||
} else {
|
||||
strbuf_addstr(&info->revision, commit);
|
||||
strbuf_init(&info->revision, 0);
|
||||
if (parse_stash_revision(&info->revision, commit, 0)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
revision = info->revision.buf;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user