#
# patch "ChangeLog"
# from [85c91026c2337bcd14c921adfe24326327ae6199]
# to [c3089fbae7f78f8c0b6419f40270c96678d4cc0b]
#
# patch "netsync.cc"
# from [248489d7ad1d4b104cd1e607ad1714205be6c5a2]
# to [def56886b6d662112d0fe727c4ef833a04049f83]
#
# patch "vocab.cc"
# from [81220896b3d16dfa324aae78d7e5bdae045c4d83]
# to [41fd233b49106424431b40d9b021959b607590f2]
#
========================================================================
--- ChangeLog 85c91026c2337bcd14c921adfe24326327ae6199
+++ ChangeLog c3089fbae7f78f8c0b6419f40270c96678d4cc0b
@@ -162,6 +162,14 @@
(Branching and Merging) ended up as a a separate chapter of it's
own...
+2005-09-27 Matt Johnston
+
+ * netsync.cc (ancestry_fetcher): new approach to requesting file
+ and manifest deltas and full data. Tries to be more efficient
+ for the vcache of recontstructed data, and conceptually simpler
+
+ * tests/t_netsync_unrelated.at: passes, remove XFAIL
+
2005-09-26 Benoît Dejean
* database.cc: Merged 3 strings.
@@ -338,14 +346,6 @@
* botan/*: update to Botan 1.4.6
* Makefile.am: ditto
-2005-09-27 Matt Johnston
-
- * netsync.cc (ancestry_fetcher): new approach to requesting file
- and manifest deltas and full data. Tries to be more efficient
- for the vcache of recontstructed data, and conceptually simpler
-
- * tests/t_netsync_unrelated.at: passes, remove XFAIL
-
2005-09-15 Timothy Brownawell
* app_state.{cc,hh}: restrictions now understand --exclude
========================================================================
--- netsync.cc 248489d7ad1d4b104cd1e607ad1714205be6c5a2
+++ netsync.cc def56886b6d662112d0fe727c4ef833a04049f83
@@ -3628,7 +3628,7 @@
// a set of reverse file/manifest deltas (we stop when we hit an
// already-seen or existing-in-db rev).
//
-// at the same time, build up smaller set of forward deltas (files and
+// at the same time, build a (smaller) set of forward deltas (files and
// manifests). these have a file/manifest in the new head as the
// destination, and end up having an item already existing in the
// database as the source (or null, in which case full data is
@@ -3686,8 +3686,8 @@
{
file_id parent_file (delta_entry_src(d));
file_id child_file (delta_entry_dst(d));
- L(F("traverse_files parent %s child %s")
- % parent_file % child_file);
+ MM(parent_file);
+ MM(child_file);
I(!(parent_file == child_file));
// when changeset format is altered to have [...]->[] deltas on deletion,
@@ -3697,14 +3697,12 @@
// request the reverse delta
if (!null_id(parent_file))
{
- L(F("inserting file rev_deltas"));
rev_file_deltas.insert(make_pair(child_file, parent_file));
}
// add any new forward deltas
if (seen_files.find(child_file) == seen_files.end())
{
- L(F("inserting fwd_jump_deltas"));
fwd_file_deltas.insert( make_pair( parent_file, child_file ) );
}
@@ -3738,13 +3736,12 @@
ancestry_fetcher::traverse_manifest(manifest_id const & child_man,
manifest_id const & parent_man)
{
- L(F("traverse_manifest parent %s child %s")
- % parent_man % child_man);
+ MM(child_man);
+ MM(parent_man);
I(!null_id(child_man));
// add reverse deltas
if (!null_id(parent_man))
{
- L(F("inserting manifest rev_deltas"));
rev_manifest_deltas.insert(make_pair(child_man, parent_man));
}
@@ -3781,7 +3778,7 @@
for (set::const_iterator h = heads.begin();
h != heads.end(); h++)
{
- L(F("inserting head %s") % *h);
+ L(F("traversing head %s") % *h);
frontier.push_back(*h);
seen_revs.insert(*h);
manifest_id const & m = sess.ancestry[*h]->second.new_manifest;
@@ -3792,19 +3789,19 @@
while (!frontier.empty())
{
revision_id const & rev = frontier.front();
+ MM(rev);
- L(F("frontier %s") % rev);
I(sess.ancestry.find(rev) != sess.ancestry.end());
for (edge_map::const_iterator e = sess.ancestry[rev]->second.edges.begin();
e != sess.ancestry[rev]->second.edges.end(); e++)
{
revision_id const & par = edge_old_revision(e);
+ MM(par);
if (seen_revs.find(par) == seen_revs.end())
{
if (sess.ancestry.find(par) != sess.ancestry.end())
{
- L(F("push_back to frontier %s") % par);
frontier.push_back(par);
}
seen_revs.insert(par);
@@ -3831,6 +3828,7 @@
while (!frontier.empty())
{
file_id const child = frontier.top();
+ MM(child);
I(!null_id(child));
frontier.pop();
@@ -3840,24 +3838,18 @@
d++)
{
file_id const & parent = d->second;
+ MM(parent);
I(!null_id(parent));
if (done_files.find(parent) == done_files.end())
{
done_files.insert(parent);
if (!sess.app.db.file_version_exists(parent))
{
- L(F("requesting reverse file delta %s->%s")
- % child % parent);
sess.queue_send_delta_cmd(file_item,
plain_id(child), plain_id(parent));
sess.reverse_delta_requests.insert(make_pair(plain_id(child),
plain_id(parent)));
}
- else
- {
- L(F("file %s exists, not requesting rev delta")
- % parent);
- }
frontier.push(parent);
}
}
@@ -3875,28 +3867,22 @@
{
file_id const & anc = d->first;
file_id const & child = d->second;
+ MM(anc);
+ MM(child);
if (!sess.app.db.file_version_exists(child))
{
if (null_id(anc)
|| !sess.app.db.file_version_exists(anc))
{
- L(F("requesting full file %s") % child);
sess.queue_send_data_cmd(file_item, plain_id(child));
}
else
{
- L(F("requesting forward delta %s->%s")
- % anc % child);
sess.queue_send_delta_cmd(file_item,
plain_id(anc), plain_id(child));
sess.note_item_full_delta(file_item, plain_id(child));
}
}
- else
- {
- L(F("not requesting fwd delta %s->%s, already have dst")
- % anc % child);
- }
// traverse up the reverse deltas
request_rev_file_deltas(child, done_files);
@@ -3913,6 +3899,7 @@
while (!frontier.empty())
{
manifest_id const child = frontier.top();
+ MM(child);
I(!null_id(child));
frontier.pop();
@@ -3922,30 +3909,26 @@
d++)
{
manifest_id const & parent = d->second;
+ MM(parent);
I(!null_id(parent));
if (done_manifests.find(parent) == done_manifests.end())
{
done_manifests.insert(parent);
if (!sess.app.db.manifest_version_exists(parent))
{
- L(F("requesting reverse manifest delta %s->%s")
- % child % parent);
sess.queue_send_delta_cmd(manifest_item,
plain_id(child), plain_id(parent));
sess.reverse_delta_requests.insert(make_pair(plain_id(child),
plain_id(parent)));
}
- else
- {
- L(F("manifest %s exists, not requesting rev delta")
- % parent);
- }
frontier.push(parent);
}
}
}
}
+// could try and make this a template function, is the same as request_files(),
+// though it calls non-template functions
void
ancestry_fetcher::request_manifests()
{
@@ -3957,28 +3940,22 @@
{
manifest_id const & anc = d->first;
manifest_id const & child = d->second;
+ MM(anc);
+ MM(child);
if (!sess.app.db.manifest_version_exists(child))
{
if (null_id(anc)
|| !sess.app.db.manifest_version_exists(anc))
{
- L(F("requesting full manifest %s") % child);
sess.queue_send_data_cmd(manifest_item, plain_id(child));
}
else
{
- L(F("requesting forward delta %s->%s")
- % anc % child);
sess.queue_send_delta_cmd(manifest_item,
plain_id(anc), plain_id(child));
sess.note_item_full_delta(manifest_item, plain_id(child));
}
}
- else
- {
- L(F("not requesting fwd delta %s->%s, already have dst")
- % anc % child);
- }
// traverse up the reverse deltas
request_rev_manifest_deltas(child, done_manifests);
========================================================================
--- vocab.cc 81220896b3d16dfa324aae78d7e5bdae045c4d83
+++ vocab.cc 41fd233b49106424431b40d9b021959b607590f2
@@ -231,6 +231,12 @@
template
void dump(revision_id const & r, std::string &);
+template
+void dump(manifest_id const & r, std::string &);
+
+template
+void dump(file_id const & r, std::string &);
+
// the rest is unit tests
#ifdef BUILD_UNIT_TESTS