So Dan threw us for a loop, which Rich eventually figured out. Summary of what Dan was seeing:
1. Dan changed usr/src/uts/intel/ip/ip.global-objs.debug64 to remove udp_version. Same story for obj64. This was in a changeset along his own development branch. 2. Dan then committed another changeset on his development branch to restore those symbols. 3. Later, when Phil Kirk pushed the Clearview changes, he ALSO removed those symbols. If you do an "hg log -r X" to show any of these three changesets, it correctly identifies changes to the appropriate files. If you do "hg log filepath" to work backwards from the file to the changeset, it does NOT identify change number 3. If you do "hg log -I filepath" to work backwards from the file to the changeset, but use a Mercurial pattern instead of an explicit filepath (even though you have given the same, explicit path) it DOES correctly show all three changes. What's going on: the manifest for changeset 3, above, is actually pointing to the filelog entry for changeset 1, above. Because the versions of the file are exactly identical. So there is *no* entry in the filelog for changeset 3. It is further likely that this is triggering Mercurial issue 1327, in which merge is choosing the wrong ancestor for comparison during the merge. Which is seriously bad juju: in Dan's case, Mercurial chose an ancestor changeset that was NOT IN THE LINEAR HERITAGE OF BOTH CHILD AND PARENT. The consequences of which may be left as an exercise for the interested reader. Hint: it is impossible to merge correctly under these circumstances. :( --Mark