Re: Bizarre missing changes (git bug?)
- From
- Roman Zippel <zippel@linux-m68k.org>
- Date
- Jul 30, 2008, 02:48 UTC
- Message-ID
- <Pine.LNX.4.64.0807300430590.6791@localhost.localdomain>
- In-Reply-To
- <20080729125247.GC12069@sigill.intra.peff.net>
Hi,
On Tue, 29 Jul 2008, Jeff King wrote:
Show 20 quoted lines
> > > Perhaps I am just slow, but I haven't been able to figure out what that > > > history is, or what the "correct" output should be. Can you try to state > > > more clearly what it is you are looking for? > > > > Most frequently this involves changes where the same change is merged > > twice. Another interesting example is kernel/printk.c where a change is > > added and later removed again before it's merged. > > I glanced briefly over "gitk kernel/printk.c" and it looks pretty sane. > I was really hoping for you to make your case as something like: > > 1. here is an ascii diagram of an actual history graph (or a recipe of > git commands for making one) > 2. here is what git-log (or gitk) produces for this history by > default; and here is why it is not optimal (presumably some > information it fails to convey) > 3. here is what git-log (or gitk) with --full-history produces; and > here is why it is not optimal (presumably because it is too messy) > 4. here is what output I would like to see. Bonus points for "and here > is an algorithm that accomplishes it."
For printk.c look for commit 02630a12c7f72fa294981c8d86e38038781c25b7 and try to find it in the graphical outputs. Here is a bit better example than Linus gave:
mkdir test cd test git init
echo 1 > file1 echo a > file2
git add file1 file2 git commit -m "initial commit" git tag base
git branch test1 base git checkout test1 echo 2 > file1 git commit -a -m "duplicate change 1"
git branch test2 base git checkout test2 echo 2 > file1 git commit -a -m "duplicate change 2"
git branch test3 base git checkout test3 echo b > file2 git commit -a -m "some other change"
git checkout base
git merge test1 git merge test2 git merge test3
Now compare the output of "git-log file1", "git-log --full-history file1" and "git-log --full-history --parents file1". You get either both merge commits or none, but only one of it is relevant to file1.
The problem is that in practice "git-log --full-history --parents" produces way too much information to be useful right away.
bye, Roman