Re: How to check out the repository at a particular point in time
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Aug 23, 2011, 09:17 UTC
- Message-ID
- <201108231117.00314.trast@student.ethz.ch>
- In-Reply-To
- <1314085268.42103.YahooMailClassic@web25406.mail.ukl.yahoo.com>
R. Diez wrote:
> > check out HEAD, it should always work
Please stop using HEAD like this, you'll just confuse your coworkers (and yourself). HEAD denotes the currently checked out commit. [Unlike SVN it is *not* the most recent version of anything.] Thus by definition, 'git checkout HEAD' is a no-op.
The newest commit on a branch is denoted by its branch name, because as Jens said, a branch is in fact a pointer to its tip[1] commit.
> Now you're saying I cannot reliably checkout last week's versions > because yesterday I did a merge from an older branch? You mean that > git stores everything with clean graphs and numeric pointers, so it > cannot know what this repository looked like last week?
Indeed. Especially if forced pushes are allowed, there is no way to know what was in the repo at a given time unless you have (local) reflogs enabled on remote branches and going back until the time you want.
Show 10 quoted lines
> As the developer, I have full control, I can decide what the > branches are called and how the public repository is > updated/pushed/whatever. I can control the clock so there are no > time skews. > > What do I have to do in order to be able to reliably checkout last > week's versions without too much administrative work? I just want to > get the same result today as if I had done a checkout last week from > the public repository and had made a back-up copy of the working > directory then.
Assuming
* you never do a non-fast-forward (i.e., forced) push * you never have any clock skew * you always merge features into master (not the other way around) * you always push immediately after committing on master
you can get there by using 'git log -1 --first-parent --until=...' as mentioned in my first email.
I personally think that's crazy and -- if you want to avoid the work of "really" using submodules -- support Jens's suggestion of having the buildbot automatically assemble an "I tested this" superproject.
[1] or "head" in lowercase (thus "branch head"), but I prefer tip to avoid confusion
--
Thomas Rast
trast@{inf,student}.ethz.ch