You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2015/11/30 11:24:23 UTC

svn commit: r1717223 [38/50] - in /subversion/branches/ra-git: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ contrib/hook-scripts/ notes/ notes/api-errata/1.9/ notes/move-tracking/ subversion/ subversion/bindings/ctypes-python/...

Modified: subversion/branches/ra-git/subversion/po/es.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/es.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/es.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/es.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10197,13 +10197,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr ""
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"Commit de la revisión %ld.\n"
+"Commit de la revisión %ld%s.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/fr.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/fr.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/fr.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/fr.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -11331,6 +11331,11 @@ msgstr "Mise à jour de '%s'\n"
 msgid "Redirecting to URL '%s':\n"
 msgstr "Redirection vers l'URL '%s' :\n"
 
+#: ../svn/notify.c:1066
+#, c-format
+msgid "Committing transaction...\n"
+msgstr "Transaction de propagation...\n"
+
 #: ../svn/propdel-cmd.c:88
 #, c-format
 msgid "Cannot specify revision for deleting versioned property '%s'"
@@ -11543,10 +11548,8 @@ msgstr "'%s' actualisé à la révision
 #: ../svn/util.c:76
 #, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
 "Révision %ld%s propagée.\n"
 
 #: ../svn/util.c:80

Modified: subversion/branches/ra-git/subversion/po/it.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/it.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/it.po (original)
+++ subversion/branches/ra-git/subversion/po/it.po Mon Nov 30 10:24:16 2015
@@ -10134,7 +10134,7 @@ msgstr ""
 #: ../svn/propedit-cmd.c:158
 #, c-format
 msgid "Set new value for property '%s' on revision %ld\n"
-msgstr "Impostazione di un nuovo volore per la proprietà '%s' nella revisione %ld\n"
+msgstr "Impostazione di un nuovo valore per la proprietà '%s' nella revisione %ld\n"
 
 #: ../svn/propedit-cmd.c:164
 #, c-format
@@ -10286,13 +10286,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr ""
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"Commit della Revisione %ld eseguito.\n"
+"Commit della Revisione %ld%s eseguito.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/ja.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/ja.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/ja.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/ja.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10643,13 +10643,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr ""
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"リビジョン %ld をコミットしました。\n"
+"リビジョン %ld%s をコミットしました。\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/ko.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/ko.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/ko.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/ko.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10530,10 +10530,8 @@ msgstr "  '%s' 을(를) r%ld 로 업데�
 #: ../svn/util.c:75
 #, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
 "커밋된 리비전 %ld%s.\n"
 
 #: ../svn/util.c:79

Modified: subversion/branches/ra-git/subversion/po/nb.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/nb.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/nb.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/nb.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10226,13 +10226,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr "lokal %s, innkommende %s på %s"
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"La inn revisjon %ld.\n"
+"La inn revisjon %ld%s.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/pl.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/pl.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/pl.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/pl.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10285,13 +10285,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr "lokalne: %s, przychodzące: %s, operacja: %s"
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"Zatwierdzona wersja %ld.\n"
+"Zatwierdzona wersja %ld%s.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/pt_BR.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/pt_BR.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/pt_BR.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/pt_BR.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10087,13 +10087,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr ""
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"Commit da revisão %ld.\n"
+"Commit da revisão %ld%s.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/po/sv.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/sv.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/sv.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/sv.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -13145,10 +13145,8 @@ msgstr "  Uppdaterade \"%s\" till r%ld.\
 #: ../svn/util.c:79
 #, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
 "Arkiverade revision %ld%s.\n"
 
 #: ../svn/util.c:83

Modified: subversion/branches/ra-git/subversion/po/zh_CN.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/zh_CN.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/zh_CN.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/zh_CN.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -11284,9 +11284,9 @@ msgid "done\n"
 msgstr "完成。\n"
 
 #: ../svn/notify.c:1066
-#, fuzzy, c-format
+#, c-format
 msgid "Committing transaction...\n"
-msgstr "正在读取事务"
+msgstr "正在读取事务\n"
 
 #: ../svn/propdel-cmd.c:88
 #, c-format
@@ -13710,10 +13710,9 @@ msgid "  Updated '%s' to r%ld.\n"
 msgstr "更新 '%s' 到版本 %ld。\n"
 
 #: ../svn/util.c:79
