lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.0.98.0704191538460.9964@woody.linux-foundation.org>
Date:	Thu, 19 Apr 2007 15:59:41 -0700 (PDT)
From:	Linus Torvalds <torvalds@...ux-foundation.org>
To:	Jeff Garzik <jeff@...zik.org>
cc:	Avi Kivity <avi@...ranet.com>, linux-kernel@...r.kernel.org,
	kvm-devel@...ts.sourceforge.net
Subject: Re: [GIT PULL] kvm oops fix



On Thu, 19 Apr 2007, Linus Torvalds wrote:
> 
> You can either do
> 
> 	git reset --hard ORIG_HEAD
> 	git reset --hard @{1}

Btw, on the same kind of subject: the whole "what was my previous HEAD" 
issues are obviously also how you'd generally want to see what those 
new patches were, regardless of whether you want to undo them or not.

So it might be worth repeating for people what I do after any pull that I 
feel I want to give a quick look-over.. A simple

	gitk ORIG_HEAD..
or
	gitk HEAD@.....
or
	gitk @{1}..
or
	gitk @{12.hours.ago}..

are all variations of the same theme: show what is new since either "last 
update" or "what I had in my tree 12 hours ago".

Btw, the

	gitk @{12.hours.ago}..

thing is very different from

	gitk --since=12.hours.ago

even if they involve the same date.

The "@{12.hours.ago}" syntax pinpoints a particular *commit*, namely what 
your HEAD was pointing at 12 hours ago. So it's literally about your 
particular repository history (give a branch name if you want to specify 
one: so "for-linus@...hours.ago}" specifies the *commit* that was the head 
of the "for-linus" branch in your repository 2 hours ago).

In contrast, the "--since=12.hours.ago" means something totally different: 
it measn that you want to ignore all commits that are older than 12 hours, 
regardless of whether they were actually in your tree at that point or 
not. Which is often a very different issue indeed.

So another reasonably common things you can do:

	git fetch linus
	gitk linus@.....linus

this assumes that you've set up a separate tracking branch "linus", and 
that you've taught it to fetch my current tree into it. So in the above 
sequence, the "git fetch linus" will fetch everything new from my tree 
into your "linus" tracking branch, and the "gitk" will then show all the 
new commits on that branch that you got.

NOTE! The above is very much designed to work whether you are on that 
branch or not, and in fact, the normal reason to do something like the 
above is explicitly that you want to see what is going on in somebody 
elses tree without actually necessarily merging it into your own branch 
(perhaps in order to decide whether you _want_ to merge it or not).

And that "linus@{1}" really just means "what is the previous commit I had 
on my 'linus' branch". You can obviously dig deeper down, and "linus@...}" 
is something less commonly used, but basically means "what was on that 
branch ten revision updates ago".

Note that this is *very*different* from "linus~10", which means "what is 
the tenth _parent_ of the "linus" branch. They *can* be the same thing (if 
each operation adds exactly one commit), but if you do things like "git 
fetch", then the "linus" branch ten operations ago may be hundreds of 
commits ago, because some of those ten operations may have added lots of 
commits thanks to synching up with some other tree!

And as already noted, the "branch@...zzy}" format also allows "xyzzy" to 
be a date, not just a numeral. In fact, that was the original revlog 
tracking behaviour, and the numeric thing, while simpler, is actually a 
newer feature (as is the "don't specify a branch name at all", which just 
means "current branch")

So

	gitk @{24.hours.ago}..

is a nice way to see what has happend in *your* repository, on the current 
branch, in the last 24 hours.

(NOTE: You can also say "HEAD@...hours.ago}" and that actually doesn't use 
the current branch at all, it actually says what HEAD was 2 hours ago: you 
may have been on some totally _different_ branch back then, and if you 
wonder what the heck of a branch you are running and you look at the time 
of the binary, but you don't remember what branch you had checked out when 
you built it, that may be what you want. Of course, you may also want a 
better attention span ;)

Some of this is pretty recent, and generally, if some of this doesn't work 
for you, it means that you are using some ancient version of git. If it's 
not git-1.5.x, upgrade. It's worth it.

		Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