You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/04/27 20:46:05 UTC

svn commit: r1097203 - in /subversion/trunk/subversion: svn/cl.h svn/info-cmd.c svn/status.c svn/tree-conflicts.c svn/tree-conflicts.h svn/util.c tests/cmdline/stat_tests.py

Author: hwright
Date: Wed Apr 27 18:46:05 2011
New Revision: 1097203

URL: http://svn.apache.org/viewvc?rev=1097203&view=rev
Log:
Update the commandline client tree conflict output to use
svn_wc_conflict_description2_t structs.  To do this, we resurrect an old
utility function removed without explanation in r1089593.

* subversion/tests/cmdline/stat_tests.py
  (status_with_tree_conflicts): Reorder expected output.

* subversion/svn/cl.h
  (svn_cl__cd_to_cd2): New.

* subversion/svn/util.c
  (svn_cl__cd_to_cd2): New (well, resurrected from libsvn_wc@1089592).

* subversion/svn/status.c
  (print_status): Convert old conflict descriptor to new.

* subversion/svn/info-cmd.c
  (print_info_xml, print_info): Same.

* subversion/svn/tree-conflicts.c:
  Switch from svn_wc_conflict_description_t to svn_wc_conflict_description2_t.

* subversion/svn/tree-conflicts.h
  (svn_cl__get_human_readable_tree_conflict_description,
   svn_cl__append_tree_conflict_info_xml): Update param types as above.

Modified:
    subversion/trunk/subversion/svn/cl.h
    subversion/trunk/subversion/svn/info-cmd.c
    subversion/trunk/subversion/svn/status.c
    subversion/trunk/subversion/svn/tree-conflicts.c
    subversion/trunk/subversion/svn/tree-conflicts.h
    subversion/trunk/subversion/svn/util.c
    subversion/trunk/subversion/tests/cmdline/stat_tests.py