-#, fuzzy, c-format
+#, c-format
 msgid "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
 "提交后的版本为 %ld%s。\n"
 
 #: ../svn/util.c:83

Modified: subversion/branches/ra-git/subversion/po/zh_TW.po
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/po/zh_TW.po?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/po/zh_TW.po [UTF-8] (original)
+++ subversion/branches/ra-git/subversion/po/zh_TW.po [UTF-8] Mon Nov 30 10:24:16 2015
@@ -10123,13 +10123,11 @@ msgid "local %s, incoming %s upon %s"
 msgstr ""
 
 #: ../svn/util.c:74
-#, fuzzy, c-format
+#, c-format
 msgid ""
-"\n"
 "Committed revision %ld%s.\n"
 msgstr ""
-"\n"
-"送交修訂版 %ld.\n"
+"送交修訂版 %ld%s.\n"
 
 #: ../svn/util.c:78
 msgid " (the answer to life, the universe, and everything)"

Modified: subversion/branches/ra-git/subversion/svn/auth-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/svn/auth-cmd.c?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/svn/auth-cmd.c (original)
+++ subversion/branches/ra-git/subversion/svn/auth-cmd.c Mon Nov 30 10:24:16 2015
@@ -96,6 +96,39 @@ show_cert_failures(const char *failure_s
   return SVN_NO_ERROR;
 }
 
