tags:

views:

21

answers:

2

On the following server:

gsl@aragorn:~/gitTest> uname -a
Linux aragorn 2.6.31.12-0.2-default #1 SMP 2010-03-16 21:25:39 +0100 i686 i686 i386 GNU/Linux

gsl@aragorn:~/gitTest> cat /etc/SuSE-release

openSUSE 11.2 (i586)
VERSION = 11.2

I use the following git:

gsl@aragorn:~/gitTest> git --version

git version 1.7.2.2

I get (with a bash alias of gitnp='git --no-pager'):

(1)

gsl@aragorn:~/gitTest> gitnp log --pretty=oneline junk.txt
500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3
594ceed7a0fb35a860a6e2cb913d5398f09a861f 1st mod junk.txt
df271b2ebd5801bd8d827b0630577cad51c40896 initial junk.txt

(2)

gsl@aragorn:~/gitTest> gitnp log --follow --pretty=oneline junk.txt
500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3
594ceed7a0fb35a860a6e2cb913d5398f09a861f 1st mod junk.txt
df271b2ebd5801bd8d827b0630577cad51c40896 initial junk.txt

(3)

gsl@aragorn:~/gitTest> gitnp log -2 --follow --pretty=oneline junk.txt
500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3

(4)

gsl@aragorn:~/gitTest> gitnp log -2 --pretty=oneline junk.txt
500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3
594ceed7a0fb35a860a6e2cb913d5398f09a861f 1st mod junk.txt

Why don't I see 2 output lines for item (3) above?

-=> Gregg <=-

+1  A: 

Did you try with git1.7.2.3?

  • "git log --follow -M -p" was seriously broken in 1.7.2, reporting assertion failure.

  • Running "git log" with an incorrect option started pager nevertheless, forcing the user to dismiss it.

I am not sure why the combination of '--follow -2' would limit the output to only one line.
It is however interesting to read what Linux has to say when --follow was introduced:

--follow is a total hack, meant to just satisfy ex-SVN users who never knew anything about things like parenthood or nice revision graphs anyway.

It's not totally fundamental, but the current implementation of "--follow" is really a quick preprocessing thing bolted onto the revision walking logic, rather than being anything really integral.

It literally was designed as a "SVN noob" pleaser, not as a "real git functionality" thing.
The idea was that you'd get away from the (broken) mindset of thinking that renames matter in the big picture.

VonC
Ok, so it is probably not a completely reliable feature at this time. I see the gitk -- path1 path2 approach mentioned by Linus, but is there another non-graphical git way to walk the tree across renames?
Gregg Leichtman
@Gregg: none that comes into mind right now (except plumbing commands like `git rev-list`)
VonC
A: 

I upgraded to the latest and greatest, but still have the same problem:

gsl@aragorn:~/gitTest> git --version

git version 1.7.2.3

gsl@aragorn:~/gitTest> gitnp log -2 --follow --pretty=oneline junk.txt 500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3

gsl@aragorn:~/gitTest> gitnp log --follow --pretty=oneline junk.txt 500e8791578c5baf7a139d4997841769a995ac6b mod of junk and junk3 594ceed7a0fb35a860a6e2cb913d5398f09a861f 1st mod junk.txt df271b2ebd5801bd8d827b0630577cad51c40896 initial junk.txt

So is there another non-graphical reliable git way to obtain this information?

Gregg Leichtman