From: Jon Seymour Date: Tue, 02 Aug 2011 01:15:46 GMT Subject: Re: [PATCH 0/5] bisect: Add support for a --no-checkout option. Message-ID: In-Reply-To: <7vaabshfmb.fsf@alter.siamese.dyndns.org> On Tue, Aug 2, 2011 at 9:33 AM, Junio C Hamano wrote: > Jon Seymour writes: > >> On Tue, Aug 2, 2011 at 3:33 AM, Junio C Hamano wrote: >>> Jon Seymour writes: >>> >>>> It might become more important if someone ever writes a tool that does >>>> a bisection on the user's behalf. In this case, aborting the tool >>>> might leave the HEAD in, what appears to the user, a confused state. >> ... >> In this hypothetical additional series, are you happy for >> --no-checkout to become a synonym for --update-ref=HEAD in the manner >> of v8? From a technical perspective, it doesn't seem necessary to >> duplicate the state variables and parameters. > > Well, from a technical perspective, which ref is to be updated is an > option that is valid _only_ under no-checkout mode, and no-checkout mode > could be using HEAD, so I think you would need two variables. One for > "what mode are we running", and the other that is only valid under "we are > in no-checkout mode" that says "we update BISECT_HEAD". > > If no-checkout mode _never_ updates HEAD, because the normal mode _always_ > updates HEAD, you could reduce them into a single variable (i.e. if we are > updating HEAD then we are in normal mode, otherwise we are in no-checkout > mode).  I actually have a mild suspicion that the no-checkout mode may > turn out to be too confusing for people if it by default updates HEAD, and > we may want to have it update something that is not HEAD by default (or > forbid --update-ref from specifying HEAD), so if that turns out to be the > approach we are going to proceed, we _might_ end up needing only one > variable, but I do not think we know it just yet.  At least I don't. > How about in the current series, I change the option parsed by bisect--helper.c to be: --bisect-mode=checkout|update-ref The porcelain option can still be --no-checkout (or should it be --bisect-mode too?). The porcelain will maintain a state variable called (rather than BISECT_NO_CHECKOUT). BISECT_MODE Then, the next series can add a --bisect-head option (instead of --update-ref) to allow the head to be varied (defaulting to BISECT_HEAD) if not specified. Sound ok? jon.