+
+/* decodes from format we store certs in for auth creds and
+ * turns parsing errors into warnings if PRINT_WARNING is TRUE
+ * and ignores them otherwise. returns NULL if it couldn't
+ * parse a cert for any reason. */
+static svn_x509_certinfo_t *
+parse_certificate(const svn_string_t *ascii_cert,
+                  svn_boolean_t print_warning,
+                  apr_pool_t *result_pool,
+                  apr_pool_t *scratch_pool)
+{
+  svn_x509_certinfo_t *certinfo;
+  const svn_string_t *der_cert;
+  svn_error_t *err;
+
+  /* Convert header-less PEM to DER by undoing base64 encoding. */
+  der_cert = svn_base64_decode_string(ascii_cert, scratch_pool);
+
+  err = svn_x509_parse_cert(&certinfo, der_cert->data, der_cert->len,
+                            result_pool, scratch_pool);
+  if (err)
+    {
+      /* Just display X.509 parsing errors as warnings and continue */
+      if (print_warning)
+        svn_handle_warning2(stderr, err, "svn: ");
+      svn_error_clear(err);
+      return NULL;
+    }
+
+  return certinfo;
+}
+
+
 struct walk_credentials_baton_t
 {
   int matches;
@@ -115,12 +148,58 @@ match_pattern(const char *pattern, const
   return (apr_fnmatch(p, value, flags) == APR_SUCCESS);
 }
 
+static svn_boolean_t
+match_certificate(svn_x509_certinfo_t **certinfo,
+                  const char *pattern,
+                  const svn_string_t *ascii_cert,
+                  apr_pool_t *result_pool,
+                  apr_pool_t *scratch_pool)
+{
+  const char *value;
+  const svn_checksum_t *checksum;
+  const apr_array_header_t *hostnames;
+  int i;
+
+  *certinfo = parse_certificate(ascii_cert, FALSE, result_pool, scratch_pool);
+  if (*certinfo == NULL)
+    return FALSE;
+
+  value = svn_x509_certinfo_get_subject(*certinfo, scratch_pool);
+  if (match_pattern(pattern, value, FALSE, scratch_pool))
+    return TRUE;
+
+  value = svn_x509_certinfo_get_issuer(*certinfo, scratch_pool);
+  if (match_pattern(pattern, value, FALSE, scratch_pool))
+    return TRUE;
+
+  checksum = svn_x509_certinfo_get_digest(*certinfo);
+  value = svn_checksum_to_cstring_display(checksum, scratch_pool);
+  if (match_pattern(pattern, value, TRUE, scratch_pool))
+    return TRUE;
+
+  hostnames = svn_x509_certinfo_get_hostnames(*certinfo);
+  if (hostnames)
+    {
+      for (i = 0; i < hostnames->nelts; i++)
+        {
+          const char *hostname = APR_ARRAY_IDX(hostnames, i, const char *);
+          if (match_pattern(pattern, hostname, TRUE, scratch_pool))
+            return TRUE;
+        }
+    }
+
+  return FALSE;
+}
+
+
 static svn_error_t *
 match_credential(svn_boolean_t *match,
+                 svn_x509_certinfo_t **certinfo,
                  const char *cred_kind,
                  const char *realmstring,
                  apr_array_header_t *patterns,
                  apr_array_header_t *cred_items,
+                 apr_pool_t *result_pool,
                  apr_pool_t *scratch_pool)
 {
   int i;
@@ -152,7 +231,8 @@ match_credential(svn_boolean_t *match,
                   strcmp(key, SVN_CONFIG_AUTHN_PASSPHRASE_KEY) == 0)
                 continue; /* don't match secrets */
               else if (strcmp(key, SVN_CONFIG_AUTHN_ASCII_CERT_KEY) == 0)
-                continue; /* don't match base64 data */
+                *match = match_certificate(certinfo, pattern, value,
+                                           result_pool, iterpool);
               else
                 *match = match_pattern(pattern, value->data, FALSE, iterpool);
 
@@ -168,25 +248,15 @@ match_credential(svn_boolean_t *match,
 }
 
 static svn_error_t *
-show_cert(const svn_string_t *pem_cert, apr_pool_t *scratch_pool)
+show_cert(svn_x509_certinfo_t *certinfo, const svn_string_t *pem_cert,
+          apr_pool_t *scratch_pool)
 {
-  const svn_string_t *der_cert;
-  svn_x509_certinfo_t *certinfo;
   const apr_array_header_t *hostnames;
-  svn_error_t *err;
 
-  /* Convert header-less PEM to DER by undoing base64 encoding. */
-  der_cert = svn_base64_decode_string(pem_cert, scratch_pool);
-
-  err = svn_x509_parse_cert(&certinfo, der_cert->data, der_cert->len,
-                            scratch_pool, scratch_pool);
-  if (err)
-    {
-      /* Just display X.509 parsing errors as warnings and continue */
-      svn_handle_warning2(stderr, err, "svn: ");
-      svn_error_clear(err);
-      return SVN_NO_ERROR;
-    }
+  if (certinfo == NULL)
+    certinfo = parse_certificate(pem_cert, TRUE, scratch_pool, scratch_pool);
+  if (certinfo == NULL)
+    return SVN_NO_ERROR;
 
   SVN_ERR(svn_cmdline_printf(scratch_pool, _("Subject: %s\n"),
                              svn_x509_certinfo_get_subject(certinfo, scratch_pool)));
@@ -229,6 +299,7 @@ list_credential(const char *cred_kind,
                 const char *realmstring,
                 apr_array_header_t *cred_items,
                 svn_boolean_t show_passwords,
+                svn_x509_certinfo_t *certinfo,
                 apr_pool_t *scratch_pool)
 {
   int i;
@@ -275,7 +346,7 @@ list_credential(const char *cred_kind,
       else if (strcmp(key, SVN_CONFIG_AUTHN_USERNAME_KEY) == 0)
         SVN_ERR(svn_cmdline_printf(iterpool, _("Username: %s\n"), value->data));
       else if (strcmp(key, SVN_CONFIG_AUTHN_ASCII_CERT_KEY) == 0)
-       SVN_ERR(show_cert(value, iterpool));
+       SVN_ERR(show_cert(certinfo, value, iterpool));
       else if (strcmp(key, SVN_CONFIG_AUTHN_FAILURES_KEY) == 0)
         SVN_ERR(show_cert_failures(value->data, iterpool));
       else
@@ -298,6 +369,7 @@ walk_credentials(svn_boolean_t *delete_c
 {
   struct walk_credentials_baton_t *b = baton;
   apr_array_header_t *sorted_cred_items;
+  svn_x509_certinfo_t *certinfo = NULL;
 
   *delete_cred = FALSE;
 
@@ -308,9 +380,9 @@ walk_credentials(svn_boolean_t *delete_c
     {
       svn_boolean_t match;
 
-      SVN_ERR(match_credential(&match, cred_kind, realmstring,
+      SVN_ERR(match_credential(&match, &certinfo, cred_kind, realmstring,
                                b->patterns, sorted_cred_items,
-                               scratch_pool));
+                               scratch_pool, scratch_pool));
       if (!match)
         return SVN_NO_ERROR;
     }
@@ -319,7 +391,7 @@ walk_credentials(svn_boolean_t *delete_c
 
   if (b->list)
     SVN_ERR(list_credential(cred_kind, realmstring, sorted_cred_items,
-                            b->show_passwords, scratch_pool));
+                            b->show_passwords, certinfo, scratch_pool));
   if (b->delete)
     {
       *delete_cred = TRUE;

Modified: subversion/branches/ra-git/subversion/svn/cl-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/svn/cl-conflicts.c?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/svn/cl-conflicts.c (original)
+++ subversion/branches/ra-git/subversion/svn/cl-conflicts.c Mon Nov 30 10:24:16 2015
@@ -229,14 +229,14 @@ operation_str(svn_wc_operation_t operati
 svn_error_t *
 svn_cl__get_human_readable_prop_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description2_t *conflict,
+  const svn_client_conflict_t *conflict,
   apr_pool_t *pool)
 {
   const char *reason_str, *action_str;
 
   /* We provide separately translatable strings for the values that we
    * know about, and a fall-back in case any other values occur. */
-  switch (conflict->reason)
+  switch (svn_client_conflict_get_local_change(conflict))
     {
       case svn_wc_conflict_reason_edited:
         reason_str = _("local edit");
@@ -251,12 +251,14 @@ svn_cl__get_human_readable_prop_conflict
         reason_str = _("local obstruction");
         break;
       default:
-        reason_str = apr_psprintf(pool, _("local %s"),
-                                  svn_token__to_word(map_conflict_reason_xml,
-                                                     conflict->reason));
+        reason_str = apr_psprintf(
+                       pool, _("local %s"),
+                       svn_token__to_word(
+                         map_conflict_reason_xml,
+                         svn_client_conflict_get_local_change(conflict)));
         break;
     }
-  switch (conflict->action)
+  switch (svn_client_conflict_get_incoming_change(conflict))
     {
       case svn_wc_conflict_action_edit:
         action_str = _("incoming edit");
@@ -268,51 +270,63 @@ svn_cl__get_human_readable_prop_conflict
         action_str = _("incoming delete");
         break;
       default:
-        action_str = apr_psprintf(pool, _("incoming %s"),
-                                  svn_token__to_word(map_conflict_action_xml,
-                                                     conflict->action));
+        action_str = apr_psprintf(
+                       pool, _("incoming %s"),
+                       svn_token__to_word(
+                         map_conflict_action_xml,
+                         svn_client_conflict_get_incoming_change(conflict)));
         break;
     }
   SVN_ERR_ASSERT(reason_str && action_str);
   *desc = apr_psprintf(pool, _("%s, %s %s"),
                        reason_str, action_str,
-                       operation_str(conflict->operation));
+                       operation_str(
+                         svn_client_conflict_get_operation(conflict)));
   return SVN_NO_ERROR;
 }
 
 svn_error_t *
 svn_cl__get_human_readable_tree_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description2_t *conflict,
+  const svn_client_conflict_t *conflict,
   apr_pool_t *pool)
 {
   const char *action, *reason, *operation;
   svn_node_kind_t incoming_kind;
+  svn_wc_conflict_action_t conflict_action;
+  svn_wc_conflict_reason_t conflict_reason;
+  svn_wc_operation_t conflict_operation;
+  svn_node_kind_t conflict_node_kind;
+
+  conflict_action = svn_client_conflict_get_incoming_change(conflict);
+  conflict_reason = svn_client_conflict_get_local_change(conflict);
+  conflict_operation = svn_client_conflict_get_operation(conflict);
+  conflict_node_kind = svn_client_conflict_tree_get_victim_node_kind(conflict);
 
   /* Determine the node kind of the incoming change. */
   incoming_kind = svn_node_unknown;
-  if (conflict->action == svn_wc_conflict_action_edit ||
-      conflict->action == svn_wc_conflict_action_delete)
+  if (conflict_action == svn_wc_conflict_action_edit ||
+      conflict_action == svn_wc_conflict_action_delete)
     {
       /* Change is acting on 'src_left' version of the node. */
-      if (conflict->src_left_version)
-        incoming_kind = conflict->src_left_version->node_kind;
+      SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
+                NULL, NULL, &incoming_kind, conflict, pool, pool));
     }
-  else if (conflict->action == svn_wc_conflict_action_add ||
-           conflict->action == svn_wc_conflict_action_replace)
+  else if (conflict_action == svn_wc_conflict_action_add ||
+           conflict_action == svn_wc_conflict_action_replace)
     {
       /* Change is acting on 'src_right' version of the node.
        *
        * ### For 'replace', the node kind is ambiguous. However, src_left
        * ### is NULL for replace, so we must use src_right. */
-      if (conflict->src_right_version)
-        incoming_kind = conflict->src_right_version->node_kind;
+      SVN_ERR(svn_client_conflict_get_incoming_new_repos_location(
+                NULL, NULL, &incoming_kind, conflict, pool, pool));
     }
 
-  reason = local_reason_str(conflict->node_kind, conflict->reason,
-                            conflict->operation);
-  action = incoming_action_str(incoming_kind, conflict->action);
-  operation = operation_str(conflict->operation);
+  reason = local_reason_str(conflict_node_kind, conflict_reason,
+                            conflict_operation);
+  action = incoming_action_str(incoming_kind, conflict_action);
+  operation = operation_str(conflict_operation);
   SVN_ERR_ASSERT(operation);
 
   if (action && reason)
@@ -326,12 +340,12 @@ svn_cl__get_human_readable_tree_conflict
          It will not be pretty, but is closer to an internal error than
          an ordinary user-facing string. */
       *desc = apr_psprintf(pool, _("local: %s %s incoming: %s %s %s"),
-                           svn_node_kind_to_word(conflict->node_kind),
+                           svn_node_kind_to_word(conflict_node_kind),
                            svn_token__to_word(map_conflict_reason_xml,
-                                              conflict->reason),
+                                              conflict_reason),
                            svn_node_kind_to_word(incoming_kind),
                            svn_token__to_word(map_conflict_action_xml,
-                                              conflict->action),
+                                              conflict_action),
                            operation);
     }
   return SVN_NO_ERROR;
@@ -360,13 +374,16 @@ svn_cl__get_human_readable_action_descri
 
 
 /* Helper for svn_cl__append_tree_conflict_info_xml().
- * Appends the attributes of the given VERSION to ATT_HASH.
+ * Appends the repository location of a conflicted node to ATT_HASH.
  * SIDE is the content of the version tag's side="..." attribute,
  * currently one of "source-left" or "source-right".*/
 static svn_error_t *
 add_conflict_version_xml(svn_stringbuf_t **pstr,
                          const char *side,
-                         const svn_wc_conflict_version_t *version,
+                         const char *repos_root_url,
+                         const char *repos_relpath,
+                         svn_revnum_t peg_rev,
+                         svn_node_kind_t node_kind,
                          apr_pool_t *pool)
 {
   apr_hash_t *att_hash = apr_hash_make(pool);
@@ -374,18 +391,17 @@ add_conflict_version_xml(svn_stringbuf_t
 
   svn_hash_sets(att_hash, "side", side);
 
-  if (version->repos_url)
-    svn_hash_sets(att_hash, "repos-url", version->repos_url);
+  if (repos_root_url)
+    svn_hash_sets(att_hash, "repos-url", repos_root_url);
 
-  if (version->path_in_repos)
-    svn_hash_sets(att_hash, "path-in-repos", version->path_in_repos);
+  if (repos_relpath)
+    svn_hash_sets(att_hash, "path-in-repos", repos_relpath);
 
-  if (SVN_IS_VALID_REVNUM(version->peg_rev))
-    svn_hash_sets(att_hash, "revision", apr_ltoa(pool, version->peg_rev));
+  if (SVN_IS_VALID_REVNUM(peg_rev))
+    svn_hash_sets(att_hash, "revision", apr_ltoa(pool, peg_rev));
 
-  if (version->node_kind != svn_node_unknown)
-    svn_hash_sets(att_hash, "kind",
-                  svn_cl__node_kind_str_xml(version->node_kind));
+  if (node_kind != svn_node_unknown)
+    svn_hash_sets(att_hash, "kind", svn_cl__node_kind_str_xml(node_kind));
 
   svn_xml_make_open_tag_hash(pstr, pool, svn_xml_self_closing,
                              "version", att_hash);
@@ -395,25 +411,34 @@ add_conflict_version_xml(svn_stringbuf_t
 
 static svn_error_t *
 append_tree_conflict_info_xml(svn_stringbuf_t *str,
-                              const svn_wc_conflict_description2_t *conflict,
+                              const svn_client_conflict_t *conflict,
                               apr_pool_t *pool)
 {
   apr_hash_t *att_hash = apr_hash_make(pool);
   const char *tmp;
+  const char *repos_root_url;
+  const char *repos_relpath;
+  svn_revnum_t peg_rev;
+  svn_node_kind_t node_kind;
 
   svn_hash_sets(att_hash, "victim",
-                svn_dirent_basename(conflict->local_abspath, pool));
+                svn_dirent_basename(
+                  svn_client_conflict_get_local_abspath(conflict), pool));
 
   svn_hash_sets(att_hash, "kind",
-                svn_cl__node_kind_str_xml(conflict->node_kind));
+                svn_cl__node_kind_str_xml(
+                  svn_client_conflict_tree_get_victim_node_kind(conflict)));
 
   svn_hash_sets(att_hash, "operation",
-                svn_cl__operation_str_xml(conflict->operation, pool));
+                svn_cl__operation_str_xml(
+                  svn_client_conflict_get_operation(conflict), pool));
 
-  tmp = svn_token__to_word(map_conflict_action_xml, conflict->action);
+  tmp = svn_token__to_word(map_conflict_action_xml,
+                           svn_client_conflict_get_incoming_change(conflict));
   svn_hash_sets(att_hash, "action", tmp);
 
-  tmp = svn_token__to_word(map_conflict_reason_xml, conflict->reason);
+  tmp = svn_token__to_word(map_conflict_reason_xml,
+                           svn_client_conflict_get_local_change(conflict));
   svn_hash_sets(att_hash, "reason", tmp);
 
   /* Open the tree-conflict tag. */
@@ -422,17 +447,30 @@ append_tree_conflict_info_xml(svn_string
 
   /* Add child tags for OLDER_VERSION and THEIR_VERSION. */
 
-  if (conflict->src_left_version)
-    SVN_ERR(add_conflict_version_xml(&str,
-                                     "source-left",
-                                     conflict->src_left_version,
-                                     pool));
-
-  if (conflict->src_right_version)
+  SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict,
+                                             pool, pool));
+  SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+                                                              &peg_rev,
+                                                              &node_kind,
+                                                              conflict,
+                                                              pool,
+                                                              pool));
+  if (repos_root_url && repos_relpath)
+    SVN_ERR(add_conflict_version_xml(&str, "source-left",
+                                     repos_root_url, repos_relpath, peg_rev,
+                                     node_kind, pool));
+
+  SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+                                                              &peg_rev,
+                                                              &node_kind,
+                                                              conflict,
+                                                              pool,
+                                                              pool));
+  if (repos_root_url && repos_relpath)
     SVN_ERR(add_conflict_version_xml(&str,
                                      "source-right",
-                                     conflict->src_right_version,
-                                     pool));
+                                     repos_root_url, repos_relpath, peg_rev,
+                                     node_kind, pool));
 
   svn_xml_make_close_tag(&str, pool, "tree-conflict");
 
