# # # patch "ChangeLog" # from [ae9c43b1b125ebbf11fe934e39d9b8f9e3111149] # to [c433fe9a3f4053be7ed933e318bfc219ef0e8962] # # patch "testsuite.lua" # from [3cd1fd512cde3e786e1b98e8f173226c259a2a5f] # to [4afc5693f8639e1ab6dabbccb9bb6e8cef385206] # # patch "work.cc" # from [54e947bd3d5aca7ad8704c04818e0e2d6f003c1c] # to [39c3d0d52d35a71bf26b5480c0766189c70f6588] # ============================================================ --- ChangeLog ae9c43b1b125ebbf11fe934e39d9b8f9e3111149 +++ ChangeLog c433fe9a3f4053be7ed933e318bfc219ef0e8962 @@ -1,5 +1,11 @@ 2007-02-07 Derek Scherger + * work.cc (struct workspace_itemizer): return boolean from visit_dir + (perform_content_update): get list of known paths for visit_dir to use + * testsuite.lua: account for renamed test + +2007-02-07 Derek Scherger + * NEWS: add notes about changes to ls unknown's behaviour 2007-02-07 Derek Scherger ============================================================ --- testsuite.lua 3cd1fd512cde3e786e1b98e8f173226c259a2a5f +++ testsuite.lua 4afc5693f8639e1ab6dabbccb9bb6e8cef385206 @@ -672,7 +672,7 @@ table.insert(tests, "log_quits_on_SIGPIP table.insert(tests, "restrictions_with_deletes") table.insert(tests, "log_with_restriction") table.insert(tests, "log_quits_on_SIGPIPE") -table.insert(tests, "drop_directory_with_unversioned_files_and_merge") +table.insert(tests, "drop_directory_with_unversioned_files_and_update") table.insert(tests, "checkout_-r_no_dir") table.insert(tests, "annotate_with_human_output") table.insert(tests, "automate_genkey") ============================================================ --- work.cc 54e947bd3d5aca7ad8704c04818e0e2d6f003c1c +++ work.cc 39c3d0d52d35a71bf26b5480c0766189c70f6588 @@ -477,21 +477,23 @@ struct workspace_itemizer : public tree_ struct workspace_itemizer : public tree_walker { roster_t & roster; + path_set & known; node_id_source & nis; - workspace_itemizer(roster_t & r, node_id_source & n) - : roster(r), nis(n) {} - virtual void visit_dir(file_path const & path); + workspace_itemizer(roster_t & r, path_set & k, node_id_source & n) + : roster(r), known(k), nis(n) {} + virtual bool visit_dir(file_path const & path); virtual void visit_file(file_path const & path); }; -void +bool workspace_itemizer::visit_dir(file_path const & path) { split_path sp; path.split(sp); node_id nid = roster.create_dir_node(nis); roster.attach_node(nid, sp); + return known.find(sp) != known.end(); } void @@ -1570,12 +1572,17 @@ workspace::perform_content_update(cset c roster_t roster; temp_node_id_source nis; split_path root; - file_path().split(root); + path_set known; + roster_t new_roster; + file_path().split(root); node_id nid = roster.create_dir_node(nis); roster.attach_node(nid, root); - workspace_itemizer itemizer(roster, nis); + get_current_roster_shape(new_roster, nis); + new_roster.extract_path_set(known); + + workspace_itemizer itemizer(roster, known, nis); walk_tree(file_path(), itemizer); simulated_working_tree swt(roster, nis);