You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2016/03/21 16:32:07 UTC

svn commit: r1735987 - /subversion/trunk/subversion/libsvn_client/conflicts.c

Author: stsp
Date: Mon Mar 21 15:32:07 2016
New Revision: 1735987

URL: http://svn.apache.org/viewvc?rev=1735987&view=rev
Log:
Ensure that mergeinfo-style syntax in conflict descriptions is shown as
an inclusive range, rather than showing an excluded 'old' revision number.

So, for instance, svn merge -r4:6 now results in ^/trunk:5-6 being displayed,
rather than ^/trunk:4-6 (which doesn't match what mergeinfo would record).

In cases where only a single revision r6 was merged, display ^/trunk:6.

* subversion/libsvn_client/conflicts.c
  (describe_incoming_add_upon_merge,
   describe_incoming_reverse_deletion_upon_merge
   conflict_tree_get_description_incoming_edit): Show mergeinfo-style ranges.

Modified:
    subversion/trunk/subversion/libsvn_client/conflicts.c

Modified: subversion/trunk/subversion/libsvn_client/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/conflicts.c?rev=1735987&r1=1735986&r2=1735987&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_client/conflicts.c Mon Mar 21 15:32:07 2016
@@ -1901,24 +1901,51 @@ describe_incoming_add_upon_merge(
   apr_pool_t *result_pool)
 {
   if (new_node_kind == svn_node_dir)
-    return apr_psprintf(result_pool,
-                        _("directory appeared during merge of ^/%s:%ld-%ld; "
-                          "it was added by %s in r%ld"),
-                        new_repos_relpath, old_rev, new_rev,
-                        details->added_rev_author, details->added_rev);
+    {
+      if (old_rev + 1 == new_rev)
+        return apr_psprintf(result_pool,
+                            _("directory appeared during merge of "
+                              "^/%s:%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, new_rev,
+                            details->added_rev_author, details->added_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("directory appeared during merge of "
+                              "^/%s:%ld-%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, old_rev + 1, new_rev,
+                            details->added_rev_author, details->added_rev);
+    }
   else if (new_node_kind == svn_node_file ||
            new_node_kind == svn_node_symlink)
-    return apr_psprintf(result_pool,
-                        _("file appeared during merge of ^/%s:%ld-%ld; "
-                          "it was added by %s in r%ld"),
-                        new_repos_relpath, old_rev, new_rev,
-                        details->added_rev_author, details->added_rev);
+    {
+      if (old_rev + 1 == new_rev)
+        return apr_psprintf(result_pool,
+                            _("file appeared during merge of "
+                              "^/%s:%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, new_rev,
+                            details->added_rev_author, details->added_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("file appeared during merge of "
+                              "^/%s:%ld-%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, old_rev + 1, new_rev,
+                            details->added_rev_author, details->added_rev);
+    }
   else
-    return apr_psprintf(result_pool,
-                        _("item appeared during merge of ^/%s:%ld-%ld; "
-                          "it was added by %s in r%ld"),
-                        new_repos_relpath, old_rev, new_rev,
-                        details->added_rev_author, details->added_rev);
+    {
+      if (old_rev + 1 == new_rev)
+        return apr_psprintf(result_pool,
+                            _("item appeared during merge of "
+                              "^/%s:%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, new_rev,
+                            details->added_rev_author, details->added_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("item appeared during merge of "
+                              "^/%s:%ld-%ld; it was added by %s in r%ld"),
+                            new_repos_relpath, old_rev + 1, new_rev,
+                            details->added_rev_author, details->added_rev);
+    }
   return SVN_NO_ERROR;
 }
 
@@ -1932,24 +1959,58 @@ describe_incoming_reverse_deletion_upon_
   apr_pool_t *result_pool)
 {
   if (new_node_kind == svn_node_dir)
-    return apr_psprintf(result_pool,
-                        _("directory appeared during reverse-merge of "
-                          "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
-                        old_repos_relpath, new_rev, old_rev,
-                        details->deleted_rev_author, details->deleted_rev);
+    {
+      if (new_rev + 1 == old_rev)
+        return apr_psprintf(result_pool,
+                            _("directory appeared during reverse-merge of "
+                              "^/%s:%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, old_rev,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("directory appeared during reverse-merge of "
+                              "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, new_rev, old_rev - 1,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+    }
   else if (new_node_kind == svn_node_file ||
            new_node_kind == svn_node_symlink)
-    return apr_psprintf(result_pool,
-                        _("file appeared during reverse-merge of "
-                          "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
-                        old_repos_relpath, new_rev, old_rev,
-                        details->deleted_rev_author, details->deleted_rev);
+    {
+      if (new_rev + 1 == old_rev)
+        return apr_psprintf(result_pool,
+                            _("file appeared during reverse-merge of "
+                              "^/%s:%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, old_rev,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("file appeared during reverse-merge of "
+                              "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, new_rev + 1, old_rev,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+    }
   else
-    return apr_psprintf(result_pool,
-                        _("item appeared during reverse-merge of "
-                          "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
-                        old_repos_relpath, new_rev, old_rev,
-                        details->deleted_rev_author, details->deleted_rev);
+    {
+      if (new_rev + 1 == old_rev)
+        return apr_psprintf(result_pool,
+                            _("item appeared during reverse-merge of "
+                              "^/%s:%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, old_rev,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+      else
+        return apr_psprintf(result_pool,
+                            _("item appeared during reverse-merge of "
+                              "^/%s:%ld-%ld; it was deleted by %s in r%ld"),
+                            old_repos_relpath, new_rev + 1, old_rev,
+                            details->deleted_rev_author,
+                            details->deleted_rev);
+    }
+
   return SVN_NO_ERROR;
 }
 
@@ -2290,13 +2351,47 @@ conflict_tree_get_description_incoming_e
                             "during switch to ^/%s@r%ld:"),
                           new_repos_relpath, new_rev);
   else if (conflict_operation == svn_wc_operation_merge)
-    action = apr_psprintf(scratch_pool,
-                          _("changes from the following revisions have not "
-                            "yet been merged from ^/%s:%ld-%ld:"),
-                          old_rev < new_rev ? new_repos_relpath
-                                            : old_repos_relpath,
-                          old_rev < new_rev ? old_rev : new_rev,
-                          old_rev < new_rev ? new_rev : old_rev);
+    {
+      if (old_rev < new_rev)
+        {
+          if (old_rev + 1 == new_rev)
+            {
+              action = apr_psprintf(scratch_pool,
+                                    _("changes arrived during merge of "
+                                      "^/%s:%ld:"),
+                                    new_repos_relpath, new_rev);
+
+              *description = apr_psprintf(result_pool, _("%s, %s"),
+                                           reason, action);
+              return SVN_NO_ERROR;
+            }
+          else
+            action = apr_psprintf(scratch_pool,
+                                  _("changes from the following revisions "
+                                    "arrived during merge of ^/%s:%ld-%ld:"),
+                                  new_repos_relpath, old_rev + 1, new_rev);
+        }
+      else
+        {
+          if (new_rev + 1 == old_rev)
+            {
+              action = apr_psprintf(scratch_pool,
+                                    _("changes arrived during reverse-merge "
+                                      "of ^/%s:%ld:"),
+                                    new_repos_relpath, old_rev);
+
+              *description = apr_psprintf(result_pool, _("%s, %s"),
+                                           reason, action);
+              return SVN_NO_ERROR;
+            }
+          else
+            action = apr_psprintf(scratch_pool,
+                                  _("changes from the following revisions "
+                                    "arrived during reverse-merge of "
+                                    "^/%s:%ld-%ld:"),
+                                  new_repos_relpath, new_rev + 1, old_rev);
+        }
+    }
 
   for (i = 0; i < edits->nelts; i++)
     {