@@ -441,12 +479,22 @@ append_tree_conflict_info_xml(svn_string
 
 svn_error_t *
 svn_cl__append_conflict_info_xml(svn_stringbuf_t *str,
-                                 const svn_wc_conflict_description2_t *conflict,
+                                 const svn_client_conflict_t *conflict,
                                  apr_pool_t *scratch_pool)
 {
   apr_hash_t *att_hash;
   const char *kind;
-  if (conflict->kind == svn_wc_conflict_kind_tree)
+  svn_wc_conflict_kind_t conflict_kind;
+  svn_wc_operation_t conflict_operation;
+  const char *repos_root_url;
+  const char *repos_relpath;
+  svn_revnum_t peg_rev;
+  svn_node_kind_t node_kind;
+
+  conflict_kind = svn_client_conflict_get_kind(conflict);
+  conflict_operation = svn_client_conflict_get_operation(conflict);
+
+  if (conflict_kind == svn_wc_conflict_kind_tree)
     {
       /* Uses other element type */
       return svn_error_trace(
@@ -456,53 +504,80 @@ svn_cl__append_conflict_info_xml(svn_str
   att_hash = apr_hash_make(scratch_pool);
 
   svn_hash_sets(att_hash, "operation",
-                svn_cl__operation_str_xml(conflict->operation, scratch_pool));
+                svn_cl__operation_str_xml(conflict_operation, scratch_pool));
 
 
-  kind = svn_token__to_word(map_conflict_kind_xml, conflict->kind);
+  kind = svn_token__to_word(map_conflict_kind_xml, conflict_kind);
   svn_hash_sets(att_hash, "type", kind);
 
   svn_hash_sets(att_hash, "operation",
-                svn_cl__operation_str_xml(conflict->operation, scratch_pool));
+                svn_cl__operation_str_xml(conflict_operation, scratch_pool));
 
 
   /* "<conflict>" */
   svn_xml_make_open_tag_hash(&str, scratch_pool,
                              svn_xml_normal, "conflict", att_hash);
 
-  if (conflict->src_left_version)
-    SVN_ERR(add_conflict_version_xml(&str,
-                                     "source-left",
-                                     conflict->src_left_version,
-                                     scratch_pool));
-
-  if (conflict->src_right_version)
-    SVN_ERR(add_conflict_version_xml(&str,
-                                     "source-right",
-                                     conflict->src_right_version,
-                                     scratch_pool));
+  SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict,
+                                             scratch_pool, scratch_pool));
+  SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+                                                              &peg_rev,
+                                                              &node_kind,
+                                                              conflict,
+                                                              scratch_pool,
+                                                              scratch_pool));
+  if (repos_root_url && repos_relpath)
+    SVN_ERR(add_conflict_version_xml(&str, "source-left",
+                                     repos_root_url, repos_relpath, peg_rev,
+                                     node_kind, scratch_pool));
+
+  SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+                                                              &peg_rev,
+                                                              &node_kind,
+                                                              conflict,
+                                                              scratch_pool,
+                                                              scratch_pool));
+  if (repos_root_url && repos_relpath)
+    SVN_ERR(add_conflict_version_xml(&str, "source-right",
+                                     repos_root_url, repos_relpath, peg_rev,
+                                     node_kind, scratch_pool));
 
