Re: [PATCH v3 10/21] checkout: split part of it to new command 'switch'
- From
Elijah Newren <newren@gmail.com>
- Date
- Mar 14, 2019, 14:46 UTC
- Message-ID
- <CABPp-BF3_p3+fmQcWYEu2z3J4FfPmDmiMyFiBRXyz8TxKLL7jA@mail.gmail.com>
- In-Reply-To
- <20190314091753.GA9852@ash>
On Thu, Mar 14, 2019 at 2:18 AM Duy Nguyen <pclouds@gmail.com> wrote:
Show 29 quoted lines
> > On Tue, Mar 12, 2019 at 01:28:35PM -0400, Eric Sunshine wrote: > > > > Again, not much of a datapoint, but I do use --orphan periodically. > > > > The idea of "fixing" the behavior so that --orphan starts with a clean > > > > slate is certainly appealing (since it matches how I've used orphan > > > > branches in each case). > > > > > > The only three people who have commented on --orphan in this thread > > > all apparently feel the same way: the current behavior is wrong. > > > Maybe we can switch it to start with an empty index after all? > > > > Starting empty may match intuition better. (More importantly, perhaps, > > it's harder to come up with a use-case for --orphan which doesn't > > involve starting with a clean slate.) > > OK so the new --orphan description would be like this, right? > > --8<-- > --orphan <new-branch>:: > Create a new 'orphan' branch, named `<new-branch>`. If > `<start-point>` is specified, the working tree is adjusted to > match it. The index remains empty (i.e. no file is tracked). > -->8-- > > I was wondering if instead of the empty index, we mark on files from > <start-point> as intent-to-add. That way "git commit -a" achieves the > same as before, but you could still carefully craft the new index and > "git commit". Dunno. Not going to implement it unless somebody says > something, since I rarely (if ever?) use --orphan.
I don't see why <start-point> even makes sense to use with --orphan; you should error if both are given, IMO. The point of --orphan is to create some entirely new history. So, I'd expect "git switch --orphan <new-branch>" to: * not create refs/heads/<new-branch> * set HEAD to refs/heads/<new-branch> * empty all tracked files from the working tree. * empty the index
Alternatively, you could allow <start-point> to be passed with --orphan, adjusting the above steps so that both the index and the working tree are switched to match <start-point>, but ONLY if <start-point> defaults to the empty tree when --orphan is passed.
> I may need someone to come up with a convincing commit message > too. All I've got is "I've been told this is a good thing to do" :)
How about:
""" Switching and creating branches always involves knowing the <start-point> to begin the new branch from. Sometimes, people want to create a new branch that does not have any commits yet; --orphan is a flag to allow that. --orphan overrides the default of HEAD for <start-point> instead causing us to start from an empty history. The use of --orphan is incompatible with specifying a <start-point>. """