The unified diff between revisions [d5e684d1..] and [eece92e6..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "enumerator.cc"
#  from [e897365e1dce39cc4a2261c09e2d172e237a5ff3]
#    to [ac1b4a2627f91cb4ea304a5a6a7f5de363447d02]
#
============================================================
--- enumerator.cc	e897365e1dce39cc4a2261c09e2d172e237a5ff3
+++ enumerator.cc	ac1b4a2627f91cb4ea304a5a6a7f5de363447d02
@@ -82,7 +82,7 @@ revision_enumerator::files_for_revision(
   // do a delta. If both sides say "add", do a data."

   set<file_id> file_adds;
-  // map<dst, src>.  src is arbitrary.
+  // map<dst, src>.  src is arbitrary if there are multiples.
   map<file_id, file_id> file_deltas;
   map<file_id, size_t> file_edge_counts;

@@ -127,6 +127,7 @@ revision_enumerator::files_for_revision(
        i != file_edge_counts.end(); i++)
     {
       MM(i->first);
+      L(FL("edge %s count %d") % i->first.inner()() % i->second);
       if (i->second < num_edges)
         continue;

@@ -177,12 +178,10 @@ revision_enumerator::process_bunch()

       files_for_revision(r, full_files, del_files);

-      set<file_id> top_files;
-      set<file_id> dst_files;
-
       for (set<file_id>::const_iterator f = full_files.begin();
            f != full_files.end(); f++)
         {
+          L(FL("full_file %s") % f->inner()());
           bunch_files.insert(*f);
           top_files.insert(*f);
           dst_files.insert(*f);
@@ -191,11 +190,15 @@ revision_enumerator::process_bunch()
       for (set<pair<file_id,file_id> >::const_iterator fd = del_files.begin();
            fd != del_files.end(); fd++)
         {
-          file_id src(fd->second);
-          file_id dst(fd->first);
-          bunch_file_deltas.insert(make_pair(fd->second, fd->first));
+          L(FL("del_file %s->%s") % fd->first.inner()() % fd->second.inner()());
+          file_id src(fd->first);
+          file_id dst(fd->second);
+          bunch_file_deltas.insert(make_pair(fd->first, fd->second));
           if (dst_files.find(src) == dst_files.end())
-            top_files.insert(src);
+            {
+              L(FL("added del_file to top_files"));
+              top_files.insert(src);
+            }
           dst_files.insert(dst);
         }
     }