Re: Individual file snapshots

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

 



In article <C022F034-F60E-4E89-A174-DC0F53ADEC19@xxxxxxxxxxxxxxxxxx>,
 Brian Gernhardt <benji@xxxxxxxxxxxxxxxxxx> wrote:

> On Feb 12, 2010, at 4:57 PM, Ron Garret wrote:
> 
> > That would require a separate branch for every snapshot, no?  I want 
> > this to be lightweight.  It's not so much the creation of a zillion 
> > branches that bothers me, but having to come up with a new name every 
> > time would be a real hassle.
> 
> Ahhhh...  You could just use the stash and use some kind of recognizable 
> message: git stash Failed: fooed the bar badly
> 
> Or you could make a stash-like snapshot branch?  The following sequence does 
> something like that:
> 
>   git add .
>   git commit -m "Ooops"
>   git branch -f
>   git reset --hard HEAD^
> 
> After a few failures like that, you can look over all the snapshots with
> 
>   git log -g snapshots
> 
> By default they will be kept around for 30 days, or the current setting of 
> gc.reflogexpireunreachable.  If you want to keep a snapshot around for more 
> than 30 days, you probably want to give it a real branch anyway.
> 
> You could either create a script that uses the above commands or a patch that 
> makes git-stash take a --ref= argument and then set:
> 
>   alias.snapshot = stash --ref=refs/snapshots


Yes, I think the right answer is going to be something like this:

git symbolic-ref HEAD refs/heads/snapshots
git rm --cached -r .
git commit --allow-empty -m 'Snapshot branch'

Then, to take a snapshot:

git branch snapshot
git checkout master -- path
git add path
git commit -a -m 'Snapshot of [path]'
git checkout master

(All of that will be in a script of course.)

And to rollback:

git checkout snapshot-[n] -- path

Or something like that.  I haven't actually tried this yet, but it seems 
like it ought to work.

Am I right that 'git checkout branch' changes branches, but 'git 
checkout branch -- path' doesn't?  That's very confusing.  Useful, but 
confusing :)

rg

--
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]