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

#
#
# patch "database.cc"
#  from [767b1dad4f76946297d44574b9353d49b6e2aea1]
#    to [9341b8a07be7af789675c0d1f9af26273c6fa8b3]
#
# patch "database.hh"
#  from [c872c9417db96a5ff8d11bf106a094edda699534]
#    to [a3233d1208caea06b3ea1cf5e0b9d53079ebd012]
#
# patch "packet.cc"
#  from [06b93709b49bc581a5274afc7762f503abf89dc2]
#    to [c7fa83e44be5244218995087ba98814c0548bbf4]
#
============================================================
--- database.cc	767b1dad4f76946297d44574b9353d49b6e2aea1
+++ database.cc	9341b8a07be7af789675c0d1f9af26273c6fa8b3
@@ -1753,7 +1753,7 @@ database::put_revision(revision_id const
               % text(new_id.inner()()));
     }

-  deltify_revision(new_id);
+  //deltify_revision(new_id);

   // Phase 4: write the roster data and commit
   put_roster(new_id, ros, mm);
@@ -2840,8 +2840,7 @@ database::put_roster(revision_id const &
                      marking_map & marks)
 {
   MM(rev_id);
-  data old_data, new_data;
-  delta reverse_delta;
+  data new_data;
   hexenc<id> old_id, new_id;

   write_roster_and_marking(roster, marks, new_data);
@@ -2868,30 +2867,31 @@ database::put_roster(revision_id const &
     }

   // Else we have a new roster the database hasn't seen yet; our task is to
-  // add it, and deltify all the incoming edges (if they aren't already).
+  // add it.

-  put(new_id, new_data, data_table);
+  put_version(new_id, new_data, data_table);

   std::set<revision_id> parents;
   get_revision_parents(rev_id, parents);

-  // Now do what deltify would do if we bothered (we have the
-  // roster written now, so might as well do it here).
+  // we need to make a delta, any parent will do
+  bool written = false;
   for (std::set<revision_id>::const_iterator i = parents.begin();
        i != parents.end(); ++i)
     {
       if (null_id(*i))
         continue;
-      revision_id old_rev = *i;
-      get_roster_id_for_revision(old_rev, old_id);
-      if (exists(new_id, data_table))
-        {
-          get_version(old_id, old_data, data_table, delta_table);
-          diff(new_data, old_data, reverse_delta);
-          drop(old_id, data_table);
-          put_delta(old_id, new_id, reverse_delta, delta_table);
-        }
+      get_roster_id_for_revision(*i, old_id);
+      put_version(old_id, new_id, new_data, data_table, delta_table);
+      written = true;
+      break;
     }
+
+  if (!written)
+    {
+      put(new_data, new_data, data_table);
+    }
+
   guard.commit();
 }

============================================================
--- database.hh	c872c9417db96a5ff8d11bf106a094edda699534
+++ database.hh	a3233d1208caea06b3ea1cf5e0b9d53079ebd012
@@ -243,10 +243,10 @@ public:
   void put_file(file_id const & new_id,
                 file_data const & dat);

-  // store new version and update old version to be a delta
+  // store delta to new data. can be called
   void put_file_version(file_id const & old_id,
                         file_id const & new_id,
-                        file_delta const & del);
+                        file_data const & dat);

   // get plain version if it exists, or reconstruct version
   // from deltas (if they exist).
============================================================
--- packet.cc	06b93709b49bc581a5274afc7762f503abf89dc2
+++ packet.cc	c7fa83e44be5244218995087ba98814c0548bbf4
@@ -103,7 +103,7 @@ packet_db_writer::consume_file_delta(fil
   patch(old_dat.inner(), del.inner(), new_dat);
   calculate_ident(file_data(new_dat), confirm);
   if (confirm == new_id)
-    app.db.put_file_version(old_id, new_id, del);
+    app.db.put_file_version(old_id, new_id, new_dat);
   else
     {
       W(F("reconstructed file from delta '%s' -> '%s' has wrong id '%s'\n")