Re: Reverting the whole index-base series

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes:

> If "next" and "pu" are the same, and you have "next" checked out, and you 
> push into "pu", what happens? Since the two branches were the same, the 
> SHA1 was the same before, so the BASE commit in the index will be the one 
> that is updated.

But it does not matter if "pu" was not checked out.  You will be
building on top of "next" which was not changed.

> The only thing that matters is that if you update the branch that HEAD 
> points to, and then you'd always need to do something special, but I don't 
> see that it has anything to do with what the "BASE" commit was.. It's 
> purely a matter of "what does HEAD point to", independently of the index.
>
> But no, I wasn't following that series, so I probably totally 
> misunderstood what you were going after..

Could be.

The issue in short was about:

	$ git checkout $branch

At this point you think your HEAD is at $branch head, and you
are working towards building a commit that has that commit as
one of the parents.

Then a gremlin updates the commit HEAD points at.  Maybe
somebody else pushed into $branch.  Or you had another working
tree that shares refs (but not index nor HEAD -- perhaps set up
with contrib/workdir/git-new-workdir) with this repository and
made a commit there by mistake on the branch.

And you try to make a commit.

	$ git commit

The work you did in your repository were mostly based on the
contents of the commit you checked out but this "git commit"
will create a commit on top of something else (i.e. the one the
gremlin updated to).

To detect this case, we needed to record "which commit are we
expecting to base the next commit on".  The place to record that
information does not have to be in the index (I could have
picked a separate file .git/current-head-commit and stored the
information there), but the index was a convenient place to do
so.

So it does not have anything to do with the index, but very much
about the HEAD.  The problem was about keeping it in sync with
what really was going on in the repository / working tree.




-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]