threads / discuss / 29392

Checking out orphans with -f

Subject: Checking out orphans with -f

## tl;dr

5 messages between Jan 18, 2012 and Jan 18, 2012.

replies: 4people: 2as markdown or json

Martin Fick· Jan 18, 2012, 19:07 UTC · lore

I am trying to write some scripts which do various things to a git repo and I have run into a issue where I think that git behavior with respect to orphan branches is potentially undesirable. If I type:

  git checkout --orphan a
I cannot easily abandon this state by simply typing:
  git check -f --orphan b

Is there a better simpler way to abandon a that I am not aware of? Am I miss understanding what -f is supposed to do? It seems like it should allow me to abandon the a orphan and continue to checkout the b orphan?

Thanks for any insights,
-Martin
-- 
Employee of Qualcomm Innovation Center, Inc. which is a 
member of Code Aurora Forum
Junio C Hamano· Jan 18, 2012, 22:40 UTC · re: Martin Fick · lore

Re: Checking out orphans with -f

Martin Fick <mfick@codeaurora.org> writes:
Show 8 quoted lines
> I am trying to write some scripts which do various things to 
> a git repo and I have run into a issue where I think that 
> git behavior with respect to orphan branches is potentially 
> undesirable.  If I type:
>
>   git checkout --orphan a
>
> I cannot easily abandon this state
What do you mean by "abandon"?

If you want to remove a branch "a" because you do not need it, you can check out some other branch and say "git branch -D a", no?

Martin Fick· Jan 18, 2012, 22:45 UTC · re: Junio C Hamano · lore

Re: Checking out orphans with -f

On Wednesday, January 18, 2012 03:40:36 pm Junio C Hamano wrote:

Show 16 quoted lines
> Martin Fick <mfick@codeaurora.org> writes:
> > I am trying to write some scripts which do various
> > things to a git repo and I have run into a issue where
> > I think that git behavior with respect to orphan
> > branches is potentially
> > 
> > undesirable.  If I type:
> >   git checkout --orphan a
> > 
> > I cannot easily abandon this state
> 
> What do you mean by "abandon"?
> 
> If you want to remove a branch "a" because you do not
> need it, you can check out some other branch and say
> "git branch -D a", no?

By abandon, I simply mean to check out another branch, which as you point, I can almost do. I just can't do it by checking out another orphaned branch! Why not, this seems inconsistent? In both cases I loose what the original orphaned branch (a) is, so why prevent me from doing it in the one case and not the other?

-Martin
-- 
Employee of Qualcomm Innovation Center, Inc. which is a 
member of Code Aurora Forum
Martin Fick· Jan 18, 2012, 22:50 UTC · re: Junio C Hamano · lore

Re: Checking out orphans with -f

On Wednesday, January 18, 2012 03:40:36 pm Junio C Hamano wrote:

Show 16 quoted lines
> Martin Fick <mfick@codeaurora.org> writes:
> > I am trying to write some scripts which do various
> > things to a git repo and I have run into a issue where
> > I think that git behavior with respect to orphan
> > branches is potentially
> > 
> > undesirable.  If I type:
> >   git checkout --orphan a
> > 
> > I cannot easily abandon this state
> 
> What do you mean by "abandon"?
> 
> If you want to remove a branch "a" because you do not
> need it, you can check out some other branch and say
> "git branch -D a", no?

Actually, no I can't. I can check out some other branch (assuming I have one), but I cannot then delete a, it appears to already be deleted by virtue of checking out another branch. I like that since I never checked it in, better to clean up the garbage, but why can't I then checkout another orphan to do the same thing?

-Martin
-- 
Employee of Qualcomm Innovation Center, Inc. which is a 
member of Code Aurora Forum
Junio C Hamano· Jan 18, 2012, 23:12 UTC · re: Martin Fick · lore

Re: Checking out orphans with -f

Martin Fick <mfick@codeaurora.org> writes:
Show 5 quoted lines
> Actually, no I can't.  I can check out some other branch 
> (assuming I have one), but I cannot then delete a, it 
> appears to already be deleted by virtue of checking out 
> another branch.  I like that since I never checked it in, 
> better to clean up the garbage.
Good.
> ...but why can't I then 
> checkout another orphan to do the same thing?

I am not surprised if the original contributor who wanted to add --orphan did not address corner cases. It is very plausible that we did not try as hard to nitpick the code for complete support of such corner cases as I and other contributors usually do for more important features.

So... Patches welcome ;-)

Having said that, there are many things to consider to fill the corner case you seem to be interested to add support for.

The "orphaned" state is like immediately after "git init". Because you do not have any current commit, you cannot create an orphan branch based the state immediately after "git init", either. You are nominally on your 'master' branch, but it does not have anything yet; you are expected to turn it into a real branch by creating a commit soon, but until you do so, you are kind of in-limbo. It is understandable that there will be many operations that will not make any sense until you first get out of this in-limbo state. For example, you cannot (and do not have to) delete the branch and if you have a commit (e.g. you can fetch one from another place) you can check it out and the 'master' will be gone, because you never created it in the first place.

← back to recent threads