Re: Rollback of git commands
- From
Jon Smirl <jonsmirl@gmail.com>
- Date
- Nov 28, 2007, 17:03 UTC
- Message-ID
- <9e4733910711280903w26e9821ah17db9ad468dea460@mail.gmail.com>
- In-Reply-To
- <alpine.LFD.0.99999.0711281141150.9605@xanadu.home>
On 11/28/07, Nicolas Pitre <nico@cam.org> wrote:
Show 36 quoted lines
> On Wed, 28 Nov 2007, Jon Smirl wrote: > > > On 11/28/07, Nicolas Pitre <nico@cam.org> wrote: > > > On Wed, 28 Nov 2007, Jon Smirl wrote: > > > > > > > On 11/28/07, Nicolas Pitre <nico@cam.org> wrote: > > > > > On Tue, 27 Nov 2007, Jon Smirl wrote: > > > > > > > > > > > Of course you've never screwed up a repository using git commands, > > > > > > right? I've messed up plenty. A good way to mess up a repo is to get > > > > > > the data in .git/* out of sync with what is in the repo. I'm getting > > > > > > good enough with git that I can fix most mess up with a few edits, but > > > > > > it took me two years to get to that point. Rolling back to a check > > > > > > point is way easier. User error and a command failing are both equally > > > > > > valid ways to mess up a repo. > > > > > > > > > > The reflog contains all your check points, for every modifications you > > > > > make, even the stupid ones. You should look at it. > > > > > > > > The state contained in the other config files in .git/* is not getting > > > > check pointed. I can use reflog to move my branch heads around. But > > > > doing that does not undo the changes to the state recorded in .git/*. > > > > After the error I encountered I moved my branch head back, but the > > > > state stgit had stored in .git/* was out of sync with where the branch > > > > had been moved to. > > > > > > It's up to stgit to version control its state then. It may even use a > > > reflog for it. All the machinery is there already. > > > > Git has state in .git/* too, shouldn't it be version controlling it > > too? If git was version controlling the state in .git/* you'd have > > checkpoints with the ability to roll back. > > Well, the .git directory contains data to identify what is actually > version controlled. If you start versioning the data used to implement > the versioning, don't you get into endless recursion here?
You would end up with a single non-version controlled sha pointer that would need to be stored externally. That pointer would be the beginning of the rollback log. It's just a normal commit chain.
In a totally version controlled system. .git/* would only contain objects and the one pointer to the current state of the system.
-- Jon Smirl jonsmirl@gmail.com