git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: David Turner <dturner@twopensource.com>
To: Johannes Sixt <j6t@kdbg.org>
Cc: git@vger.kernel.org, mhagger@alum.mit.edu,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v7 2/8] cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refs
Date: Wed, 08 Jul 2015 19:41:24 -0400	[thread overview]
Message-ID: <1436398884.4542.25.camel@twopensource.com> (raw)
In-Reply-To: <559D92CF.7000408@kdbg.org>

On Wed, 2015-07-08 at 23:14 +0200, Johannes Sixt wrote:
> Am 08.07.2015 um 21:16 schrieb David Turner:
> > On Wed, 2015-07-08 at 19:46 +0200, Johannes Sixt wrote:
> >> 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.
> 
> Isn't it mere coincidence that the content of these two files looks like 
> a non-packed ref? Wouldn't it be better to consider the two akin to 
> MERGE_HEAD (which is not a ref because it records more than just a 
> commit name)?

There appears to be a bit of code that assumes they can be read as refs,
and the tests test this functionality.  Indeed, I wrote most of this
code by replacing the backend and fixing failing tests.

At least some people seem to use the rev-ness of CHERRY_PICK_HEAD:
https://mnaoumov.wordpress.com/2014/12/03/bulk-cherry-picking-process-and-magic-ref-cherry_pick_head/

So I think it's best to keep the feature.

  parent reply	other threads:[~2015-07-08 23:41 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-08  0:55 [PATCH v7 1/8] refs.c: add err arguments to reflog functions David Turner
2015-07-08  0:55 ` [PATCH v7 2/8] cherry-pick: treat CHERRY_PICK_HEAD and REVERT_HEAD as refs David Turner
2015-07-08 17:46   ` Johannes Sixt
2015-07-08 19:16     ` David Turner
2015-07-08 21:14       ` Johannes Sixt
2015-07-08 23:23         ` Junio C Hamano
2015-07-08 23:44           ` David Turner
2015-07-09  5:55             ` Junio C Hamano
2015-07-09 21:53               ` David Turner
2015-07-09 22:06                 ` Junio C Hamano
2015-07-10  4:30                   ` Michael Haggerty
2015-07-10 17:59                     ` David Turner
2015-07-14  4:33                     ` David Turner
2015-07-15 16:24                       ` Junio C Hamano
2015-07-15 18:04                         ` David Turner
2015-07-08 23:41         ` David Turner [this message]
2015-07-08  0:55 ` [PATCH v7 3/8] bisect: treat BISECT_HEAD as a ref David Turner
2015-07-08  0:55 ` [PATCH v7 4/8] refs: Break out check for reflog autocreation David Turner
2015-07-08  0:56 ` [PATCH v7 5/8] refs: new public ref function: safe_create_reflog David Turner
2015-07-08 11:49   ` Michael Haggerty
2015-07-08  0:56 ` [PATCH v7 6/8] git-reflog: add exists command David Turner
2015-07-08  0:56 ` [PATCH v7 7/8] update-ref and tag: add --create-reflog arg David Turner
2015-07-08 13:44   ` Michael Haggerty
2015-07-08 20:21     ` David Turner
2015-07-08  0:56 ` [PATCH v7 8/8] git-stash: use update-ref --create-reflog instead of creating files David Turner
2015-07-08  7:28   ` Junio C Hamano
2015-07-08  7:33   ` Junio C Hamano
2015-07-08 13:50   ` Michael Haggerty
2015-07-08 11:36 ` [PATCH v7 1/8] refs.c: add err arguments to reflog functions Michael Haggerty
2015-07-08 20:01   ` David Turner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436398884.4542.25.camel@twopensource.com \
    --to=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.org \
    --cc=mhagger@alum.mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).