-  switch (conflict->kind)
+  switch (conflict_kind)
     {
+      const char *base_abspath;
+      const char *my_abspath;
+      const char *their_abspath;
+
       case svn_wc_conflict_kind_text:
+        SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath,
+                                                      &base_abspath,
+                                                      &their_abspath,
+                                                      conflict, scratch_pool,
+                                                      scratch_pool));
         /* "<prev-base-file> xx </prev-base-file>" */
-        svn_cl__xml_tagged_cdata(&str, scratch_pool, "prev-base-file",
-                                 conflict->base_abspath);
+        svn_cl__xml_tagged_cdata(
+          &str, scratch_pool, "prev-base-file", base_abspath);
 
         /* "<prev-wc-file> xx </prev-wc-file>" */
-        svn_cl__xml_tagged_cdata(&str, scratch_pool, "prev-wc-file",
-                                 conflict->my_abspath);
+        svn_cl__xml_tagged_cdata(
+          &str, scratch_pool, "prev-wc-file", my_abspath);
 
         /* "<cur-base-file> xx </cur-base-file>" */
-        svn_cl__xml_tagged_cdata(&str, scratch_pool, "cur-base-file",
-                                 conflict->their_abspath);
+        svn_cl__xml_tagged_cdata(
+          &str, scratch_pool, "cur-base-file", their_abspath);
 
         break;
 
       case svn_wc_conflict_kind_property:
