It seems impossible, but we somehow lost a small changeset during a 
boring-looking merge.  I can't share the repository publicly, but I'll try 
and show as much detail as I can.

A particular merge, SHA f1b6d234f, does not have a single-file bugfix that 
we expected it to have.  On examination, it turned out that although 
f1b6d234f^2 has the fix, it does not appear in the history of f1b6d234f at 
all (but does appear in --full-history).  `git diff f1b6d234f^2 f1b6d234f` 
shows the change being reverted by the merge.  The thing is, with respect 
to this particular file, f1b6d234f^1 and f1b6d234f^2 differ only in the one 
bugfix commit -- that is, they have precisely the same history except for 
the one bugfix commit in f1b6d234f^2[1].

`git show` shows the same thing as the filesystem.  `git fsck` shows some 
dangling blobs, but nothing new or related to this.  Trying to cherry-pick 
or re-merge f1b6d234f^2 into f1b6d234f doesn't do anything; git feels that 
f1b6d234f is already up to date with respect to f1b6d234f^2.  The 
repository itself seems to be healthy: you can clone it, make new branches, 
and so on without a problem.  Strangest of all, I can't _reproduce_ this 
problem: when I check out f1b6d234f^1 and merge f1b6d234f^2 into it, or 
vice versa, I get the result I expect.

So, why might the merge have discarded that commit?  Are there other 
debugging steps I can take?  What could we have done to prevent this from 
happening?

1:
Some output from `git log` which demonstrates this, unless I've 
misunderstood something:

> git log -b f1b6d234f "--pretty=tformat:%h %aD" -n4 path/to/file
731c326 Mon, 26 Sep 2016 14:07:20 -0400
f0dde96 Mon, 26 Sep 2016 13:43:13 -0400
b54b363 Thu, 12 Feb 2015 13:42:32 -0500
12b6a8a Thu, 12 Feb 2015 00:01:41 -0500

> git log -b f1b6d234f^1 "--pretty=tformat:%h %aD" -n4 path/to/file
731c326 Mon, 26 Sep 2016 14:07:20 -0400
f0dde96 Mon, 26 Sep 2016 13:43:13 -0400
b54b363 Thu, 12 Feb 2015 13:42:32 -0500
12b6a8a Thu, 12 Feb 2015 00:01:41 -0500

> git log -b f1b6d234f^2 "--pretty=tformat:%h %aD" -n4 path/to/file
cd7dcd2 Mon, 17 Oct 2016 14:31:00 +0200 <---- the missing commit
731c326 Mon, 26 Sep 2016 14:07:20 -0400
f0dde96 Mon, 26 Sep 2016 13:43:13 -0400
b54b363 Thu, 12 Feb 2015 13:42:32 -0500

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to