You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2010/08/05 17:07:25 UTC

svn commit: r982653 [1/4] - in /subversion/branches/issue-2779-dev: ./ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ subversion/bindings/swig/ subversion/bindings/swig...

Author: cmpilato
Date: Thu Aug  5 15:07:22 2010
New Revision: 982653

URL: http://svn.apache.org/viewvc?rev=982653&view=rev
Log:
Sync branch with trunk.  (Merged /subversion/trunk:r981514-982643)

Modified:
    subversion/branches/issue-2779-dev/   (props changed)
    subversion/branches/issue-2779-dev/Makefile.in
    subversion/branches/issue-2779-dev/configure.ac
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info2.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java
    subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
    subversion/branches/issue-2779-dev/subversion/bindings/swig/python/svn/delta.py
    subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/core.py
    subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/delta.py
    subversion/branches/issue-2779-dev/subversion/bindings/swig/ruby/test/test_info.rb
    subversion/branches/issue-2779-dev/subversion/bindings/swig/svn_delta.i
    subversion/branches/issue-2779-dev/subversion/include/private/svn_wc_private.h
    subversion/branches/issue-2779-dev/subversion/include/svn_wc.h
    subversion/branches/issue-2779-dev/subversion/libsvn_client/cmdline.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/commit.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/delete.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/export.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/externals.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/log.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/merge.c
    subversion/branches/issue-2779-dev/subversion/libsvn_client/patch.c
    subversion/branches/issue-2779-dev/subversion/libsvn_diff/parse-diff.c
    subversion/branches/issue-2779-dev/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/blame.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/commit.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/get_deleted_rev.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getdate.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocations.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocationsegments.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocks.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/locks.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/log.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/merge.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/mergeinfo.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/options.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/property.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/replay.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/serf.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/update.c
    subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/util.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/adm_files.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/adm_ops.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/ambient_depth_filter_editor.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/deprecated.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/diff.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/lock.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/lock.h
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/log.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/node.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/props.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/status.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/update_editor.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/util.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/wc.h
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/wc_db.c
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/wc_db.h
    subversion/branches/issue-2779-dev/subversion/libsvn_wc/workqueue.c
    subversion/branches/issue-2779-dev/subversion/mod_dav_svn/deadprops.c
    subversion/branches/issue-2779-dev/subversion/svn/delete-cmd.c
    subversion/branches/issue-2779-dev/subversion/svn/diff-cmd.c
    subversion/branches/issue-2779-dev/subversion/svn/export-cmd.c
    subversion/branches/issue-2779-dev/subversion/svn/import-cmd.c
    subversion/branches/issue-2779-dev/subversion/svn/log-cmd.c
    subversion/branches/issue-2779-dev/subversion/svn/main.c
    subversion/branches/issue-2779-dev/subversion/svnrdump/load_editor.c
    subversion/branches/issue-2779-dev/subversion/svnrdump/load_editor.h
    subversion/branches/issue-2779-dev/subversion/svnrdump/svnrdump.c
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/depth_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/diff_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/entries-dump.c
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/export_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/merge_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/patch_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/resolved_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/stat_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/svntest/main.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/svntest/sandbox.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/switch_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/cmdline/update_tests.py
    subversion/branches/issue-2779-dev/subversion/tests/libsvn_diff/parse-diff-test.c
    subversion/branches/issue-2779-dev/subversion/tests/libsvn_wc/pristine-store-test.c
    subversion/branches/issue-2779-dev/tools/dev/unix-build/Makefile.svn

Propchange: subversion/branches/issue-2779-dev/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug  5 15:07:22 2010
@@ -34,4 +34,4 @@
 /subversion/branches/tc_url_rev:874351-874483
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:965496-981513
+/subversion/trunk:965496-982643

Modified: subversion/branches/issue-2779-dev/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/Makefile.in?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/Makefile.in (original)
+++ subversion/branches/issue-2779-dev/Makefile.in Thu Aug  5 15:07:22 2010
@@ -426,9 +426,9 @@ revision-install:
 install-static: @INSTALL_STATIC_RULES@
 
 # JavaHL target aliases
-javahl: mkdir-init javahl-java javahl-javah javahl-callback-javah javahl-lib @JAVAHL_TESTS_TARGET@
+javahl: mkdir-init javahl-java javahl-javah javahl-callback-javah javahl-lib @JAVAHL_TESTS_TARGET@ javahl-compat
 install-javahl: javahl install-javahl-java install-javahl-javah install-javahl-lib
-javahl-compat: javahl-compat-java javahl @JAVAHL_COMPAT_TESTS_TARGET@
+javahl-compat: javahl-compat-java @JAVAHL_COMPAT_TESTS_TARGET@
 
 clean-javahl:
 	rm -rf $(javahl_java_PATH) $(javahl_javah_PATH) @JAVAHL_OBJDIR@
@@ -441,7 +441,7 @@ check-javahl-compat: javahl-compat-tests
 	@FIX_JAVAHL_LIB@
 	$(JAVA) "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" -Djava.library.path=@JAVAHL_OBJDIR@:$(libdir) -classpath $(javahl_compat_tests_PATH):$(javahl_tests_CLASSPATH) "-Dtest.tests=$(JAVAHL_TESTS)" org.tigris.subversion.javahl.RunTests
 
-check-javahl: javahl
+check-javahl: javahl check-javahl-compat
 	@FIX_JAVAHL_LIB@
 	$(JAVA) "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.srcdir=$(javahl_test_srcdir)" "-Dtest.rooturl=$(BASE_URL)" "-Dtest.fstype=$(FS_TYPE)" -Djava.library.path=@JAVAHL_OBJDIR@:$(libdir) -classpath $(javahl_tests_PATH):$(javahl_tests_CLASSPATH) "-Dtest.tests=$(JAVAHL_TESTS)" org.apache.subversion.javahl.RunTests
 

