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

Re: [PATCH v7 2/8] cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refs

From
David Turner <dturner@twopensource.com>
Date
Jul 8, 2015, 19:16 UTC
Message-ID
<1436382962.4542.8.camel@twopensource.com>
In-Reply-To
<559D6208.8090607@kdbg.org>
On Wed, 2015-07-08 at 19:46 +0200, Johannes Sixt wrote:
Show 27 quoted lines
> Am 08.07.2015 um 02:55 schrieb David Turner:
> > Instead of directly writing to and reading from files in
> > $GIT_DIR, use ref API to interact with CHERRY_PICK_HEAD
> > and REVERT_HEAD.
> >
> > Signed-off-by: David Turner <dturner@twopensource.com>
> > ---
> ...
> > diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> > index 366f0bc..e2c5583 100644
> > --- a/contrib/completion/git-prompt.sh
> > +++ b/contrib/completion/git-prompt.sh
> > @@ -415,9 +415,9 @@ __git_ps1 ()
> >   			fi
> >   		elif [ -f "$g/MERGE_HEAD" ]; then
> >   			r="|MERGING"
> > -		elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
> > +		elif git rev-parse --quiet --verify "CHERRY_PICK_HEAD" >/dev/null; then
> >   			r="|CHERRY-PICKING"
> > -		elif [ -f "$g/REVERT_HEAD" ]; then
> > +		elif git rev-parse --quiet --verify "REVERT_HEAD" >/dev/null; then
> >   			r="|REVERTING"
> >   		elif [ -f "$g/BISECT_LOG" ]; then
> >   			r="|BISECTING"
> 
> We are trying very hard not to spawn any new processes in __git_ps1(). 
> So, I raise a moderate veto against this hunk.

Do you have an alternate suggestion about how to accomplish the same thing? Here are my ideas:

We could special-case CHERRY_PICK_HEAD and REVERT_HEAD to be files independent of the ref backend, but that tends to complicate the backends. I think this is a mistake.

We could reduce the number from two to one by providing a new git-am-status command which outputs one of "CHERRY-PICKING", "REVERTING", or "" (or maybe it would also handle rebase and am). We could also generalize it to "git-prompt-helper" or something by moving that entire bunch of if statements inside. This would replace calls to "git describe".

But you probably have a better idea.
Previous: Johannes SixtNext: Johannes Sixt
Message 4 of 30 in “refs.c: add err arguments to reflog functions”
  1. 1/8 refs.c: add err arguments to reflog functionsDavid Turner, Jul 8, 2015
  2. 2/8 cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refsDavid Turner, Jul 8, 2015
  3. Johannes SixtJul 8, 2015
  4. David TurnerJul 8, 2015
  5. Johannes SixtJul 8, 2015
  6. Junio C HamanoJul 8, 2015
  7. David TurnerJul 8, 2015
  8. Junio C HamanoJul 9, 2015
  9. David TurnerJul 9, 2015
  10. Junio C HamanoJul 9, 2015
  11. Michael HaggertyJul 10, 2015
  12. David TurnerJul 10, 2015
  13. David TurnerJul 14, 2015
  14. Junio C HamanoJul 15, 2015
  15. David TurnerJul 15, 2015
  16. David TurnerJul 8, 2015
  17. 3/8 bisect: treat BISECT_HEAD as a refDavid Turner, Jul 8, 2015
  18. 4/8 refs: Break out check for reflog autocreationDavid Turner, Jul 8, 2015
  19. 5/8 refs: new public ref function: safe_create_reflogDavid Turner, Jul 8, 2015
  20. Michael HaggertyJul 8, 2015
  21. 6/8 git-reflog: add exists commandDavid Turner, Jul 8, 2015
  22. 7/8 update-ref and tag: add --create-reflog argDavid Turner, Jul 8, 2015
  23. Michael HaggertyJul 8, 2015
  24. David TurnerJul 8, 2015
  25. 8/8 git-stash: use update-ref --create-reflog instead of creating filesDavid Turner, Jul 8, 2015
  26. Junio C HamanoJul 8, 2015
  27. Junio C HamanoJul 8, 2015
  28. Michael HaggertyJul 8, 2015
  29. Michael HaggertyJul 8, 2015
  30. David TurnerJul 8, 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.