The unified diff between revisions [6cba104d..] and [c8f87fcb..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'database.cc'
#
#
# patch "database.cc"
# from [767b1dad4f76946297d44574b9353d49b6e2aea1]
# to [9341b8a07be7af789675c0d1f9af26273c6fa8b3]
#
============================================================
--- 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();
}