# # # patch "automate.cc" # from [cbc2ecddb1fa890faa7b99fd0c35d7d656fffb8e] # to [b8ee9e9e4596dabda0b12ba523f76366d32318cc] # # patch "commands.cc" # from [d1d9896cd121cdb36a967fb6edf2cc3dadca223a] # to [34b4087e4cfcb4c961f6294e24e6017aa009a62f] # # patch "restrictions.cc" # from [f5cab737be95578e12d7e329b85e9875ab140632] # to [584281ed978331320b93c89b7b1d26958dcb957e] # # patch "revision.cc" # from [008e617432dd9433d1aee809905eb469a8c62003] # to [eefca616052e66a180adf8ef99474ef84c34654e] # # patch "revision.hh" # from [3c1e8bd89ac05abcccf1e471ad2a3bc4a12f140d] # to [5d246a7c01d201f05d47109060a2f21729850b8c] # # patch "roster.cc" # from [9400c70e2c52a554afa3ea25f149e1ab661be835] # to [ba50d5cdfd2c149b6151036c8eb6d8f60c64f9c7] # # patch "roster.hh" # from [623bdc84dbfb824853a489586d6d4358be54e512] # to [6cd1f8fcb7d6470dd2bdcd7ad1652b47811607a2] # ============================================================ --- automate.cc cbc2ecddb1fa890faa7b99fd0c35d7d656fffb8e +++ automate.cc b8ee9e9e4596dabda0b12ba523f76366d32318cc @@ -939,13 +939,18 @@ if (args.size() == 0) { + roster_t old_roster, new_roster; + temp_node_id_source nis; + revision_id old_revision_id; revision_set rev; - roster_t old_roster, new_roster; app.require_working_copy(); - get_unrestricted_working_revision_and_rosters(app, rev, - old_roster, - new_roster); + get_base_and_current_roster_shape(old_roster, new_roster, nis, app); + update_current_roster_from_filesystem(new_roster, app); + + get_revision_id(old_revision_id); + make_revision_set(old_revision_id, old_roster, new_roster, rev); + calculate_ident(rev, ident); write_revision_set(rev, dat); } ============================================================ --- commands.cc d1d9896cd121cdb36a967fb6edf2cc3dadca223a +++ commands.cc 34b4087e4cfcb4c961f6294e24e6017aa009a62f @@ -342,6 +342,7 @@ inodeprint_map ipm_new; revision_set rev; roster_t old_roster, new_roster; + get_unrestricted_working_revision_and_rosters(app, rev, old_roster, new_roster); @@ -2201,11 +2202,14 @@ if (args.size() < 2 || args.size() > 4) throw usage(name); - revision_set rs; roster_t old_roster, new_roster; + temp_node_id_source nis; app.require_working_copy(); - get_unrestricted_working_revision_and_rosters(app, rs, old_roster, new_roster); + get_base_and_current_roster_shape(old_roster, new_roster, nis, app); + + // FIXME_RESTRICTIONS: is there any reason to update content hashes here? + update_current_roster_from_filesystem(new_roster, app); file_path path = file_path_external(idx(args,1)); split_path sp; @@ -2723,7 +2727,7 @@ mask.add_nodes(old_roster, paths); mask.add_nodes(new_roster, paths); - update_working_roster_from_filesystem(new_roster, mask, app); + update_current_roster_from_filesystem(new_roster, mask, app); make_restricted_csets(old_roster, new_roster, included, excluded, mask); @@ -2748,7 +2752,7 @@ mask.add_nodes(old_roster, paths); mask.add_nodes(new_roster, paths); - update_working_roster_from_filesystem(new_roster, mask, app); + update_current_roster_from_filesystem(new_roster, mask, app); make_restricted_csets(old_roster, new_roster, included, excluded, mask); ============================================================ --- restrictions.cc f5cab737be95578e12d7e329b85e9875ab140632 +++ restrictions.cc 584281ed978331320b93c89b7b1d26958dcb957e @@ -351,7 +351,7 @@ mask.add_nodes(new_roster, paths); // Now update any idents in the new roster - update_working_roster_from_filesystem(new_roster, mask, app); + update_current_roster_from_filesystem(new_roster, mask, app); calculate_ident(new_roster, rev.new_manifest); L(F("new manifest_id is %s\n") % rev.new_manifest); ============================================================ --- revision.cc 008e617432dd9433d1aee809905eb469a8c62003 +++ revision.cc eefca616052e66a180adf8ef99474ef84c34654e @@ -528,6 +528,25 @@ } } + +void +make_revision_set(revision_id const & old_rev_id, + roster_t const & old_roster, + roster_t const & new_roster, + revision_set & rev) +{ + boost::shared_ptr cs(new cset()); + + rev.edges.clear(); + make_cset(old_roster, new_roster, *cs); + + calculate_ident(new_roster, rev.new_manifest); + L(F("new manifest_id is %s\n") % rev.new_manifest); + + safe_insert(rev.edges, std::make_pair(old_rev_id, cs)); +} + + // Stuff related to rebuilding the revision graph. Unfortunately this is a // real enough error case that we need support code for it. ============================================================ --- revision.hh 3c1e8bd89ac05abcccf1e471ad2a3bc4a12f140d +++ revision.hh 5d246a7c01d201f05d47109060a2f21729850b8c @@ -24,19 +24,15 @@ // new_manifest [16afa28e8783987223993d67f54700f0ecfedfaa] // // old_revision [d023242b16cbdfd46686a5d217af14e3c339f2b4] -// old_manifest [2dc4a99e27a0026395fbd4226103614928c55c77] // -// delete_file "deleted-file.cc" +// delete "deleted-file.cc" // -// rename_file "old-file.cc" -// to "new-file.cc" +// rename "old-file.cc" +// to "new-file.cc" // // add_file "added-file.cc" +// content [da39a3ee5e6b4b0d3255bfef95601890afd80709] // -// patch "added-file.cc" -// from [] -// to [da39a3ee5e6b4b0d3255bfef95601890afd80709] -// // patch "changed-file.cc" // from [588fd8a7bcde43a46f0bde1dd1d13e9e77cf25a1] // to [559133b166c3154c864f912e9f9452bfc452dfdd] @@ -145,6 +141,12 @@ std::set & nodes_modified, app_state & app); +void +make_revision_set(revision_id const & old_rev_id, + roster_t const & old_roster, + roster_t const & new_roster, + revision_set & rev); + /* void calculate_composite_cset(revision_id const & ancestor, ============================================================ --- roster.cc 9400c70e2c52a554afa3ea25f149e1ab661be835 +++ roster.cc ba50d5cdfd2c149b6151036c8eb6d8f60c64f9c7 @@ -2013,7 +2013,7 @@ } void -update_working_roster_from_filesystem(roster_t & ros, +update_current_roster_from_filesystem(roster_t & ros, restriction const & mask, app_state & app) { @@ -2074,6 +2074,14 @@ % missing_files); } +void +update_current_roster_from_filesystem(roster_t & ros, + app_state & app) +{ + restriction tmp; + update_current_roster_from_filesystem(ros, tmp, app); +} + void roster_t::extract_path_set(path_set & paths) const { ============================================================ --- roster.hh 623bdc84dbfb824853a489586d6d4358be54e512 +++ roster.hh 6cd1f8fcb7d6470dd2bdcd7ad1652b47811607a2 @@ -316,10 +316,14 @@ app_state & app); void -update_working_roster_from_filesystem(roster_t & ros, +update_current_roster_from_filesystem(roster_t & ros, restriction const & mask, app_state & app); +void +update_current_roster_from_filesystem(roster_t & ros, + app_state & app); + void extract_roster_path_set(roster_t const & ros, path_set & paths);