You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2012/11/13 10:27:12 UTC

svn commit: r1408647 - /subversion/trunk/subversion/svnmucc/svnmucc.c

Author: danielsh
Date: Tue Nov 13 09:27:11 2012
New Revision: 1408647

URL: http://svn.apache.org/viewvc?rev=1408647&view=rev
Log:
Followup to r1408632.

* subversion/svnmucc/svnmucc.c
  (execute): Ensure ANCHOR is a directory.  Fix ensure abort_edit() is always
    called.

Modified:
    subversion/trunk/subversion/svnmucc/svnmucc.c

Modified: subversion/trunk/subversion/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnmucc/svnmucc.c?rev=1408647&r1=1408646&r2=1408647&view=diff
==============================================================================
--- subversion/trunk/subversion/svnmucc/svnmucc.c (original)
+++ subversion/trunk/subversion/svnmucc/svnmucc.c Tue Nov 13 09:27:11 2012
@@ -770,8 +770,22 @@ execute(const apr_array_header_t *action
                        NULL, config, pool));
   SVN_ERR(svn_ra_get_repos_root2(aux_session, &repos_root, pool));
   SVN_ERR(svn_ra_reparent(aux_session, repos_root, pool));
-
   SVN_ERR(svn_ra_get_latest_revnum(session, &head, pool));
+
+  /* Maybe reparent to ANCHOR's dir, if ANCHOR is a file. */
+  {
+    svn_node_kind_t kind;
+
+    SVN_ERR(svn_ra_check_path(aux_session,
+                              svn_uri_skip_ancestor(repos_root, anchor, pool),
+                              head, &kind, pool));
+    if (kind == svn_node_file)
+      {
+        anchor = svn_uri_dirname(anchor, pool);
+        SVN_ERR(svn_ra_reparent(session, anchor, pool));
+      }
+  }
+
   if (SVN_IS_VALID_REVNUM(base_revision))
     {
       if (base_revision > head)
@@ -848,10 +862,12 @@ execute(const apr_array_header_t *action
                                     commit_callback, NULL, NULL, FALSE, pool));
 
   SVN_ERR(editor->open_root(editor_baton, head, pool, &root.baton));
-  SVN_ERR(change_props(editor, root.baton, &root, pool));
-  err = drive(&root, head, editor, pool);
+  err = change_props(editor, root.baton, &root, pool);
+  if (!err)
+    err = drive(&root, head, editor, pool);
   if (!err)
     err = editor->close_edit(editor_baton, pool);
+
   if (err)
     svn_error_clear(editor->abort_edit(editor_baton, pool));