Modified: subversion/trunk/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/cl.h?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/cl.h (original)
+++ subversion/trunk/subversion/svn/cl.h Wed Apr 27 18:46:05 2011
@@ -809,6 +809,11 @@ svn_cl__opt_parse_path(svn_opt_revision_
 svn_error_t *
 svn_cl__assert_homogeneous_target_type(const apr_array_header_t *targets);
 
+/* Temp function for updating output functions. */
+svn_wc_conflict_description2_t *
+svn_cl__cd_to_cd2(const svn_wc_conflict_description_t *conflict,
+                 apr_pool_t *result_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/trunk/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/info-cmd.c?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/info-cmd.c (original)
+++ subversion/trunk/subversion/svn/info-cmd.c Wed Apr 27 18:46:05 2011
@@ -230,7 +230,9 @@ print_info_xml(void *baton,
     }
 
   if (info->tree_conflict)
-    SVN_ERR(svn_cl__append_tree_conflict_info_xml(sb, info->tree_conflict,
+    SVN_ERR(svn_cl__append_tree_conflict_info_xml(sb,
+                                                  svn_cl__cd_to_cd2(
+                                                    info->tree_conflict, pool),
                                                   pool));
 
   /* "</entry>" */
@@ -456,7 +458,7 @@ print_info(void *baton,
       const char *src_right_version;
 
       SVN_ERR(svn_cl__get_human_readable_tree_conflict_description(
-                &desc, info->tree_conflict, pool));
+                &desc, svn_cl__cd_to_cd2(info->tree_conflict, pool), pool));
 
       src_left_version =
         svn_cl__node_description(info->tree_conflict->src_left_version,

Modified: subversion/trunk/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/status.c?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/status.c (original)
+++ subversion/trunk/subversion/svn/status.c Wed Apr 27 18:46:05 2011
@@ -180,7 +180,7 @@ print_status(const char *path,
           tree_status_code = 'C';
           SVN_ERR(svn_cl__get_human_readable_tree_conflict_description(
                             &desc,
-                            old_tree_conflict,
+                            svn_cl__cd_to_cd2(old_tree_conflict, pool),
                             pool));
           tree_desc_line = apr_psprintf(pool, "\n      >   %s", desc);
           (*tree_conflicts)++;

Modified: subversion/trunk/subversion/svn/tree-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/tree-conflicts.c?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/tree-conflicts.c (original)
+++ subversion/trunk/subversion/svn/tree-conflicts.c Wed Apr 27 18:46:05 2011
@@ -80,14 +80,14 @@ static const svn_token_map_t map_conflic
 
 /* Return a localized string representation of CONFLICT->action. */
 static const char *
-action_str(const svn_wc_conflict_description_t *conflict)
+action_str(const svn_wc_conflict_description2_t *conflict)
 {
   return _(svn_token__to_word(map_conflict_action_human, conflict->action));
 }
 
 /* Return a localized string representation of CONFLICT->reason. */
 static const char *
-reason_str(const svn_wc_conflict_description_t *conflict)
+reason_str(const svn_wc_conflict_description2_t *conflict)
 {
   return _(svn_token__to_word(map_conflict_reason_human, conflict->reason));
 }
@@ -96,7 +96,7 @@ reason_str(const svn_wc_conflict_descrip
 svn_error_t *
 svn_cl__get_human_readable_tree_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description_t *conflict,
+  const svn_wc_conflict_description2_t *conflict,
   apr_pool_t *pool)
 {
   const char *action, *reason, *operation;
@@ -117,7 +117,7 @@ svn_cl__get_human_readable_tree_conflict
 static svn_error_t *
 add_conflict_version_xml(svn_stringbuf_t **pstr,
                          const char *side,
-                         svn_wc_conflict_version_t *version,
+                         const svn_wc_conflict_version_t *version,
                          apr_pool_t *pool)
 {
   apr_hash_t *att_hash = apr_hash_make(pool);
@@ -150,14 +150,14 @@ add_conflict_version_xml(svn_stringbuf_t
 svn_error_t *
 svn_cl__append_tree_conflict_info_xml(
   svn_stringbuf_t *str,
-  const svn_wc_conflict_description_t *conflict,
+  const svn_wc_conflict_description2_t *conflict,
   apr_pool_t *pool)
 {
   apr_hash_t *att_hash = apr_hash_make(pool);
   const char *tmp;
 
   apr_hash_set(att_hash, "victim", APR_HASH_KEY_STRING,
-               svn_dirent_basename(conflict->path, pool));
+               svn_dirent_basename(conflict->local_abspath, pool));
 
   apr_hash_set(att_hash, "kind", APR_HASH_KEY_STRING,
                svn_cl__node_kind_str_xml(conflict->node_kind));

Modified: subversion/trunk/subversion/svn/tree-conflicts.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/tree-conflicts.h?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/tree-conflicts.h (original)
+++ subversion/trunk/subversion/svn/tree-conflicts.h Wed Apr 27 18:46:05 2011
@@ -48,7 +48,7 @@ extern "C" {
 svn_error_t *
 svn_cl__get_human_readable_tree_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description_t *conflict,
+  const svn_wc_conflict_description2_t *conflict,
   apr_pool_t *pool);
 
 /**
@@ -58,7 +58,7 @@ svn_cl__get_human_readable_tree_conflict
 svn_error_t *
 svn_cl__append_tree_conflict_info_xml(
   svn_stringbuf_t *str,
-  const svn_wc_conflict_description_t *conflict,
+  const svn_wc_conflict_description2_t *conflict,
   apr_pool_t *pool);
 
 #ifdef __cplusplus

Modified: subversion/trunk/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/util.c?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/util.c (original)
+++ subversion/trunk/subversion/svn/util.c Wed Apr 27 18:46:05 2011
@@ -1352,3 +1352,60 @@ svn_cl__assert_homogeneous_target_type(c
                                "targets"));
   return err;
 }
+
+svn_wc_conflict_description2_t *
+svn_cl__cd_to_cd2(const svn_wc_conflict_description_t *conflict,
+                 apr_pool_t *result_pool)
+{
+  svn_wc_conflict_description2_t *new_conflict;
+
+  if (conflict == NULL)
+    return NULL;
+
+  new_conflict = apr_pcalloc(result_pool, sizeof(*new_conflict));
+
+  svn_error_clear(
+    svn_dirent_get_absolute(&new_conflict->local_abspath, conflict->path,
+                            result_pool));
+  new_conflict->node_kind = conflict->node_kind;
+  new_conflict->kind = conflict->kind;
+  new_conflict->action = conflict->action;
+  new_conflict->reason = conflict->reason;
+  if (conflict->src_left_version)
+    new_conflict->src_left_version =
+          svn_wc_conflict_version_dup(conflict->src_left_version, result_pool);
+  if (conflict->src_right_version)
+    new_conflict->src_right_version =
+          svn_wc_conflict_version_dup(conflict->src_right_version, result_pool);
+
+  switch (conflict->kind)
+    {
+      case svn_wc_conflict_kind_property:
+        new_conflict->property_name = apr_pstrdup(result_pool,
+                                                  conflict->property_name);
+        /* Falling through. */
+
+      case svn_wc_conflict_kind_text:
+        new_conflict->is_binary = conflict->is_binary;
+        new_conflict->mime_type = conflict->mime_type
+                              ? apr_pstrdup(result_pool, conflict->mime_type)
+                              : NULL;
+        new_conflict->base_abspath = apr_pstrdup(result_pool,
+                                                 conflict->base_file);
+        new_conflict->their_abspath = apr_pstrdup(result_pool,
+                                                  conflict->their_file);
+        new_conflict->my_abspath = apr_pstrdup(result_pool,
+                                               conflict->my_file);
+        new_conflict->merged_file = conflict->merged_file
+                                    ? apr_pstrdup(result_pool,
+                                                  conflict->merged_file)
+                                    : NULL;
+        break;
+
+      case svn_wc_conflict_kind_tree:
+        new_conflict->operation = conflict->operation;
+        break;
+    }
+
+  return new_conflict;
+}

Modified: subversion/trunk/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/stat_tests.py?rev=1097203&r1=1097202&r2=1097203&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/stat_tests.py Wed Apr 27 18:46:05 2011
@@ -1725,10 +1725,10 @@ def status_with_tree_conflicts(sbox):
 
   # check status of G
   expected = svntest.verify.UnorderedOutput(
-         ["D     C %s\n" % pi,
-          "      >   local delete, incoming edit upon update\n",
-          "A  +  C %s\n" % rho,
+         ["A  +  C %s\n" % rho,
           "      >   local edit, incoming delete upon update\n",
+          "D     C %s\n" % pi,
+          "      >   local delete, incoming edit upon update\n",
           "!     C %s\n" % tau,
           "      >   local delete, incoming delete upon update\n",
           "Summary of conflicts:\n",