Modified: subversion/branches/issue-2779-dev/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/configure.ac?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/configure.ac (original)
+++ subversion/branches/issue-2779-dev/configure.ac Thu Aug  5 15:07:22 2010
@@ -902,6 +902,9 @@ AS_HELP_STRING([--enable-maintainer-mode
         CFLAGS="-Wold-style-definition $CFLAGS_KEEP"
         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
 
+        CFLAGS="-Wno-system-headers $CFLAGS_KEEP"
+        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
+
         AC_LANG_POP([C])
         CFLAGS="$CFLAGS_KEEP"
       fi

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java Thu Aug  5 15:07:22 2010
@@ -25,9 +25,10 @@ package org.apache.subversion.javahl;
 
 import java.util.Map;
 import java.util.EventObject;
+import org.apache.subversion.javahl.callback.ClientNotifyCallback;
 
 /**
- * The event passed to the {@link Notify2#onNotify(NotifyInformation)}
+ * The event passed to the {@link ClientNotifyCallback#onNotify}
  * API to notify {@link ISVNClient} of relevant events.
  *
  * @since 1.2
@@ -128,14 +129,14 @@ public class ClientNotifyInformation ext
      * This constructor is to be used by the native code.
      *
      * @param path The path of the item, which is the source of the event.
-     * @param action The {@link NotifyAction} which triggered this event.
+     * @param action The {@link Action} which triggered this event.
      * @param kind The {@link NodeKind} of the item.
      * @param mimeType The MIME type of the item.
      * @param lock Any lock for the item.
      * @param errMsg Any error message for the item.
-     * @param contentState The {@link NotifyStatus} of the content of
+     * @param contentState The {@link Status} of the content of
      * the item.
-     * @param propState The {@link NotifyStatus} of the properties of
+     * @param propState The {@link Status} of the properties of
      * the item.
      * @param lockState The {@link LockStatus} of the lock of the item.
      * @param revision The revision of the item.
@@ -187,7 +188,7 @@ public class ClientNotifyInformation ext
     }
 
     /**
-     * @return The {@link NotifyAction} which triggered this event.
+     * @return The {@link Action} which triggered this event.
      */
     public Action getAction()
     {
@@ -227,7 +228,7 @@ public class ClientNotifyInformation ext
     }
 
     /**
-     * @return The {@link NotifyStatus} of the content of the item.
+     * @return The {@link Status} of the content of the item.
      */
     public Status getContentState()
     {
@@ -235,7 +236,7 @@ public class ClientNotifyInformation ext
     }
 
     /**
-     * @return The {@link NotifyStatus} of the properties of the item.
+     * @return The {@link Status} of the properties of the item.
      */
     public Status getPropState()
     {

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java Thu Aug  5 15:07:22 2010
@@ -24,11 +24,11 @@
 package org.apache.subversion.javahl;
 
 import java.util.EventObject;
+import org.apache.subversion.javahl.callback.DiffSummaryCallback;
 
 /**
- * The event passed to the {@link
- * DiffSummaryReceiver#onSummary(DiffSummary)} API in response to path
- * differences reported by {@link ISVNClient#diffSummarize}.
+ * The event passed to the {@link DiffSummaryCallback#onSummary} API
+ * in response to path differences reported by {@link ISVNClient#diffSummarize}.
  *
  * @since 1.5
  */

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Thu Aug  5 15:07:22 2010
@@ -620,11 +620,11 @@ public interface ISVNClient
      *
      * @param target Path or URL.
      * @param pegRevision Revision at which to interpret
-     * <code>target</code>.  If {@link RevisionKind#unspecified} or
+     * <code>target</code>.  If {@link Revision.Kind#unspecified} or
      * <code>null</code>, behave identically to {@link
-     * #diffSummarize(String, Revision, String, Revision, int,
-     * boolean, DiffSummaryCallback)}, using <code>path</code> for
-     * both of that method's targets.
+     * #diffSummarize(String, Revision, String, Revision, Depth,
+     * Collection, boolean, DiffSummaryCallback)}, using
+     * <code>path</code> for both of that method's targets.
      * @param startRevision Beginning of range for comparsion of
      * <code>target</code>.
      * @param endRevision End of range for comparsion of

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java Thu Aug  5 15:07:22 2010
@@ -137,7 +137,6 @@ public interface ISVNRepos {
 	 * load the data of a dump into a repository,
 	 * @param path              the path to the repository
 	 * @param dataInput         the data input source
-	 * @param messageOutput     the target for processing messages
 	 * @param ignoreUUID        ignore any UUID found in the input stream
 	 * @param forceUUID         set the repository UUID to any found in the
 	 *                          stream
@@ -145,6 +144,7 @@ public interface ISVNRepos {
 	 * @param usePostCommitHook use the post-commit hook when processing commits
 	 * @param relativePath      the directory in the repository, where the data
 	 *                          in put optional.
+	 * @param callback          the target for processing messages
 	 * @throws ClientException  throw in case of problem
 	 * @since 1.5
 	 */

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info2.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info2.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info2.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/Info2.java Thu Aug  5 15:07:22 2010
@@ -26,7 +26,7 @@ package org.apache.subversion.javahl;
 import java.util.Date;
 
 /**
- * this class is returned by {@link ISVNClient.info2} and contains information
+ * this class is returned by {@link ISVNClient#info2} and contains information
  * about items in the repository or working copy
  * @since 1.2
  */

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java Thu Aug  5 15:07:22 2010
@@ -23,10 +23,11 @@
 
 package org.apache.subversion.javahl;
 
+import org.apache.subversion.javahl.callback.ProgressCallback;
+
 /**
- * The event passed to the {@link
- * ProgressListener#onProgress(ProgressEvent)} API to inform {@link
- * ISVNClient} of command progress (in terms of bytes).
+ * The event passed to the {@link ProgressCallback#onProgress} API to inform
+ * {@link ISVNClient} of command progress (in terms of bytes).
  *
  * @since 1.5
  */

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java Thu Aug  5 15:07:22 2010
@@ -24,9 +24,10 @@
 package org.apache.subversion.javahl;
 
 import java.util.EventObject;
+import org.apache.subversion.javahl.callback.ReposNotifyCallback;
 
 /**
- * The event passed to the {@link Notify2#onNotify(NotifyInformation)}
+ * The event passed to the {@link ReposNotifyCallback#onNotify}
  * API to notify {@link ISVNClient} of relevant events.
  *
  * @since 1.2
@@ -70,7 +71,7 @@ public class ReposNotifyInformation exte
     /**
      * This constructor is to be used by the native code.
      *
-     * @param action The {@link NotifyAction} which triggered this event.
+     * @param action The {@link Action} which triggered this event.
      * @param revision potentially the revision.
      */
     public ReposNotifyInformation(Action action, long revision, String warning,
@@ -90,7 +91,7 @@ public class ReposNotifyInformation exte
     }
 
     /**
-     * @return The {@link NotifyAction} which triggered this event.
+     * @return The {@link Action} which triggered this event.
      */
     public Action getAction()
     {

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java Thu Aug  5 15:07:22 2010
@@ -26,6 +26,7 @@ package org.apache.subversion.javahl.cal
 import org.apache.subversion.javahl.ClientException;
 
 import java.util.Map;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * This interface is used to receive every single line for a file on a
@@ -37,7 +38,7 @@ public interface BlameCallback
 {
     /**
      * the method will be called for every line in a file.
-     * @param line              the line number for this line
+     * @param lineNum           the line number for this line
      * @param revision          the revision of the last change.
      * @param revProps          the revision properties for this revision.
      * @param mergedRevision    the revision of the last merged change.

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java Thu Aug  5 15:07:22 2010
@@ -23,6 +23,8 @@
 
 package org.apache.subversion.javahl.callback;
 
+import org.apache.subversion.javahl.ISVNClient;
+
 /**
  * This interface is used to receive every status item for
  * the {@link ISVNClient#status} call.

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java Thu Aug  5 15:07:22 2010
@@ -24,6 +24,7 @@
 package org.apache.subversion.javahl.callback;
 
 import org.apache.subversion.javahl.DiffSummary;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * Subversion diff summarization interface.  An implementation which

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java Thu Aug  5 15:07:22 2010
@@ -24,6 +24,7 @@
 package org.apache.subversion.javahl.callback;
 
 import org.apache.subversion.javahl.Info2;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * This interface is used to retrieve info each result in a

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java Thu Aug  5 15:07:22 2010
@@ -25,6 +25,7 @@ package org.apache.subversion.javahl.cal
 
 import org.apache.subversion.javahl.Lock;
 import org.apache.subversion.javahl.DirEntry;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * This interface is used to receive every single line for a file on a

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java Thu Aug  5 15:07:22 2010
@@ -24,6 +24,7 @@
 package org.apache.subversion.javahl.callback;
 
 import org.apache.subversion.javahl.ChangePath;
+import org.apache.subversion.javahl.ISVNClient;
 
 import java.util.Map;
 import java.util.Set;

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java Thu Aug  5 15:07:22 2010
@@ -23,6 +23,8 @@
 
 package org.apache.subversion.javahl.callback;
 
+import org.apache.subversion.javahl.ISVNClient;
+
 /**
  * This interface is invoked before each patch in a
  * {@link ISVNClient#patch} call.
@@ -30,9 +32,10 @@ package org.apache.subversion.javahl.cal
 public interface PatchCallback
 {
     /**
-     * the method will be called for every line in a file.
-     * @param path        the path.
-     * @param properties  the properties on the path.
+     * the method will be called for every patch.
+     * @param pathFromPatchfile        the path in the path file
+     * @param patchPath                the path of the patch
+     * @param rejectPath               the path of the reject file
      * @return            return TRUE to filter out the prospective patch
      */
     public boolean singlePatch(String pathFromPatchfile, String patchPath,

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java Thu Aug  5 15:07:22 2010
@@ -24,6 +24,7 @@
 package org.apache.subversion.javahl.callback;
 
 import java.util.Map;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * This interface is used to property lists for each path in a

Modified: subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java Thu Aug  5 15:07:22 2010
@@ -24,6 +24,7 @@
 package org.apache.subversion.javahl.callback;
 
 import org.apache.subversion.javahl.Status;
+import org.apache.subversion.javahl.ISVNClient;
 
 /**
  * This interface is used to receive every status item for

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Thu Aug  5 15:07:22 2010
@@ -4070,3 +4070,17 @@ svn_swig_py_setup_wc_diff_callbacks2(voi
   callbacks->dir_props_changed  = wc_diff_callbacks2_dir_props_changed;
   return callbacks;
 }
+
+PyObject *
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
+                                     swig_type_info * op_type_info)
+{
+  PyObject *result = PyList_New(window->num_ops);
+  int i;
+  
+  for (i = 0; i < window->num_ops; ++i)
+      PyList_SET_ITEM(result, i,
+                      SWIG_NewPointerObj(window->ops + i, op_type_info, 0));
+
+  return result;
+}

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Thu Aug  5 15:07:22 2010
@@ -508,6 +508,14 @@ svn_error_t *svn_swig_py_ra_lock_callbac
 SVN_SWIG_SWIGUTIL_EXPORT
 extern const svn_ra_reporter2_t swig_py_ra_reporter2;
 
+/* Get a list of ops from a window. Used to replace the naive
+   svn_txdelta_window_t.ops accessor. op_type_info is supposed to be
+   the SWIG descriptor of "svn_txdelta_op_t *". */
+SVN_SWIG_SWIGUTIL_EXPORT
+PyObject *
+svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
+                                     swig_type_info * op_type_info);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/python/svn/delta.py
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/python/svn/delta.py?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/python/svn/delta.py (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/python/svn/delta.py Thu Aug  5 15:07:22 2010
@@ -29,6 +29,9 @@ _unprefix_names(locals(), 'svn_delta_')
 _unprefix_names(locals(), 'svn_txdelta_', 'tx_')
 del _unprefix_names
 
+# Force our accessor since it appears that there isn't a more civilized way
+# to make SWIG use it.
+svn_txdelta_window_t.ops = property(svn_txdelta_window_t_ops_get)
 
 class Editor:
 

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/core.py
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/core.py?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/core.py (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/core.py Thu Aug  5 15:07:22 2010
@@ -80,7 +80,7 @@ class SubversionCoreTestCase(unittest.Te
       # It must remain unchanged through the process.
       try:
         svn.client.info2(*args)
-      except svn.core.SubversionException as exc:
+      except svn.core.SubversionException, exc:
         # find the original exception
         while exc.file != rec.e.file: exc = exc.child
         

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/delta.py
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/delta.py?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/delta.py (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/python/tests/delta.py Thu Aug  5 15:07:22 2010
@@ -46,6 +46,21 @@ class DeltaTestCase(unittest.TestCase):
     window_handler, baton = \
        svn.delta.tx_apply(src_stream, target_stream, None)
     window_handler(None, baton)
+    
+  def testTxdeltaWindowT(self):
+    """Test the svn_txdelta_window_t wrapper."""
+    a = StringIO("abc\ndef\n")
+    b = StringIO("def\nghi\n")
+    
+    delta_stream = svn.delta.svn_txdelta(a, b)
+    window = svn.delta.svn_txdelta_next_window(delta_stream)
+    
+    self.assert_(window.sview_offset + window.sview_len <= len(a.getvalue()))
+    self.assert_(window.tview_len <= len(b.getvalue()))
+    self.assert_(len(window.new_data) > 0)
+    self.assertEqual(window.num_ops, len(window.ops))
+    self.assertEqual(window.src_ops, len([op for op in window.ops
+      if op.action_code == svn.delta.svn_txdelta_source]))
 
 def suite():
   return unittest.defaultTestLoader.loadTestsFromTestCase(DeltaTestCase)

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/ruby/test/test_info.rb
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/ruby/test/test_info.rb?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/ruby/test/test_info.rb (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/ruby/test/test_info.rb Thu Aug  5 15:07:22 2010
@@ -133,14 +133,13 @@ class SvnInfoTest < Test::Unit::TestCase
       assert_equal([].sort, info.deleted_dirs)
       assert_equal(["#{dir_svn_path}/", "#{tmp_dir_svn_path}/"].sort,
                    info.added_dirs)
-
-      File.open(file1_path, "w") {|f| f.puts "changed"}
-      File.open(file2_path, "w") {|f| f.puts "changed"}
-      File.open(file3_path, "w") {|f| f.puts "changed"}
     end
 
     log = "changed 3 files\ndeleted 2 files\nadded 3 files"
     make_context(log) do |ctx|
+      File.open(file1_path, "w") {|f| f.puts "changed"}
+      File.open(file2_path, "w") {|f| f.puts "changed"}
+      File.open(file3_path, "w") {|f| f.puts "changed"}
       ctx.rm_f([file4_path, file5_path])
       FileUtils.touch(file6_path)
       FileUtils.touch(file7_path)

Modified: subversion/branches/issue-2779-dev/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/bindings/swig/svn_delta.i?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/branches/issue-2779-dev/subversion/bindings/swig/svn_delta.i Thu Aug  5 15:07:22 2010
@@ -172,6 +172,17 @@ svn_txdelta_window_t_ops_get(svn_txdelta
 %}
 #endif
 
+#ifdef SWIGPYTHON
+%ignore svn_txdelta_window_t::ops;
+%inline %{
+static PyObject *
+svn_txdelta_window_t_ops_get(svn_txdelta_window_t *window)
+{
+  return svn_swig_py_txdelta_window_t_ops_get(window,
+    SWIG_TypeQuery("svn_txdelta_op_t *"));
+}
+%}
+#endif
 
 %include svn_delta_h.swg
 

Modified: subversion/branches/issue-2779-dev/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/include/private/svn_wc_private.h?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/issue-2779-dev/subversion/include/private/svn_wc_private.h Thu Aug  5 15:07:22 2010
@@ -375,8 +375,10 @@ svn_wc__node_get_copyfrom_info(const cha
                                apr_pool_t *scratch_pool);
 
 /**
- * Recursively call @a walk_callback for all nodes underneath
- * @a local_abspath, restricted by @a walk_depth.
+ * Call @a walk_callback with @a walk_baton for @a local_abspath and all
+ * nodes underneath it, restricted by @a walk_depth.
+ *
+ * If @a show_hidden is true, include hidden nodes, else ignore them.
  */
 svn_error_t *
 svn_wc__node_walk_children(svn_wc_context_t *wc_ctx,

Modified: subversion/branches/issue-2779-dev/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/include/svn_wc.h?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/include/svn_wc.h (original)
+++ subversion/branches/issue-2779-dev/subversion/include/svn_wc.h Thu Aug  5 15:07:22 2010
@@ -2714,13 +2714,20 @@ svn_wc_text_modified_p(svn_boolean_t *mo
                        svn_wc_adm_access_t *adm_access,
                        apr_pool_t *pool);
 
-
 /** Set @a *modified_p to non-zero if @a path's properties are modified
  * with regard to the base revision, else set @a modified_p to zero.
  * @a adm_access must be an access baton for @a path.
  *
- * If you want to use this with a post-wc-ng working copy, just call
- * svn_wc_get_prop_diffs2() and examine the output.
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc_props_modified_p2(svn_boolean_t *modified_p,
+                         svn_wc_context_t* wc_ctx,
+                         const char *local_abspath,
+                          apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_props_modified_p2(), but with a relative path and
+ * adm_access baton.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
  */
@@ -4243,7 +4250,7 @@ svn_wc_status_set_repos_locks(void *set_
  * @par Important:
  * This is a variant of svn_wc_add4().  No changes will happen
  * to the repository until a commit occurs.  This scheduling can be
- * removed with svn_client_revert2().
+ * removed with svn_client_revert4().
  *
  * @since New in 1.7.
  */
@@ -6957,6 +6964,23 @@ svn_wc_revert(const char *path,
               void *notify_baton,
               apr_pool_t *pool);
 
+/**
+ * Restores a missing node, @a local_abspath using the @a wc_ctx. Records
+ * the new last modified time of the file for status processing.
+ *
+ * If @a use_commit_times is TRUE, then set restored files' timestamps
+ * to their last-commit-times.
+ *
+ * ### Before Single-DB this function can only restore missing files.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc_restore(svn_wc_context_t *wc_ctx,
+               const char *local_abspath,
+               svn_boolean_t use_commit_times,
+               apr_pool_t *scratch_pool);
+
 
 /* Tmp files */
 

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/cmdline.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/cmdline.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/cmdline.c Thu Aug  5 15:07:22 2010
@@ -121,10 +121,15 @@ check_root_url_of_target(const char **ro
       /* It is OK if the given target does not exist, it just means
        * we will not be able to determine the root url from this particular
        * argument.
+       *
+       * If the target itself is a URL to a repository that does not exist,
+       * that's fine, too. The callers will deal with this argument in an
+       * appropriate manter if it does not make any sense.
        */
       if ((err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
           || (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
-          || (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY))
+          || (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY)
+          || (err->apr_err == SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED))
         {
           svn_error_clear(err);
           return SVN_NO_ERROR;

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/commit.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/commit.c Thu Aug  5 15:07:22 2010
@@ -694,6 +694,11 @@ svn_client_import4(const char *path,
   const char *dir;
   apr_pool_t *subpool;
 
+  if (svn_path_is_url(path))
+    return svn_error_return(svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                              _("'%s' is not a local path"),
+                                              path));
+
   SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
   base_dir_abspath = local_abspath;
 

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/delete.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/delete.c Thu Aug  5 15:07:22 2010
@@ -318,17 +318,31 @@ svn_client_delete4(const apr_array_heade
                    svn_client_ctx_t *ctx,
                    apr_pool_t *pool)
 {
+  svn_boolean_t is_url;
+  int i;
+
   if (! paths->nelts)
     return SVN_NO_ERROR;
 
-  if (svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *)))
+  /* Check that all targets are of the same type. */
+  is_url = svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *));
+  for (i = 1; i < paths->nelts; i++)
+    {
+      const char *path = APR_ARRAY_IDX(paths, i, const char *);
+      if (is_url != svn_path_is_url(path))
+        return svn_error_return(
+                 svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                  _("Cannot mix repository and working copy "
+                                    "targets")));
+    }
+
+  if (is_url)
     {
       SVN_ERR(delete_urls(paths, revprop_table, ctx, pool));
     }
   else
     {
       apr_pool_t *subpool = svn_pool_create(pool);
-      int i;
 
       for (i = 0; i < paths->nelts; i++)
         {

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/export.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/export.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/export.c Thu Aug  5 15:07:22 2010
@@ -942,6 +942,11 @@ svn_client_export5(svn_revnum_t *result_
   SVN_ERR_ASSERT(peg_revision != NULL);
   SVN_ERR_ASSERT(revision != NULL);
 
+  if (svn_path_is_url(to))
+    return svn_error_return(svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                              _("'%s' is not a local path"),
+                                              to));
+    
   peg_revision = svn_cl__rev_default_to_head_or_working(peg_revision, from);
   revision = svn_cl__rev_default_to_peg(revision, peg_revision);
 

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/externals.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/externals.c Thu Aug  5 15:07:22 2010
@@ -877,7 +877,8 @@ handle_external_item_change(const void *
             SVN_ERR(svn_client_export4(NULL, new_item->url, local_abspath,
                                        &(new_item->peg_revision),
                                        &(new_item->revision),
-                                       FALSE, TRUE, svn_depth_infinity, NULL,
+                                       FALSE, TRUE, svn_depth_infinity,
+                                       ib->native_eol,
                                        ib->ctx, ib->iter_pool));
           else
             SVN_ERR(switch_file_external(local_abspath,

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/log.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/log.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/log.c Thu Aug  5 15:07:22 2010
@@ -391,8 +391,17 @@ svn_client_log5(const apr_array_header_t
         {
           /* We have some paths, let's use them. Start after the URL.  */
           for (i = 1; i < targets->nelts; i++)
-            APR_ARRAY_PUSH(condensed_targets, const char *) =
-                APR_ARRAY_IDX(targets, i, const char *);
+            {
+              const char *target;
+
+              target = APR_ARRAY_IDX(targets, i, const char *);
+              if (svn_path_is_url(target) || svn_dirent_is_absolute(target))
+                return svn_error_return(svn_error_createf(
+                                          SVN_ERR_ILLEGAL_TARGET, NULL,
+                                          _("'%s' is not a relative path"),
+                                          target));
+              APR_ARRAY_PUSH(condensed_targets, const char *) = target;
+            }
         }
       else
         {

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/merge.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/merge.c Thu Aug  5 15:07:22 2010
@@ -378,8 +378,9 @@ is_path_conflicted_by_merge(merge_cmd_ba
  *     different kind is expected, or if the disk node cannot be read.
  *   - Return 'missing' if there is no node on disk but one is expected.
  *     Also return 'missing' for absent nodes (not here due to authz).*/
-static svn_wc_notify_state_t
-obstructed_or_missing(const char *local_abspath,
+static svn_error_t *
+obstructed_or_missing(svn_wc_notify_state_t *obstr_state,
+                      const char *local_abspath,
                       const char *local_dir_abspath,
                       const merge_cmd_baton_t *merge_b,
                       apr_pool_t *pool)
@@ -391,20 +392,14 @@ obstructed_or_missing(const char *local_
 
   /* In a dry run, make as if nodes "deleted" by the dry run appear so. */
   if (merge_b->dry_run && dry_run_deleted_p(merge_b, local_abspath))
-    return svn_wc_notify_state_inapplicable;
-
-  /* Since this function returns no svn_error_t, we make all errors look like
-   * no node found in the wc. */
-
-  err = svn_wc_read_kind(&kind_expected, merge_b->ctx->wc_ctx,
-                         local_abspath, FALSE, pool);
-
-  if (err)
     {
-      svn_error_clear(err);
-      kind_expected = svn_node_none;
+      *obstr_state = svn_wc_notify_state_inapplicable;
+      return SVN_NO_ERROR;
     }
 
+  SVN_ERR(svn_wc_read_kind(&kind_expected, merge_b->ctx->wc_ctx,
+                           local_abspath, FALSE, pool));
+
   /* Report absent nodes as 'missing'. First of all, they count as 'hidden',
    * and since we pass show_hidden == FALSE above, they will show up as
    * 'none' here. */
@@ -413,44 +408,66 @@ obstructed_or_missing(const char *local_
       svn_boolean_t is_absent;
       err = svn_wc__node_is_status_absent(&is_absent, merge_b->ctx->wc_ctx,
                                           local_abspath, pool);
-      if (err)
-        svn_error_clear(err);
-      else if (is_absent)
-        return svn_wc_notify_state_missing;
+      if (err && err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
+        return svn_error_return(err);
+      else if (!err && is_absent)
+        {
+          *obstr_state = svn_wc_notify_state_missing;
+          return SVN_NO_ERROR;
+        }
+
+      svn_error_clear(err);
     }
 
-  /* If a node is deleted, we will still get its kind from the working copy.
+  SVN_ERR(svn_io_check_path(local_abspath, &kind_on_disk, pool));
+
+  /* If a node is deleted, the node might be gone in the working copy (and
+   * it probably is gone after we switch to single-db
+   *
    * But to compare with disk state, we want to consider deleted nodes as
-   * svn_node_none instead of their original kind.
-   * ### Not necessary with central DB:
-   * Because deleted directories are expected to remain on disk until commit
-   * to keep the metadata available, we only do this for files, not dirs. */
-  if (kind_expected == svn_node_file)
+   * svn_node_none instead of their original kind. */
+
+  if (kind_expected == svn_node_file
+      || kind_expected == svn_node_dir)
     {
       svn_boolean_t is_deleted;
-      err = svn_wc__node_is_status_deleted(&is_deleted,
-                                           merge_b->ctx->wc_ctx,
-                                           local_abspath,
-                                           pool);
-      if (err)
-        svn_error_clear(err);
-      else if (is_deleted)
-        kind_expected = svn_node_none;
-    }
 
-  err = svn_io_check_path(local_abspath, &kind_on_disk, pool);
-  if (err)
-    {
-      svn_error_clear(err);
-      kind_on_disk = svn_node_unknown;
+      SVN_ERR(svn_wc__node_is_status_deleted(&is_deleted,
+                                             merge_b->ctx->wc_ctx,
+                                             local_abspath,
+                                             pool));
+      if (is_deleted)
+        {
+          /* ### While we are not at single-db: detect missing .svn dirs.
+             ### Once we switch to single db expected kind should be always
+             ### none, just like for files */
+          if (kind_expected == svn_node_dir)
+            {
+              if (kind_on_disk == svn_node_none)
+                {
+                  svn_boolean_t is_obstructed;
+                  
+                  SVN_ERR(svn_wc__node_is_status_obstructed(&is_obstructed,
+                                                            merge_b->ctx->wc_ctx,
+                                                            local_abspath,
+                                                            pool));
+                  if (!is_obstructed)
+                    kind_expected = svn_node_none; 
+                }
+            }
+          else
+            kind_expected = svn_node_none;
+        }
     }
 
   if (kind_expected == kind_on_disk)
-    return svn_wc_notify_state_inapplicable;
+    *obstr_state = svn_wc_notify_state_inapplicable;
   else if (kind_on_disk == svn_node_none)
-    return svn_wc_notify_state_missing;
+    *obstr_state = svn_wc_notify_state_missing;
   else
-    return svn_wc_notify_state_obstructed;
+    *obstr_state = svn_wc_notify_state_obstructed;
+
+  return SVN_NO_ERROR;
 }
 
 /* Create *LEFT and *RIGHT conflict versions for conflict victim
@@ -1083,8 +1100,9 @@ merge_props_changed(const char *local_di
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(local_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  local_abspath, local_dir_abspath,
+                                  merge_b, subpool));
     if (obstr_state != svn_wc_notify_state_inapplicable)
       {
         if (state)
@@ -1319,8 +1337,9 @@ merge_file_changed(const char *local_dir
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(mine_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  mine_abspath, local_dir_abspath,
+                                  merge_b, subpool));
     if (obstr_state != svn_wc_notify_state_inapplicable)
       {
         if (content_state)
@@ -1349,7 +1368,9 @@ merge_file_changed(const char *local_dir
     SVN_ERR(svn_wc__node_get_depth(&parent_depth, merge_b->ctx->wc_ctx,
                                    svn_dirent_dirname(mine_abspath, subpool),
                                    subpool));
-    if (wc_kind == svn_node_none && parent_depth < svn_depth_files)
+    if (wc_kind == svn_node_none
+        && parent_depth < svn_depth_files
+        && parent_depth != svn_depth_unknown)
       {
         if (content_state)
           *content_state = svn_wc_notify_state_missing;
@@ -1635,8 +1656,9 @@ merge_file_added(const char *local_dir_a
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(mine_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  mine_abspath, local_dir_abspath,
+                                  merge_b, subpool));
     if (obstr_state != svn_wc_notify_state_inapplicable)
       {
         if (content_state)
@@ -1921,8 +1943,9 @@ merge_file_deleted(const char *local_dir
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(mine_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  mine_abspath, local_dir_abspath,
+                                  merge_b, subpool));
     if (obstr_state != svn_wc_notify_state_inapplicable)
       {
         if (state)
@@ -2109,8 +2132,9 @@ merge_dir_added(const char *local_dir_ab
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(local_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  local_abspath, local_dir_abspath,
+                                  merge_b, subpool));
 
     /* In this case of adding a directory, we have an exception to the usual
      * "skip if it's inconsistent" rule. If the directory exists on disk
@@ -2138,7 +2162,7 @@ merge_dir_added(const char *local_dir_ab
         merge_b->added_path = apr_pstrdup(merge_b->pool, local_abspath);
       else
         {
-          SVN_ERR(svn_io_make_dir_recursively(local_abspath, subpool));
+          SVN_ERR(svn_io_dir_make(local_abspath, APR_OS_DEFAULT, subpool));
           SVN_ERR(svn_wc_add4(merge_b->ctx->wc_ctx, local_abspath,
                               svn_depth_infinity,
                               copyfrom_url, copyfrom_rev,
@@ -2298,8 +2322,9 @@ merge_dir_deleted(const char *local_dir_
   {
     svn_wc_notify_state_t obstr_state;
 
-    obstr_state = obstructed_or_missing(local_abspath, local_dir_abspath,
-                                        merge_b, subpool);
+    SVN_ERR(obstructed_or_missing(&obstr_state,
+                                  local_abspath, local_dir_abspath,
+                                  merge_b, subpool));
     if (obstr_state != svn_wc_notify_state_inapplicable)
       {
         if (state)
@@ -2430,8 +2455,9 @@ merge_dir_opened(const char *local_dir_a
     }
 
   /* Check for an obstructed or missing node on disk. */
-  obstr_state = obstructed_or_missing(path, local_dir_abspath, merge_b,
-                                      subpool);
+  SVN_ERR(obstructed_or_missing(&obstr_state,
+                                path, local_dir_abspath,
+                                merge_b, subpool));
   if (obstr_state != svn_wc_notify_state_inapplicable)
     {
       if (skip_children)

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_client/patch.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_client/patch.c Thu Aug  5 15:07:22 2010
@@ -477,7 +477,7 @@ init_prop_target(prop_patch_target_t **p
   target_content_info_t *content_info; 
   const svn_string_t *value;
   const char *patched_path;
-
+  svn_error_t *err;
 
   content_info = apr_pcalloc(result_pool, sizeof(*content_info));
 
@@ -496,8 +496,18 @@ init_prop_target(prop_patch_target_t **p
   new_prop_target->operation = operation;
   new_prop_target->content_info = content_info;
 
-  SVN_ERR(svn_wc_prop_get2(&value, wc_ctx, local_abspath, prop_name, 
-                           result_pool, scratch_pool));
+  err = svn_wc_prop_get2(&value, wc_ctx, local_abspath, prop_name, 
+                           result_pool, scratch_pool);
+  if (err)
+    {
+      if (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+        {
+          svn_error_clear(err);
+          value = NULL;
+        }
+      else
+        return svn_error_return(err);
+    }
 
   if (value)
     {
@@ -1567,8 +1577,12 @@ send_patch_notification(const patch_targ
 
               hi = APR_ARRAY_IDX(prop_target->content_info->hunks, i,
                                  hunk_info_t *);
-              SVN_ERR(send_hunk_notification(hi, target, prop_target->name, 
-                                             ctx, iterpool));
+
+              /* Don't notify on the hunk level for added or deleted props. */
+              if (prop_target->operation != svn_diff_op_added &&
+                  prop_target->operation != svn_diff_op_deleted)
+                SVN_ERR(send_hunk_notification(hi, target, prop_target->name, 
+                                               ctx, iterpool));
             }
         }
       svn_pool_destroy(iterpool);
@@ -1936,7 +1950,10 @@ create_missing_parents(patch_target_t *t
       else if (wc_kind == svn_node_dir)
         {
           if (is_deleted)
-            break;
+            {
+              target->skipped = TRUE;
+              break;
+            }
 
           /* continue one level deeper */
           present_components++;
@@ -2058,7 +2075,25 @@ install_patched_target(patch_target_t *t
                                    svn_dirent_dirname(target->local_abspath,
                                                       pool),
                                    FALSE, pool));
-          if (parent_db_kind != svn_node_dir)
+
+          /* We don't allow targets to be added under dirs scheduled for
+           * deletion. */
+          if (parent_db_kind == svn_node_dir)
+            {
+              const char *parent_abspath;
+              svn_boolean_t is_deleted;
+              
+              parent_abspath = svn_dirent_dirname(target->local_abspath,
+                                                  pool);
+              SVN_ERR(svn_wc__node_is_status_deleted(&is_deleted, ctx->wc_ctx,
+                                                     parent_abspath, pool));
+              if (is_deleted)
+                {
+                  target->skipped = TRUE;
+                  return SVN_NO_ERROR;
+                }
+            }
+          else
             SVN_ERR(create_missing_parents(target, abs_wc_path, ctx,
                                            dry_run, pool));
         }

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_diff/parse-diff.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_diff/parse-diff.c Thu Aug  5 15:07:22 2010
@@ -881,10 +881,12 @@ static svn_error_t *
 git_start(enum parse_state *new_state, const char *line, svn_patch_t *patch,
           apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  const char *old_path;
-  const char *new_path;
-  char *end_old_path;
-  char *slash;
+  const char *old_path_start;
+  char *old_path_end;
+  const char *new_path_start;
+  const char *new_path_end;
+  char *new_path_marker;
+  const char *old_path_marker;
 
   /* ### Add handling of escaped paths
    * http://www.kernel.org/pub/software/scm/git/docs/git-diff.html: 
@@ -897,59 +899,79 @@ git_start(enum parse_state *new_state, c
   /* Our line should look like this: 'git --diff a/path b/path'. 
    * If we find any deviations from that format, we return with state reset
    * to start.
-   *
-   * ### We can't handle paths with spaces!
    */
-  slash = strchr(line, '/');
+  old_path_marker = strstr(line, " a/");
 
-  if (! slash)
+  if (! old_path_marker)
     {
       *new_state = state_start;
       return SVN_NO_ERROR;
     }
 
-  old_path = slash + 1;
-
-  if (! *old_path)
+  if (! *(old_path_marker + 3))
     {
       *new_state = state_start;
       return SVN_NO_ERROR;
     }
 
-  end_old_path = strchr(old_path, ' ');
+  new_path_marker = strstr(old_path_marker, " b/");
 
-  if (end_old_path)
-    *end_old_path = '\0';
-  else
+  if (! new_path_marker)
     {
       *new_state = state_start;
       return SVN_NO_ERROR;
     }
 
-  /* The new path begins after the first slash after the old path. */
-  slash = strchr(end_old_path + 1, '/');
-
-  if (! slash)
+  if (! *(new_path_marker + 3))
     {
       *new_state = state_start;
       return SVN_NO_ERROR;
     }
 
-  /* The path starts after the slash */
-  new_path = slash + 1;
+  /* By now, we know that we have a line on the form '--git diff a/.+ b/.+'
+   * We only need the filenames when we have deleted or added empty
+   * files. In those cases the old_path and new_path is identical on the
+   * '--git diff' line.  For all other cases we fetch the filenames from
+   * other header lines. */ 
+  old_path_start = line + strlen("--git diff a/");
+  new_path_end = line + strlen(line);
+  new_path_start = old_path_start;
+
+  while (TRUE)
+    {
+      int len_old;
+      int len_new;
+
+      new_path_marker = strstr(new_path_start, " b/");
+
+      /* No new path marker, bail out. */
+      if (! new_path_marker)
+        break;
+
+      old_path_end = new_path_marker;
+      new_path_start = new_path_marker + strlen(" b/");
+
+      /* No path after the marker. */
+      if (! *new_path_start)
+        break;
+
+      len_old = old_path_end - old_path_start;
+      len_new = new_path_end - new_path_start;
+
+      /* Are the paths before and after the " b/" marker the same? */
+      if (len_old == len_new
+          && ! strncmp(old_path_start, new_path_start, len_old))
+        {
+          *old_path_end = '\0';
+          SVN_ERR(grab_filename(&patch->old_filename, old_path_start,
+                                result_pool, scratch_pool));
 
-  if (! *new_path)
-    {
-      *new_state = state_start;
-      return SVN_NO_ERROR;
+          SVN_ERR(grab_filename(&patch->new_filename, new_path_start,
+                                result_pool, scratch_pool));
+          break;
+        }
     }
 
-  SVN_ERR(grab_filename(&patch->old_filename, old_path,
-                        result_pool, scratch_pool));
-
-  SVN_ERR(grab_filename(&patch->new_filename, new_path,
-                        result_pool, scratch_pool));
-
   /* We assume that the path is only modified until we've found a 'tree'
    * header */
   patch->operation = svn_diff_op_modified;
@@ -963,7 +985,15 @@ static svn_error_t *
 git_minus(enum parse_state *new_state, const char *line, svn_patch_t *patch,
           apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  /* If we can find a tab, it separates the filename from
+   * the rest of the line which we can discard. */
+  char *tab = strchr(line, '\t');
+  if (tab)
+    *tab = '\0';
+
+  /* ### What if we have "--- /dev/null"? */
+  SVN_ERR(grab_filename(&patch->old_filename, line + strlen("--- a/"),
+                        result_pool, scratch_pool));
 
   *new_state = state_git_minus_seen;
   return SVN_NO_ERROR;
@@ -974,7 +1004,15 @@ static svn_error_t *
 git_plus(enum parse_state *new_state, const char *line, svn_patch_t *patch,
           apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  /* If we can find a tab, it separates the filename from
+   * the rest of the line which we can discard. */
+  char *tab = strchr(line, '\t');
+  if (tab)
+    *tab = '\0';
+
+  /* ### What if we have "+++ /dev/null" ? */
+  SVN_ERR(grab_filename(&patch->new_filename, line + strlen("+++ b/"),
+                        result_pool, scratch_pool));
 
   *new_state = state_git_header_found;
   return SVN_NO_ERROR;
@@ -985,7 +1023,8 @@ static svn_error_t *
 git_move_from(enum parse_state *new_state, const char *line, svn_patch_t *patch,
               apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  SVN_ERR(grab_filename(&patch->old_filename, line + strlen("rename from "),
+                        result_pool, scratch_pool));
 
   *new_state = state_move_from_seen;
   return SVN_NO_ERROR;
@@ -996,7 +1035,8 @@ static svn_error_t *
 git_move_to(enum parse_state *new_state, const char *line, svn_patch_t *patch,
             apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  SVN_ERR(grab_filename(&patch->new_filename, line + strlen("rename to "),
+                        result_pool, scratch_pool));
 
   patch->operation = svn_diff_op_moved;
 
@@ -1009,7 +1049,8 @@ static svn_error_t *
 git_copy_from(enum parse_state *new_state, const char *line, svn_patch_t *patch,
               apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  SVN_ERR(grab_filename(&patch->old_filename, line + strlen("copy from "),
+                        result_pool, scratch_pool));
 
   *new_state = state_copy_from_seen; 
   return SVN_NO_ERROR;
@@ -1020,7 +1061,8 @@ static svn_error_t *
 git_copy_to(enum parse_state *new_state, const char *line, svn_patch_t *patch,
             apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  /* ### Check that the path is consistent with the 'git --diff ' line. */
+  SVN_ERR(grab_filename(&patch->new_filename, line + strlen("copy to "),
+                        result_pool, scratch_pool));
 
   patch->operation = svn_diff_op_copied;
 
@@ -1095,11 +1137,6 @@ svn_diff_parse_next_patch(svn_patch_t **
 
   enum parse_state state = state_start;
 
-  /* ### dannas: As I've understood the git diff format, the first line
-   * ### contains both paths and the paths in the headers that follow are only
-   * ### there to ensure that the path is valid. Not sure though, the
-   * ### research continues... */
-
   /* Our table consisting of:
    * Expected Input     Required state          Function to call */
   struct transition transitions[] = 
@@ -1110,8 +1147,8 @@ svn_diff_parse_next_patch(svn_patch_t **
       {"--- a/",        state_git_diff_seen,    git_minus},
       {"--- a/",        state_git_tree_seen,    git_minus},
       {"+++ b/",        state_git_minus_seen,   git_plus},
-      {"move from ",    state_git_diff_seen,    git_move_from},
-      {"move to ",      state_move_from_seen,   git_move_to},
+      {"rename from ",  state_git_diff_seen,    git_move_from},
+      {"rename to ",    state_move_from_seen,   git_move_to},
       {"copy from ",    state_git_diff_seen,    git_copy_from},
       {"copy to ",      state_copy_from_seen,   git_copy_to},
       {"new file ",     state_git_diff_seen,    git_new_file},

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_fs_fs/fs_fs.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_fs_fs/fs_fs.c Thu Aug  5 15:07:22 2010
@@ -6374,11 +6374,12 @@ svn_fs_fs__reserve_copy_id(const char **
 static svn_error_t *
 write_revision_zero(svn_fs_t *fs)
 {
+  const char *path_revision_zero = path_rev(fs, 0, fs->pool);
   apr_hash_t *proplist;
   svn_string_t date;
 
   /* Write out a rev file for revision 0. */
-  SVN_ERR(svn_io_file_create(path_rev(fs, 0, fs->pool),
+  SVN_ERR(svn_io_file_create(path_revision_zero,
                              "PLAIN\nEND\nENDREP\n"
                              "id: 0.0.r0/17\n"
                              "type: dir\n"
@@ -6387,6 +6388,7 @@ write_revision_zero(svn_fs_t *fs)
                              "2d2977d1c96f487abe4a1e202dd03b4e\n"
                              "cpath: /\n"
                              "\n\n17 107\n", fs->pool));
+  SVN_ERR(svn_io_set_file_read_only(path_revision_zero, FALSE, fs->pool));
 
   /* Set a date on revision 0. */
   date.data = svn_time_to_cstring(apr_time_now(), fs->pool);
@@ -6624,7 +6626,7 @@ recover_find_max_ids(svn_fs_t *fs, svn_r
 {
   apr_hash_t *headers;
   char *value;
-  node_revision_t noderev;
+  representation_t *data_rep;
   struct rep_args *ra;
   struct recover_read_from_file_baton baton;
   svn_stream_t *stream;
@@ -6637,10 +6639,6 @@ recover_find_max_ids(svn_fs_t *fs, svn_r
                                                                pool),
                             pool));
 
-  /* We're going to populate a skeletal noderev - just the id and data_rep. */
-  value = apr_hash_get(headers, HEADER_ID, APR_HASH_KEY_STRING);
-  noderev.id = svn_fs_fs__id_parse(value, strlen(value), pool);
-
   /* Check that this is a directory.  It should be. */
   value = apr_hash_get(headers, HEADER_TYPE, APR_HASH_KEY_STRING);
   if (value == NULL || strcmp(value, KIND_DIR) != 0)
@@ -6651,18 +6649,18 @@ recover_find_max_ids(svn_fs_t *fs, svn_r
   value = apr_hash_get(headers, HEADER_TEXT, APR_HASH_KEY_STRING);
   if (!value)
     return SVN_NO_ERROR;
-  SVN_ERR(read_rep_offsets(&noderev.data_rep, value, NULL, FALSE, pool));
+  SVN_ERR(read_rep_offsets(&data_rep, value, NULL, FALSE, pool));
 
   /* If the directory's data representation wasn't changed in this revision,
      we've already scanned the directory's contents for noderevs, so we don't
      need to again.  This will occur if a property is changed on a directory
      without changing the directory's contents. */
-  if (noderev.data_rep->revision != rev)
+  if (data_rep->revision != rev)
     return SVN_NO_ERROR;
 
   /* We could use get_dir_contents(), but this is much cheaper.  It does
      rely on directory entries being stored as PLAIN reps, though. */
-  offset = noderev.data_rep->offset;
+  offset = data_rep->offset;
   SVN_ERR(svn_io_file_seek(rev_file, APR_SET, &offset, pool));
   SVN_ERR(read_rep_line(&ra, rev_file, pool));
   if (ra->is_delta)
@@ -6674,7 +6672,7 @@ recover_find_max_ids(svn_fs_t *fs, svn_r
      stored in the representation. */
   baton.file = rev_file;
   baton.pool = pool;
-  baton.remaining = noderev.data_rep->expanded_size;
+  baton.remaining = data_rep->expanded_size;
   stream = svn_stream_create(&baton, pool);
   svn_stream_set_read(stream, read_handler_recover);
 
@@ -7489,6 +7487,8 @@ pack_shard(const char *revs_dir,
   SVN_ERR(svn_stream_close(manifest_stream));
   SVN_ERR(svn_stream_close(pack_stream));
   SVN_ERR(svn_io_copy_perms(shard_path, pack_file_dir, pool));
+  SVN_ERR(svn_io_set_file_read_only(pack_file_path, FALSE, pool));
+  SVN_ERR(svn_io_set_file_read_only(manifest_file_path, FALSE, pool));
 
   /* Update the min-unpacked-rev file to reflect our newly packed shard.
    * (ffd->min_unpacked_rev will be updated by open_pack_or_rev_file().)

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/blame.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/blame.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/blame.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/blame.c Thu Aug  5 15:07:22 2010
@@ -382,8 +382,10 @@ cdata_blame(svn_ra_serf__xml_parser_t *p
   return SVN_NO_ERROR;
 }
 
-static serf_bucket_t*
-create_file_revs_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_file_revs_body(serf_bucket_t **body_bkt,
+                      void *baton,
                       serf_bucket_alloc_t *alloc,
                       apr_pool_t *pool)
 {
@@ -419,7 +421,8 @@ create_file_revs_body(void *baton,
   svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                      "S:file-revs-report");
 
-  return buckets;
+  *body_bkt = buckets;
+  return SVN_NO_ERROR;
 }
 
 svn_error_t *

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/commit.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/commit.c Thu Aug  5 15:07:22 2010
@@ -238,8 +238,10 @@ return_response_err(svn_ra_serf__handler
                                   err);
 }
 
-static serf_bucket_t *
-create_checkout_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_checkout_body(serf_bucket_t **bkt,
+                     void *baton,
                      serf_bucket_alloc_t *alloc,
                      apr_pool_t *pool)
 {
@@ -263,7 +265,8 @@ create_checkout_body(void *baton,
   svn_ra_serf__add_tag_buckets(body_bkt, "D:apply-to-version", NULL, alloc);
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:checkout");
 
-  return body_bkt;
+  *bkt = body_bkt;
+  return SVN_NO_ERROR;
 }
 
 /* Implements svn_ra_serf__response_handler_t */
@@ -707,7 +710,7 @@ proppatch_walker(void *baton,
   return SVN_NO_ERROR;
 }
 
-static apr_status_t
+static svn_error_t *
 setup_proppatch_headers(serf_bucket_t *headers,
                         void *baton,
                         apr_pool_t *pool)
@@ -738,16 +741,19 @@ setup_proppatch_headers(serf_bucket_t *h
         }
     }
 
-  return APR_SUCCESS;
+  return SVN_NO_ERROR;
 }
 
-static serf_bucket_t *
-create_proppatch_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_proppatch_body(serf_bucket_t **bkt,
+                      void *baton,
                       serf_bucket_alloc_t *alloc,
                       apr_pool_t *pool)
 {
   proppatch_context_t *ctx = baton;
   serf_bucket_t *body_bkt;
+  svn_error_t *err;
 
   body_bkt = serf_bucket_aggregate_create(alloc);
 
@@ -764,9 +770,10 @@ create_proppatch_body(void *baton,
       svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:set", NULL);
       svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", NULL);
 
-      svn_ra_serf__walk_all_props(ctx->changed_props, ctx->path,
-                                  SVN_INVALID_REVNUM,
-                                  proppatch_walker, body_bkt, pool);
+      err = svn_ra_serf__walk_all_props(ctx->changed_props, ctx->path,
+                                        SVN_INVALID_REVNUM,
+                                         proppatch_walker, body_bkt, pool);
+      svn_error_clear(err); /* ### */
 
       svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");
       svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:set");
@@ -777,9 +784,10 @@ create_proppatch_body(void *baton,
       svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:remove", NULL);
       svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", NULL);
 
-      svn_ra_serf__walk_all_props(ctx->removed_props, ctx->path,
-                                  SVN_INVALID_REVNUM,
-                                  proppatch_walker, body_bkt, pool);
+      err = svn_ra_serf__walk_all_props(ctx->removed_props, ctx->path,
+                                        SVN_INVALID_REVNUM,
+                                        proppatch_walker, body_bkt, pool);
+      svn_error_clear(err); /* ### */
 
       svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");
       svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:remove");
@@ -787,7 +795,8 @@ create_proppatch_body(void *baton,
 
   svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:propertyupdate");
 
-  return body_bkt;
+  *bkt = body_bkt;
+  return SVN_NO_ERROR;
 }
 
 static svn_error_t*
@@ -829,8 +838,10 @@ proppatch_resource(proppatch_context_t *
   return SVN_NO_ERROR;
 }
 
-static serf_bucket_t *
-create_put_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_put_body(serf_bucket_t **body_bkt,
+                void *baton,
                 serf_bucket_alloc_t *alloc,
                 apr_pool_t *pool)
 {
@@ -853,18 +864,22 @@ create_put_body(void *baton,
   offset = 0;
   apr_file_seek(ctx->svndiff, APR_SET, &offset);
 
-  return serf_bucket_file_create(ctx->svndiff, alloc);
+  *body_bkt = serf_bucket_file_create(ctx->svndiff, alloc);
+  return SVN_NO_ERROR;
 }
 
-static serf_bucket_t *
-create_empty_put_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_empty_put_body(serf_bucket_t **body_bkt,
+                      void *baton,
                       serf_bucket_alloc_t *alloc,
                       apr_pool_t *pool)
 {
-  return SERF_BUCKET_SIMPLE_STRING("", alloc);
+  *body_bkt = SERF_BUCKET_SIMPLE_STRING("", alloc);
+  return SVN_NO_ERROR;
 }
 
-static apr_status_t
+static svn_error_t *
 setup_put_headers(serf_bucket_t *headers,
                   void *baton,
                   apr_pool_t *pool)
@@ -909,7 +924,7 @@ setup_put_headers(serf_bucket_t *headers
   return APR_SUCCESS;
 }
 
-static apr_status_t
+static svn_error_t *
 setup_copy_file_headers(serf_bucket_t *headers,
                         void *baton,
                         apr_pool_t *pool)
@@ -928,10 +943,10 @@ setup_copy_file_headers(serf_bucket_t *h
   serf_bucket_headers_set(headers, "Depth", "0");
   serf_bucket_headers_set(headers, "Overwrite", "T");
 
-  return APR_SUCCESS;
+  return SVN_NO_ERROR;
 }
 
-static apr_status_t
+static svn_error_t *
 setup_copy_dir_headers(serf_bucket_t *headers,
                        void *baton,
                        apr_pool_t *pool)
@@ -972,10 +987,10 @@ setup_copy_dir_headers(serf_bucket_t *he
                apr_pstrdup(dir->commit->pool, dir->name), APR_HASH_KEY_STRING,
                (void*)1);
 
-  return APR_SUCCESS;
+  return SVN_NO_ERROR;
 }
 
-static apr_status_t
+static svn_error_t *
 setup_delete_headers(serf_bucket_t *headers,
                      void *baton,
                      apr_pool_t *pool)
@@ -1005,11 +1020,13 @@ setup_delete_headers(serf_bucket_t *head
         }
     }
 
-  return APR_SUCCESS;
+  return SVN_NO_ERROR;
 }
 
-static serf_bucket_t *
-create_delete_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_delete_body(serf_bucket_t **body_bkt,
+                   void *baton,
                    serf_bucket_alloc_t *alloc,
                    apr_pool_t *pool)
 {
@@ -1023,7 +1040,8 @@ create_delete_body(void *baton,
   svn_ra_serf__merge_lock_token_list(ctx->lock_token_hash, ctx->path,
                                      body, alloc, pool);
 
-  return body;
+  *body_bkt = body;
+  return SVN_NO_ERROR;
 }
 
 /* Helper function to write the svndiff stream to temporary file. */

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/get_deleted_rev.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/get_deleted_rev.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/get_deleted_rev.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/get_deleted_rev.c Thu Aug  5 15:07:22 2010
@@ -136,8 +136,10 @@ cdata_getdrev(svn_ra_serf__xml_parser_t 
   return SVN_NO_ERROR;
 }
 
-static serf_bucket_t*
-create_getdrev_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_getdrev_body(serf_bucket_t **body_bkt,
+                    void *baton,
                     serf_bucket_alloc_t *alloc,
                     apr_pool_t *pool)
 {
@@ -169,7 +171,8 @@ create_getdrev_body(void *baton,
   svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                      "S:get-deleted-rev-report");
 
-  return buckets;
+  *body_bkt = buckets;
+  return SVN_NO_ERROR;
 }
 
 svn_error_t *

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getdate.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getdate.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getdate.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getdate.c Thu Aug  5 15:07:22 2010
@@ -164,8 +164,10 @@ cdata_getdate(svn_ra_serf__xml_parser_t 
   return SVN_NO_ERROR;
 }
 
-static serf_bucket_t*
-create_getdate_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_getdate_body(serf_bucket_t **body_bkt,
+                    void *baton,
                     serf_bucket_alloc_t *alloc,
                     apr_pool_t *pool)
 {
@@ -186,7 +188,8 @@ create_getdate_body(void *baton,
 
   svn_ra_serf__add_close_tag_buckets(buckets, alloc, "S:dated-rev-report");
 
-  return buckets;
+  *body_bkt = buckets;
+  return SVN_NO_ERROR;
 }
 
 svn_error_t *

Modified: subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocations.c
URL: http://svn.apache.org/viewvc/subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocations.c?rev=982653&r1=982652&r2=982653&view=diff
==============================================================================
--- subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocations.c (original)
+++ subversion/branches/issue-2779-dev/subversion/libsvn_ra_serf/getlocations.c Thu Aug  5 15:07:22 2010
@@ -180,8 +180,10 @@ end_getloc(svn_ra_serf__xml_parser_t *pa
   return SVN_NO_ERROR;
 }
 
-static serf_bucket_t*
-create_get_locations_body(void *baton,
+/* Implements svn_ra_serf__request_body_delegate_t */
+static svn_error_t *
+create_get_locations_body(serf_bucket_t **body_bkt,
+                          void *baton,
                           serf_bucket_alloc_t *alloc,
                           apr_pool_t *pool)
 {
@@ -216,7 +218,8 @@ create_get_locations_body(void *baton,
   svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                      "S:get-locations");
 
-  return buckets;
+  *body_bkt = buckets;
+  return SVN_NO_ERROR;
 }
 
 svn_error_t *