-        /* "<prop-file> xx </prop-file>" */
-        svn_cl__xml_tagged_cdata(&str, scratch_pool, "prop-file",
-                                 conflict->their_abspath);
+        {
+          const char *reject_abspath;
+
+          /* "<prop-file> xx </prop-file>" */
+          reject_abspath =
+            svn_client_conflict_prop_get_reject_abspath(conflict);
+          svn_cl__xml_tagged_cdata(
+            &str, scratch_pool, "prop-file", reject_abspath);
+        }
         break;
 
       default:

Modified: subversion/branches/ra-git/subversion/svn/cl-conflicts.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/svn/cl-conflicts.h?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/svn/cl-conflicts.h (original)
+++ subversion/branches/ra-git/subversion/svn/cl-conflicts.h Mon Nov 30 10:24:16 2015
@@ -31,6 +31,7 @@
 
 #include "svn_types.h"
 #include "svn_string.h"
+#include "svn_client.h"
 #include "svn_wc.h"
 
 #ifdef __cplusplus
@@ -48,7 +49,7 @@ extern "C" {
 svn_error_t *
 svn_cl__get_human_readable_prop_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description2_t *conflict,
+  const svn_client_conflict_t *conflict,
   apr_pool_t *pool);
 
 /**
@@ -60,7 +61,7 @@ svn_cl__get_human_readable_prop_conflict
 svn_error_t *
 svn_cl__get_human_readable_tree_conflict_description(
   const char **desc,
-  const svn_wc_conflict_description2_t *conflict,
+  const svn_client_conflict_t *conflict,
   apr_pool_t *pool);
 
 /* Like svn_cl__get_human_readable_tree_conflict_description but
@@ -80,7 +81,7 @@ svn_cl__get_human_readable_action_descri
 svn_error_t *
 svn_cl__append_conflict_info_xml(
   svn_stringbuf_t *str,
-  const svn_wc_conflict_description2_t *conflict,
+  const svn_client_conflict_t *conflict,
   apr_pool_t *pool);
 
 #ifdef __cplusplus

Modified: subversion/branches/ra-git/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/svn/cl.h?rev=1717223&r1=1717222&r2=1717223&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/svn/cl.h (original)
+++ subversion/branches/ra-git/subversion/svn/cl.h Mon Nov 30 10:24:16 2015
@@ -251,10 +251,13 @@ typedef struct svn_cl__opt_state_t
   const char *show_item;           /* print only the given item */
 } svn_cl__opt_state_t;
 
