Skip an extra pass over a copied file: compute the checksum as we copy it. Also, make sure that we always have a checksum for the new (updated) text base, and get that installed.
Skip an extra pass over a copied file: compute the checksum as we copy it.
Also, make sure that we always have a checksum for the new (updated) text
base, and get that installed.

Note: there was some crappy old logic in there that said "if this file was
replaced, then it has no checksum". Totally bogus. LOOK for the checksum,
rather than make random implied assumptions. The WC library is full of
this kind of bogosity :-(

I also tweaked tree_has_local_mods() to take a cancel func/baton, which I
found readily available in the caller's edit baton.

* subversion/libsvn_wc/update_editor.c:
  (tree_has_local_mods): take a cancel func/baton and pass it to
    svn_wc_walk_entries3().
  (check_tree_conflict): pass cancel func/baton
  (choose_base_paths): remove the use_revert_base_p argument. an earlier
    change made it a simple duplicate of replaced_p.
  (apply_textdelta): adjust call to choose_base_paths() and just use the
    replaced flag as appropriate.
  (merge_file): take the actual checksum computed for the (new) text base,
    and install it unconditionally into the entries file.
  (close_file): redo the checksum logic and computation, and pass the base
    checksum to merge_file().

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion