git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 5/6] git-reflog: add create and exists functions

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 25, 2015, 21:01 UTC
Message-ID
<xmqq1tgzy027.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1435265110-6414-5-git-send-email-dturner@twopensource.com>
David Turner <dturner@twopensource.com> writes:
Because...???
> These are necessary because ref backends manage reflogs.

"Because ref backends manage reflogs" may be a good explanation to implement something as part of ref API, but it does not explain why that something needs to be implemented in the first place.

Show 19 quoted lines
> In a moment,
> we will use these functions to make git stash work with alternate
> ref backends.
>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
>  builtin/reflog.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 78 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/reflog.c b/builtin/reflog.c
> index c2eb8ff..a64158d 100644
> --- a/builtin/reflog.c
> +++ b/builtin/reflog.c
> @@ -13,6 +13,10 @@ static const char reflog_expire_usage[] =
>  "git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] <refs>...";
>  static const char reflog_delete_usage[] =
>  "git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <refs>...";
> +static const char reflog_create_usage[] =
> +"git reflog create <refs>...";

It makes sense to take more than one; you may want to prepare more than one, and you would signal error by exiting with a non-zero status if any of them failed.

> +static const char reflog_exists_usage[] =
> +"git reflog exists <refs>...";

This is iffy, though. "git reflog exists foo bar" says "all of them exist" or "some of them exist"? Why is it more useful to implement "all of them exist"?

Perhaps dropping "..." would be simpler to explain and less confusing.

Show 27 quoted lines
> @@ -699,12 +703,79 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix)
>  	return status;
>  }
>  
> +static int cmd_reflog_create(int argc, const char **argv, const char *prefix)
> +{
> +	int i, status = 0, start = 0;
> +	struct strbuf err = STRBUF_INIT;
> +
> +	for (i = 1; i < argc; i++) {
> +		const char *arg = argv[i];
> +		if (!strcmp(arg, "--")) {
> +			i++;
> +			break;
> +		}
> +		else if (arg[0] == '-')
> +			usage(reflog_create_usage);
> +		else
> +			break;
> +	}
> +
> +	start = i;
> +
> +	if (argc - start < 1)
> +		return error("Nothing to create?");
> +
> +	for (i = start ; i < argc; i++) {
s/start ;/start;/ (everywhere).
Previous: David TurnerNext: David Turner
Message 12 of 14 in “refs.c: add err arguments to reflog functions”
  1. 1/6 refs.c: add err arguments to reflog functionsDavid Turner, Jun 25, 2015
  2. 2/6 cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refsDavid Turner, Jun 25, 2015
  3. Junio C HamanoJun 25, 2015
  4. David TurnerJun 25, 2015
  5. 3/6 bisect: use refs infrastructure for BISECT_STARTDavid Turner, Jun 25, 2015
  6. Junio C HamanoJun 25, 2015
  7. David TurnerJun 25, 2015
  8. David TurnerJun 26, 2015
  9. 4/6 refs: add safe_create_reflog functionDavid Turner, Jun 25, 2015
  10. Junio C HamanoJun 25, 2015
  11. 5/6 git-reflog: add create and exists functionsDavid Turner, Jun 25, 2015
  12. Junio C HamanoJun 25, 2015
  13. David TurnerJun 25, 2015
  14. 6/6 git-stash: use git-reflog instead of creating filesDavid Turner, Jun 25, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.