+/* Conflict stats for operations such as update and merge. */
+typedef struct svn_cl__conflict_stats_t svn_cl__conflict_stats_t;
 
 typedef struct svn_cl__cmd_baton_t
 {
   svn_cl__opt_state_t *opt_state;
+  svn_cl__conflict_stats_t *conflict_stats;
   svn_client_ctx_t *ctx;
 } svn_cl__cmd_baton_t;
 
@@ -346,9 +349,6 @@ svn_cl__check_cancel(void *baton);
 typedef struct svn_cl__interactive_conflict_baton_t
   svn_cl__interactive_conflict_baton_t;
 
-/* Conflict stats for operations such as update and merge. */
-typedef struct svn_cl__conflict_stats_t svn_cl__conflict_stats_t;
-
 /* Return a new, initialized, conflict stats structure, allocated in
  * POOL. */
 svn_cl__conflict_stats_t *
@@ -402,6 +402,23 @@ svn_cl__conflict_func_interactive(svn_wc
                                   apr_pool_t *result_pool,
                                   apr_pool_t *scratch_pool);
 
+
+svn_error_t *
+svn_cl__resolve_conflict(svn_boolean_t *resolved,
+                         svn_cl__accept_t *accept_which,
+                         svn_boolean_t *quit,
+                         svn_boolean_t *external_failed,
+                         svn_boolean_t *printed_summary,
+                         svn_client_conflict_t *conflict,
+                         const char *editor_cmd,
+                         apr_hash_t *config,
+                         const char *path_prefix,
+                         svn_cmdline_prompt_baton_t *pb,
+                         svn_cl__conflict_stats_t *conflict_stats,
+                         svn_client_conflict_option_id_t option_id,
+                         svn_client_ctx_t *ctx,
+                         apr_pool_t *scratch_pool);
+
 
 /*** Command-line output functions -- printing to the user. ***/
 
