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

Re: [RFC/PATCH] shortstatus v1

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 10, 2009, 01:44 UTC
Message-ID
<7vr627qd4p.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<1234227067-56666-1-git-send-email-tuncer.ayaz@gmail.com>
Tuncer Ayaz <tuncer.ayaz@gmail.com> writes:
> Adding git 'shortstatus --mini' to PS1 is not noticeable or 1sec
> maximum in my tree. As a worst case it takes 10secs in a clone
> of WebKit.git.

Frankly, I think having to spend one second to add only one or two bits to PS1 is simply spending one second too much.

Show 40 quoted lines
> diff --git a/builtin-commit.c b/builtin-commit.c
> index d6a3a62..9267d26 100644
> --- a/builtin-commit.c
> +++ b/builtin-commit.c
> @@ -821,6 +827,88 @@ static int parse_and_validate_options(int argc, const char *argv[],
>  	return argc;
>  }
>  
> +int cmd_shortstatus(int argc, const char **argv, const char *prefix)
> +{
> +	struct wt_status s;
> +	int i;
> +	int c, a, u;
> +
> +	c = a = u = 0;
> +
> +	argc = parse_and_validate_options(argc, argv, builtin_shortstatus_usage, prefix);
> +	read_cache();
> +	refresh_cache(REFRESH_QUIET);
> +	wt_status_prepare(&s);
> +	wt_status_collect_changes(&s);
> +	if (mini) {
> +		for (i = 0; i < s.change.nr; i++) {
> +			struct wt_status_change_data *d;
> +			struct string_list_item *it;
> +
> +			it = &(s.change.items[i]);
> +			d = it->util;
> +			switch (d->index_status) {
> +				case DIFF_STATUS_ADDED:
> +					a = 1;
> +					break;
> +				case 0:
> +				case DIFF_STATUS_COPIED:
> +				case DIFF_STATUS_DELETED:
> +				case DIFF_STATUS_MODIFIED:
> +				case DIFF_STATUS_RENAMED:
> +				case DIFF_STATUS_TYPE_CHANGED:
> +					c = 1;
> +					break;

If you at the end discard information by squashing renamed, copied, deleted and modified into a single "changed" category, I do not think you would want wt_status_collect_changes() to spend the cost of rename detection in the first place. Sure, you can tell between "git mv old new" and "git add new", because you won't show "+" for "new" if you run rename detection, but that is about the only thing I think you are getting.

Is it worth extra 1 second (or 10 seconds)?

What are you really trying to achieve? Do you want to see if you have any change to the index since you checked out? Do you want to further tell the user that the work tree has more changes that are not staged yet (which --mini does not seem to do)?

Do you really need more than "diff-index --cached --exit-code" in your $PS1 code, and so why? Does the added feature your "shortstatus --mini" offers over "diff-index --cached --exit-code" justify the latency penalty to the user?

Previous: Tuncer AyazNext: Sitaram Chamarty
Message 2 of 25 in “shortstatus v1”
  1. shortstatus v1Tuncer Ayaz, Feb 10, 2009
  2. Junio C HamanoFeb 10, 2009
  3. Sitaram ChamartyFeb 10, 2009
  4. Spending time in PS1, was Re: [RFC/PATCH] shortstatus v1Johannes Schindelin, Feb 10, 2009
  5. Sitaram ChamartyFeb 10, 2009
  6. Tuncer AyazFeb 10, 2009
  7. Jeff KingFeb 10, 2009
  8. Michael J GruberFeb 10, 2009
  9. Tuncer AyazFeb 10, 2009
  10. Jeff KingFeb 10, 2009
  11. Michael J GruberFeb 10, 2009
  12. Jeff KingFeb 10, 2009
  13. Junio C HamanoFeb 10, 2009
  14. Jeff KingFeb 10, 2009
  15. Jeff KingFeb 10, 2009
  16. Jeff KingFeb 10, 2009
  17. Tuncer AyazFeb 10, 2009
  18. Jeff KingFeb 10, 2009
  19. Junio C HamanoFeb 10, 2009
  20. Tuncer AyazFeb 10, 2009
  21. Jeff KingFeb 10, 2009
  22. Junio C HamanoFeb 10, 2009
  23. Jeff KingFeb 12, 2009
  24. Nanako ShiraishiFeb 10, 2009
  25. Junio C HamanoFeb 11, 2009

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.