git blame --reverse: it's all a bit mysterious

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

 



The --reverse option to git blame (which isn't listed in the option summary when you type just "git blame",
but *is* listed in the cross-referenced git-rev-list(1), though that's not terribly helpful) doesn't seem
to understand what I'm trying to ask, and the man page is not much help.

greenrd@cspcnh /var/db/paludis/repositories/arbor $ strace -f -e trace=file git blame --reverse 48d96ce0e486eedea9fda0f8e480ba3c6caffc90..HEAD exlibs/eutils.exlib
execve("/usr/bin/git", ["git", "blame", "--reverse", "48d96ce0e486eedea9fda0f8e480ba3c"..., "exlibs/eutils.exlib"], [/* 41 vars */]) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
open("/usr/lib/libcrypto.so.0.9.8", O_RDONLY) = 3
open("/lib/libpthread.so.0", O_RDONLY)  = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
getcwd("/var/db/paludis/repositories/arbor", 4096) = 35
stat64(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access(".git/objects", X_OK)            = 0
access(".git/refs", X_OK)               = 0
lstat64(".git/HEAD", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
open(".git/HEAD", O_RDONLY|O_LARGEFILE) = 3
access("/etc/gitconfig", R_OK)          = 0
open("/etc/gitconfig", O_RDONLY|O_LARGEFILE) = 3
access("/home/greenrd/.gitconfig", R_OK) = 0
open("/home/greenrd/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
stat64(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access(".git/config", R_OK)             = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
access("/etc/gitconfig", R_OK)          = 0
open("/etc/gitconfig", O_RDONLY|O_LARGEFILE) = 3
access("/home/greenrd/.gitconfig", R_OK) = 0
open("/home/greenrd/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
access(".git/config", R_OK)             = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
access("/etc/gitconfig", R_OK)          = 0
open("/etc/gitconfig", O_RDONLY|O_LARGEFILE) = 3
access("/home/greenrd/.gitconfig", R_OK) = 0
open("/home/greenrd/.gitconfig", O_RDONLY|O_LARGEFILE) = 3
access(".git/config", R_OK)             = 0
open(".git/config", O_RDONLY|O_LARGEFILE) = 3
lstat64("exlibs/eutils.exlib", 0xbf896768) = -1 ENOENT (No such file or directory)
stat64(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getcwd("/var/db/paludis/repositories/arbor", 1024) = 35
chdir(".git")                           = 0
getcwd("/var/db/paludis/repositories/arbor/.git", 4096) = 40
lstat64("/var/db/paludis/repositories/arbor/.git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
chdir("/var/db/paludis/repositories/arbor") = 0
chdir("/var/db/paludis/repositories/arbor") = 0
lstat64("48d96ce0e486eedea9fda0f8e480ba3c6caffc90..HEAD", 0xbf896768) = -1 ENOENT (No such file or directory)
fatal: cannot stat path '48d96ce0e486eedea9fda0f8e480ba3c6caffc90..HEAD': No such file or directory

Now this error message is very unhelpful. Why is git blame trying to interpret this as a filename,
when the man page implies that it expects a revision range (or possibly a single revision, if you
believe the option summary at the top of the man page)?

This isn't the first time I've noticed git misinterpreting a revision (range) as a filename, but
in this case, I have no clue what is going on.

I notice from the strace output that it's looking for the specified filename first, which of course
no longer exists in HEAD. The man page implies that blame --reverse only needs the file to exist
in the first revision of the revision range; if it also needs to exist in the *working tree* or
something like that, that should be documented in the man page.

I'm using git version 1.7.3.2.
-- 
Robin Green
--
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]