@@ -777,15 +794,18 @@ svn_cl__args_to_target_array_print_reser
                                             svn_boolean_t keep_dest_origpath_on_truepath_collision,
                                             apr_pool_t *pool);
 
-/* Return a string showing NODE's kind, URL and revision, to the extent that
- * that information is available in NODE. If NODE itself is NULL, this prints
- * just a 'none' node kind.
+/* Return a string showing a conflicted node's kind, URL and revision,
+ * to the extent that that information is available. If REPOS_ROOT_URL or
+ * REPOS_RELPATH are NULL, this prints just a 'none' node kind.
  * WC_REPOS_ROOT_URL should reflect the target working copy's repository
- * root URL. If NODE is from that same URL, the printed URL is abbreviated
+ * root URL. If the node is from that same URL, the printed URL is abbreviated
  * to caret notation (^/). WC_REPOS_ROOT_URL may be NULL, in which case
  * this function tries to print the conflicted node's complete URL. */
 const char *
-svn_cl__node_description(const svn_wc_conflict_version_t *node,
+svn_cl__node_description(const char *repos_root_url,
+                         const char *repos_relpath,
+                         svn_revnum_t peg_rev,
+                         svn_node_kind_t node_kind,
                          const char *wc_repos_root_URL,
                          apr_pool_t *pool);