On 02/03/2010 10:39, Philip Martin wrote:
Matthew Bentham<mj...@artvps.com>  writes:

+svn_wc__node_is_status_copied(svn_boolean_t *is_copied,
+                              svn_wc_context_t *wc_ctx,
+                              const char *local_abspath,
+                              apr_pool_t *scratch_pool)
+{
+  svn_wc__db_status_t status;
+  svn_boolean_t added;
+
+  SVN_ERR(svn_wc__node_is_status_added(&added, wc_ctx, local_abspath,
+                                scratch_pool));
+  if (!added)
+    {
+      *is_copied = FALSE;
+      return SVN_NO_ERROR;
+    }
+
+  SVN_ERR(svn_wc__db_scan_addition(&status,
+                                NULL, NULL, NULL, NULL,
+                                NULL, NULL, NULL, NULL,
+                                wc_ctx->db, local_abspath,
+                                scratch_pool, scratch_pool));
+  *is_copied = (status == svn_wc__db_status_copied);

What about svn_wc__db_status_moved_here?  That's a copy where the
source happened to be deleted as well.  What should _is_status_copied
return?  How should calculate_target_mergeinfo handle _moved_here?
Like copied or like added?

+
+  return SVN_NO_ERROR;

Perhaps calculate_target_mergeinfo should simply call _scan_addition
to get the added/copied/moved status?

It could do, but _scan_addition is private to libsvn_wc right now, like
_read_info (and indeed _status_copied and the other status enumerations). I understood the plan to be that for now we add small routines that call __db routines internally?

Matthew

Reply via email to