# # # patch "cmd_netsync.cc" # from [27116f6438d897147943b64f06fe2edd7ce2f15b] # to [52dc0d8a1b8a7bf8079441b5505aa9b4530f4154] # # patch "gsync.cc" # from [80cd12eeb807b0113268b62772e96a0d1549ed8e] # to [9c924a220189dd0b77a4ef2548002acd573c99cc] # # patch "gsync.hh" # from [6a96773b0c17214aab83a0540d9bb41f875263c4] # to [55c2690c41c78c33df2678cfc6e277baff0459c0] # ============================================================ --- cmd_netsync.cc 27116f6438d897147943b64f06fe2edd7ce2f15b +++ cmd_netsync.cc 52dc0d8a1b8a7bf8079441b5505aa9b4530f4154 @@ -499,7 +499,7 @@ CMD(gsync, "gsync", "", CMD_REF(network) N_("This synchronizes branches that match the pattern given in PATTERN " "with the gsync server at the address ADDRESS."), options::opts::set_default | options::opts::exclude | - options::opts::key_to_push) + options::opts::key_to_push | options::opts::dryrun) { utf8 addr; @@ -515,7 +515,7 @@ CMD(gsync, "gsync", "", CMD_REF(network) parse_uri(addr(), u); http_client h(app.opts, app.lua, u, include_pattern, exclude_pattern); run_gsync_protocol(app.lua, db, http_channel(h), - include_pattern, exclude_pattern); + include_pattern, exclude_pattern, app.opts.dryrun); } ============================================================ --- gsync.cc 80cd12eeb807b0113268b62772e96a0d1549ed8e +++ gsync.cc 9c924a220189dd0b77a4ef2548002acd573c99cc @@ -184,13 +184,16 @@ push_revs(database & db, static void push_revs(database & db, channel const & ch, - vector const & outbound_revs) + vector const & outbound_revs, + bool const dryrun) { ticker rev_ticker(N_("revisions"), "R", 1); ticker file_ticker(N_("files"), "f", 1); rev_ticker.set_total(outbound_revs.size()); + transaction_guard guard(db); + for (vector::const_iterator i = outbound_revs.begin(); i != outbound_revs.end(); ++i) { @@ -207,7 +210,8 @@ push_revs(database & db, { file_data data; db.get_file_version(f->second, data); - ch.push_file_data(f->second, data); + if (!dryrun) + ch.push_file_data(f->second, data); ++file_ticker; } @@ -216,29 +220,38 @@ push_revs(database & db, { file_delta delta; db.get_arbitrary_file_delta(f->second.first, f->second.second, delta); - ch.push_file_delta(f->second.first, f->second.second, delta); + if (!dryrun) + ch.push_file_delta(f->second.first, f->second.second, delta); ++file_ticker; } } - ch.push_rev(*i, rev); + if (!dryrun) + ch.push_rev(*i, rev); } + + if (!dryrun) + guard.commit(); } static void pull_revs(database & db, channel const & ch, - vector const & inbound_revs) + vector const & inbound_revs, + bool const dryrun) { ticker rev_ticker(N_("revisions"), "R", 1); ticker file_ticker(N_("files"), "f", 1); rev_ticker.set_total(inbound_revs.size()); + transaction_guard guard(db); + for (vector::const_iterator i = inbound_revs.begin(); i != inbound_revs.end(); ++i) { revision_t rev; + rev.made_for = made_for_database; ch.pull_rev(*i, rev); ++rev_ticker; @@ -251,7 +264,8 @@ pull_revs(database & db, { file_data data; ch.pull_file_data(f->second, data); - //db.put_file(f->second, data); + if (!dryrun) + db.put_file(f->second, data); ++file_ticker; } @@ -260,19 +274,25 @@ pull_revs(database & db, { file_delta delta; ch.pull_file_delta(f->second.first, f->second.second, delta); - //db.put_file_version(f->second.first, f->second.second, delta); + if (!dryrun) + db.put_file_version(f->second.first, f->second.second, delta); ++file_ticker; } } - //db.put_revsion(*i, rev); + if (!dryrun) + db.put_revision(*i, rev); } + + if (!dryrun) + guard.commit(); } void run_gsync_protocol(lua_hooks & lua, database & db, channel const & ch, globish const & include_pattern, // FIXME: use this pattern - globish const & exclude_pattern) // FIXME: use this pattern + globish const & exclude_pattern, // FIXME: use this pattern + bool const dryrun) { bool pushing = true, pulling = true; @@ -323,10 +343,10 @@ run_gsync_protocol(lua_hooks & lua, data // always received before child revisions. if (pushing) - push_revs(db, ch, outbound_revs); + push_revs(db, ch, outbound_revs, dryrun); if (pulling) - pull_revs(db, ch, inbound_revs); + pull_revs(db, ch, inbound_revs, dryrun); } #ifdef BUILD_UNIT_TESTS ============================================================ --- gsync.hh 6a96773b0c17214aab83a0540d9bb41f875263c4 +++ gsync.hh 55c2690c41c78c33df2678cfc6e277baff0459c0 @@ -52,7 +52,8 @@ run_gsync_protocol(lua_hooks & lua, data extern void run_gsync_protocol(lua_hooks & lua, database & db, channel const & ch, globish const & include_pattern, - globish const & exclude_pattern); + globish const & exclude_pattern, + bool const dryrun); // Local Variables: // mode: C++