subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r1436688 [1/12] - in /subversion/branches/ev2-export: ./ contrib/client-side/emacs/ notes/commit-access-templates/ subversion/bindings/javahl/native/ subversion/bindings/swig/perl/native/t/ subversion/bindings/swig/ruby/test/ subversion/inc...
Date Mon, 21 Jan 2013 23:37:04 GMT
Author: hwright
Date: Mon Jan 21 23:37:01 2013
New Revision: 1436688

URL: http://svn.apache.org/viewvc?rev=1436688&view=rev
Log:
On the ev2-export branch:
Bring up-to-date with trunk.  This results in merge tests 133 failing,
because it is currently failing on trunk.

Added:
    subversion/branches/ev2-export/subversion/libsvn_wc/delete.c
      - copied unchanged from r1436653, subversion/trunk/subversion/libsvn_wc/delete.c
    subversion/branches/ev2-export/subversion/libsvn_wc/revert.c
      - copied unchanged from r1436653, subversion/trunk/subversion/libsvn_wc/revert.c
    subversion/branches/ev2-export/tools/server-side/svnpubsub/notes/
      - copied from r1436653, subversion/trunk/tools/server-side/svnpubsub/notes/
    subversion/branches/ev2-export/tools/server-side/svnpubsub/svnwcsub.conf.example
      - copied unchanged from r1436653, subversion/trunk/tools/server-side/svnpubsub/svnwcsub.conf.example
Removed:
    subversion/branches/ev2-export/subversion/tests/cmdline/resolved_tests.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/example.conf
    subversion/branches/ev2-export/tools/server-side/svnpubsub/test.conf
Modified:
    subversion/branches/ev2-export/   (props changed)
    subversion/branches/ev2-export/CHANGES
    subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el
    subversion/branches/ev2-export/notes/commit-access-templates/contrib-committer.tmpl
    subversion/branches/ev2-export/notes/commit-access-templates/full-committer.tmpl
    subversion/branches/ev2-export/notes/commit-access-templates/partial-committer.tmpl
    subversion/branches/ev2-export/notes/commit-access-templates/pmc-member.tmpl
    subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/ev2-export/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/6ra.t
    subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_ra.rb
    subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h
    subversion/branches/ev2-export/subversion/include/svn_client.h
    subversion/branches/ev2-export/subversion/include/svn_config.h
    subversion/branches/ev2-export/subversion/include/svn_fs.h
    subversion/branches/ev2-export/subversion/include/svn_io.h
    subversion/branches/ev2-export/subversion/include/svn_repos.h
    subversion/branches/ev2-export/subversion/include/svn_types.h
    subversion/branches/ev2-export/subversion/libsvn_client/blame.c
    subversion/branches/ev2-export/subversion/libsvn_client/client.h
    subversion/branches/ev2-export/subversion/libsvn_client/commit.c
    subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c
    subversion/branches/ev2-export/subversion/libsvn_client/delete.c
    subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c
    subversion/branches/ev2-export/subversion/libsvn_client/diff.c
    subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c
    subversion/branches/ev2-export/subversion/libsvn_client/externals.c
    subversion/branches/ev2-export/subversion/libsvn_client/iprops.c
    subversion/branches/ev2-export/subversion/libsvn_client/merge.c
    subversion/branches/ev2-export/subversion/libsvn_client/patch.c
    subversion/branches/ev2-export/subversion/libsvn_client/repos_diff.c
    subversion/branches/ev2-export/subversion/libsvn_client/status.c
    subversion/branches/ev2-export/subversion/libsvn_client/update.c
    subversion/branches/ev2-export/subversion/libsvn_delta/editor.c
    subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.c
    subversion/branches/ev2-export/subversion/libsvn_fs/fs-loader.h
    subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/rep-cache.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/rep-cache.h
    subversion/branches/ev2-export/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/serf.c
    subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c
    subversion/branches/ev2-export/subversion/libsvn_ra_svn/client.c
    subversion/branches/ev2-export/subversion/libsvn_ra_svn/editorp.c
    subversion/branches/ev2-export/subversion/libsvn_ra_svn/marshal.c
    subversion/branches/ev2-export/subversion/libsvn_repos/dump.c
    subversion/branches/ev2-export/subversion/libsvn_repos/reporter.c
    subversion/branches/ev2-export/subversion/libsvn_repos/repos.c
    subversion/branches/ev2-export/subversion/libsvn_subr/config.c
    subversion/branches/ev2-export/subversion/libsvn_subr/deprecated.c
    subversion/branches/ev2-export/subversion/libsvn_subr/io.c
    subversion/branches/ev2-export/subversion/libsvn_subr/sysinfo.c
    subversion/branches/ev2-export/subversion/libsvn_subr/types.c
    subversion/branches/ev2-export/subversion/libsvn_wc/adm_ops.c
    subversion/branches/ev2-export/subversion/libsvn_wc/conflicts.c
    subversion/branches/ev2-export/subversion/libsvn_wc/crop.c
    subversion/branches/ev2-export/subversion/libsvn_wc/diff_local.c
    subversion/branches/ev2-export/subversion/libsvn_wc/entries.c
    subversion/branches/ev2-export/subversion/libsvn_wc/externals.c
    subversion/branches/ev2-export/subversion/libsvn_wc/merge.c
    subversion/branches/ev2-export/subversion/libsvn_wc/node.c
    subversion/branches/ev2-export/subversion/libsvn_wc/questions.c
    subversion/branches/ev2-export/subversion/libsvn_wc/status.c
    subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c
    subversion/branches/ev2-export/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/ev2-export/subversion/libsvn_wc/wc.h
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.c
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db.h
    subversion/branches/ev2-export/subversion/libsvn_wc/wc_db_update_move.c
    subversion/branches/ev2-export/subversion/libsvn_wc/workqueue.c
    subversion/branches/ev2-export/subversion/mod_authz_svn/INSTALL
    subversion/branches/ev2-export/subversion/po/de.po
    subversion/branches/ev2-export/subversion/svn/cl-conflicts.c
    subversion/branches/ev2-export/subversion/svn/cl.h
    subversion/branches/ev2-export/subversion/svn/conflict-callbacks.c
    subversion/branches/ev2-export/subversion/svn/diff-cmd.c
    subversion/branches/ev2-export/subversion/svn/log-cmd.c
    subversion/branches/ev2-export/subversion/svn/merge-cmd.c
    subversion/branches/ev2-export/subversion/svn/notify.c
    subversion/branches/ev2-export/subversion/svn/status.c
    subversion/branches/ev2-export/subversion/svn/svn.c
    subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c
    subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/ev2-export/subversion/svnlook/svnlook.c
    subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c
    subversion/branches/ev2-export/subversion/svnrdump/svnrdump.c
    subversion/branches/ev2-export/subversion/svnserve/serve.c
    subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/blame_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c
    subversion/branches/ev2-export/subversion/tests/cmdline/externals_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/prop_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/special_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/sandbox.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/tree.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/ev2-export/subversion/tests/cmdline/switch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/ev2-export/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/ev2-export/tools/client-side/svn-bench/svn-bench.c
    subversion/branches/ev2-export/tools/dev/benchmarks/suite1/benchmark.py
    subversion/branches/ev2-export/tools/examples/svnshell.rb
    subversion/branches/ev2-export/tools/server-side/fsfs-stats.c
    subversion/branches/ev2-export/tools/server-side/svnauthz.c
    subversion/branches/ev2-export/tools/server-side/svnpubsub/README.txt
    subversion/branches/ev2-export/tools/server-side/svnpubsub/commit-hook.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/daemonize.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/irkerbridge.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/svnpubsub/client.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/svnpubsub/server.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/svntweet.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/svnwcsub.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/testserver.py
    subversion/branches/ev2-export/tools/server-side/svnpubsub/watcher.py

Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1432502-1436683

Modified: subversion/branches/ev2-export/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/CHANGES?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/CHANGES (original)
+++ subversion/branches/ev2-export/CHANGES Mon Jan 21 23:37:01 2013
@@ -22,6 +22,7 @@ http://svn.apache.org/repos/asf/subversi
     * new --ignore-properties option for 'svn diff' (r1239553. -617)
     * new --properties-only option for 'svn diff' (r1336110)
     * new --patch-compatible option for 'svn diff' (r1239561)
+    * new --no-diff-added option for 'svn diff' (r1433958)
     * new SvnPubSub distributed commit hooks (tools/server-side/svnpubsub)
     * 'svn diff' can compare arbitrary files and directories (r1310291, et al)
     * ra_serf avoids re-downloading content present in pristine store (r1333936)
@@ -38,10 +39,10 @@ http://svn.apache.org/repos/asf/subversi
     * 'svn propset' checks spelling of reserved property names.
 
   - Client-side bugfixes:
-    *
+    * 
 
   - Server-side bugfixes:
-    *
+    * SVNParentPath / repository listing now authz-filtered (r1408184)
 
   - Other tool improvements and bugfixes:
     * 'svnmucc' promoted to first-class supported utility (issue #3308)

Modified: subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el (original)
+++ subversion/branches/ev2-export/contrib/client-side/emacs/dsvn.el Mon Jan 21 23:37:01 2013
@@ -165,7 +165,7 @@ arguments ARGS. Return the process objec
    (lambda ()
      (apply svn-process-file svn-program infile buffer display args))))
 
-(defun svn-call-process (buffer &rest args)
+(defun svn-call-process (buffer args)
   "Run svn and wait for it to finish.
 Argument BUFFER is the buffer in which to insert output.
 Optional argument ARGS are the arguments to svn."
@@ -614,8 +614,8 @@ VERBOSE-P."
       (erase-buffer)
       (setq default-directory dir)
       (svn-call-process diff-buf
-                        "diff" "-x" "-p" "-r"
-                        (format "%d:%d" (1- commit-id) commit-id)))))
+       (append (list "diff" "-r" (format "%d:%d" (1- commit-id) commit-id))
+               svn-diff-args)))))
 
 (defun svn-log-edit-files (commit-id)
   (let ((root (svn-repository-root))

Modified: subversion/branches/ev2-export/notes/commit-access-templates/contrib-committer.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/commit-access-templates/contrib-committer.tmpl?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/commit-access-templates/contrib-committer.tmpl (original)
+++ subversion/branches/ev2-export/notes/commit-access-templates/contrib-committer.tmpl Mon Jan 21 23:37:01 2013
@@ -37,13 +37,12 @@ moving it into tools/.
 
 If you do not already have partial commit access, you can accept this
 offer by replying to this mail and following the instructions at
-<http://www.apache.org/dev/new-committers-guide.html#cla>.  A temporary
-password will be chosen for you and revealed via email.  Once you are
-notified that your account has been created, you are encouraged to
-modify the COMMITTERS file appropriately (under the 'XXXXXXXXXXX'
-section, describing your commit area as '(XXXXXXX)'), which also serves
-as a test of your new username and password.  Then create
-contrib/XXXXX/ and start committing!
+<http://www.apache.org/dev/new-committers-guide.html#cla>.  You will
+receive an email with details on how to access your account.  Once you
+have access to your account, you are encouraged to modify the COMMITTERS
+file appropriately (under the 'XXXXXXXXXXX' section, describing your commit
+area as '(XXXXXXX)'), which also serves as a test of your new username and
+password.  Then create contrib/XXXXX/ and start committing!
 
 Thanks,
 -Your Name Here

Modified: subversion/branches/ev2-export/notes/commit-access-templates/full-committer.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/commit-access-templates/full-committer.tmpl?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/commit-access-templates/full-committer.tmpl (original)
+++ subversion/branches/ev2-export/notes/commit-access-templates/full-committer.tmpl Mon Jan 21 23:37:01 2013
@@ -23,11 +23,11 @@ you can do it yourself, that's fine too)
 
 If you do not already have partial commit access, you can accept this
 offer by replying to this mail and following the instructions at
-<http://www.apache.org/dev/new-committers-guide.html#cla>.  A temporary
-password will be chosen for you and revealed via email.  Once you are
-notified that your account has been created, you are encouraged to
-modify the COMMITTERS file appropriately, which also serves as a test
-of your new username and password.
+<http://www.apache.org/dev/new-committers-guide.html#cla>.  You will
+receive an email with details on how to access your account.  Once you
+have access to your account, you are encouraged to modify the COMMITTERS
+file appropriately, which also serves as a test of your new username and
+password.
 
 Becoming a full committer also means you'll become part of the Subversion
 Project Management Committee (PMC).  The PMC is the managing body of the

Modified: subversion/branches/ev2-export/notes/commit-access-templates/partial-committer.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/commit-access-templates/partial-committer.tmpl?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/commit-access-templates/partial-committer.tmpl (original)
+++ subversion/branches/ev2-export/notes/commit-access-templates/partial-committer.tmpl Mon Jan 21 23:37:01 2013
@@ -21,11 +21,11 @@ COMMITTERS file (or you can do it yourse
 
 If you do not already have partial commit access, you can accept this
 offer by replying to this mail and following the instructions at
-<http://www.apache.org/dev/new-committers-guide.html#cla>.  A temporary
-password will be chosen for you and revealed via email.  Once you are
-notified that your account has been created, you are encouraged to
-modify the COMMITTERS file appropriately, which also serves as a test
-of your new username and password.
+<http://www.apache.org/dev/new-committers-guide.html#cla>.  You will
+receive an email with details on how to access your account.  Once you
+have access to your account, you are encouraged to modify the COMMITTERS
+file appropriately, which also serves as a test of your new username and
+password.
 
 Remember that you can still post patches for review before committing,
 when you want to.  Commit access just means that you can rely on your

Modified: subversion/branches/ev2-export/notes/commit-access-templates/pmc-member.tmpl
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/notes/commit-access-templates/pmc-member.tmpl?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/notes/commit-access-templates/pmc-member.tmpl (original)
+++ subversion/branches/ev2-export/notes/commit-access-templates/pmc-member.tmpl Mon Jan 21 23:37:01 2013
@@ -24,7 +24,7 @@ this invitation, please don't hesitate t
 You can accept this offer by simply replying to this mail.  If you do not
 already have an account with the Apache Software Foundation, please follow
 the instructions at <http://www.apache.org/dev/new-committers-guide.html#cla>.
-A temporary password will be chosen for you and revealed via email.
+You will receive an email with details on how to access your account.
 
 Please remember to subscribe to the private (PMC) mailing list by
 emailing <private-subscribe{AT}subversion.apache.org>, and to checkout

Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.cpp Mon Jan 21 23:37:01 2013
@@ -169,8 +169,8 @@ SVNClient::status(const char *path, svn_
     SVN_JNI_ERR(svn_client_status5(&youngest, ctx, checkedPath.c_str(),
                                    &rev,
                                    depth,
-                                   getAll, onServer, noIgnore, FALSE,
-                                   ignoreExternals,
+                                   getAll, onServer, noIgnore, ignoreExternals,
+                                   FALSE,
                                    changelists.array(subPool),
                                    StatusCallback::callback, callback,
                                    subPool.getPool()), );
@@ -610,7 +610,7 @@ SVNClient::suggestMergeSources(const cha
 
 void SVNClient::merge(const char *path1, Revision &revision1,
                       const char *path2, Revision &revision2,
-                      const char *localPath, bool force, svn_depth_t depth,
+                      const char *localPath, bool forceDelete, svn_depth_t depth,
                       bool ignoreAncestry, bool dryRun, bool recordOnly)
 {
     SVN::Pool subPool(pool);
@@ -634,13 +634,14 @@ void SVNClient::merge(const char *path1,
                                   srcPath2.c_str(), revision2.revision(),
                                   intLocalPath.c_str(),
                                   depth,
-                                  ignoreAncestry, force, recordOnly, dryRun,
+                                  ignoreAncestry, forceDelete, recordOnly,
+                                  dryRun,
                                   TRUE, NULL, ctx, subPool.getPool()), );
 }
 
 void SVNClient::merge(const char *path, Revision &pegRevision,
                       std::vector<RevisionRange> &rangesToMerge,
-                      const char *localPath, bool force, svn_depth_t depth,
+                      const char *localPath, bool forceDelete, svn_depth_t depth,
                       bool ignoreAncestry, bool dryRun, bool recordOnly)
 {
     SVN::Pool subPool(pool);
@@ -666,7 +667,7 @@ void SVNClient::merge(const char *path, 
                                       pegRevision.revision(),
                                       intLocalPath.c_str(),
                                       depth,
-                                      ignoreAncestry, force, recordOnly,
+                                      ignoreAncestry, forceDelete, recordOnly,
                                       dryRun, TRUE, NULL, ctx,
                                       subPool.getPool()), );
 }
@@ -940,6 +941,7 @@ void SVNClient::diff(const char *target1
     const char *c_relToDir = relativeToDir ?
       svn_dirent_canonicalize(relativeToDir, subPool.getPool()) :
       relativeToDir;
+    bool noDiffAdded = false; /* ### Promote to argument */
 
     SVN_JNI_NULL_PTR_EX(target1, "target", );
     // target2 is ignored when pegRevision is provided.
@@ -967,6 +969,7 @@ void SVNClient::diff(const char *target1
                                    c_relToDir,
                                    depth,
                                    ignoreAncestry,
+                                   noDiffAdded,
                                    noDiffDelete,
                                    showCopiesAsAdds,
                                    force,
@@ -995,6 +998,7 @@ void SVNClient::diff(const char *target1
                                c_relToDir,
                                depth,
                                ignoreAncestry,
+                               noDiffAdded,
                                noDiffDelete,
                                showCopiesAsAdds,
                                force,

Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/SVNClient.h Mon Jan 21 23:37:01 2013
@@ -96,13 +96,13 @@ class SVNClient :public SVNBase
                        svn_depth_t depth, StringArray &revProps,
                        LogMessageCallback *callback);
   jobject suggestMergeSources(const char *path, Revision &pegRevision);
-  void merge(const char *path1, Revision &revision1, const char *path2,
-             Revision &revision2, const char *localPath, bool force,
-             svn_depth_t depth, bool ignoreAncestry, bool dryRun,
-             bool recordOnly);
+  void merge(const char *path1, Revision &revision1,
+             const char *path2, Revision &revision2,
+             const char *localPath, bool forceDelete, svn_depth_t depth,
+             bool ignoreAncestry, bool dryRun, bool recordOnly);
   void merge(const char *path, Revision &pegRevision,
              std::vector<RevisionRange> &rangesToMerge,
-             const char *localPath, bool force, svn_depth_t depth,
+             const char *localPath, bool forceDelete, svn_depth_t depth,
              bool ignoreAncestry, bool dryRun, bool recordOnly);
   void mergeReintegrate(const char *path, Revision &pegRevision,
                         const char *localPath, bool dryRun);

Modified: subversion/branches/ev2-export/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Mon Jan 21 23:37:01 2013
@@ -775,7 +775,7 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath1, jobject jrevision1,
- jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforce,
+ jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforceDelete,
  jobject jdepth, jboolean jignoreAncestry, jboolean jdryRun,
  jboolean jrecordOnly)
 {
@@ -807,7 +807,7 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   cl->merge(path1, revision1, path2, revision2, localPath,
-            jforce ? true:false, EnumMapper::toDepth(jdepth),
+            jforceDelete ? true:false, EnumMapper::toDepth(jdepth),
             jignoreAncestry ? true:false, jdryRun ? true:false,
             jrecordOnly ? true:false);
 }
@@ -815,7 +815,7 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
- jobject jranges, jstring jlocalPath, jboolean jforce, jobject jdepth,
+ jobject jranges, jstring jlocalPath, jboolean jforceDelete, jobject jdepth,
  jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly)
 {
   JNIEntry(SVNClient, merge);
@@ -857,7 +857,7 @@ Java_org_apache_subversion_javahl_SVNCli
     }
 
   cl->merge(path, pegRevision, revisionRanges, localPath,
-            jforce ? true:false, EnumMapper::toDepth(jdepth),
+            jforceDelete ? true:false, EnumMapper::toDepth(jdepth),
             jignoreAncestry ? true:false, jdryRun ? true:false,
             jrecordOnly ? true:false);
 }

Modified: subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/6ra.t
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/6ra.t?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/6ra.t (original)
+++ subversion/branches/ev2-export/subversion/bindings/swig/perl/native/t/6ra.t Mon Jan 21 23:37:01 2013
@@ -157,7 +157,7 @@ is($ra->check_path('trunk', 1), $SVN::No
     # TEST
     is($dirent->kind, $SVN::Node::dir, 'stat dir: kind');
     # TEST
-    is($dirent->size, 0, 'stat dir: size');
+    is($dirent->size, -1, 'stat dir: size');
     # TEST
     is($dirent->created_rev, 1, 'stat dir: created_rev');
     # TEST

Modified: subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_ra.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_ra.rb?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_ra.rb (original)
+++ subversion/branches/ev2-export/subversion/bindings/swig/ruby/test/test_ra.rb Mon Jan 21 23:37:01 2013
@@ -98,7 +98,7 @@ class SvnRaTest < Test::Unit::TestCase
         entries, props = session.dir("", info.revision, Svn::Core::DIRENT_KIND)
         assert_equal(Svn::Core::NODE_FILE, entries[file].kind)
         entries, props = session.dir("", info.revision, 0)
-        assert_equal(Svn::Core::NODE_NONE, entries[file].kind)
+        assert_equal(Svn::Core::NODE_UNKNOWN, entries[file].kind)
 
         make_context(log2) do |ctx|
           File.open(path, "w") {|f| f.print(src * 2)}

Modified: subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/ev2-export/subversion/include/private/svn_wc_private.h Mon Jan 21 23:37:01 2013
@@ -1132,9 +1132,6 @@ svn_wc__get_not_present_descendants(cons
  * If KIND is not NULL, set *KIND to the kind of node registered in the working
  * copy, or SVN_NODE_NONE if the node doesn't
  *
- * If ADDED is not NULL, set *ADDED to TRUE if the node is added. (Addition,
- * copy or moved).
- *
  * If DELETED is not NULL, set *DELETED to TRUE if the node is marked as
  * deleted in the working copy.
  *
@@ -1146,7 +1143,6 @@ svn_wc__get_not_present_descendants(cons
 svn_error_t *
 svn_wc__check_for_obstructions(svn_wc_notify_state_t *obstruction_state,
                                svn_node_kind_t *kind,
-                               svn_boolean_t *added,
                                svn_boolean_t *deleted,
                                svn_wc_context_t *wc_ctx,
                                const char *local_abspath,

Modified: subversion/branches/ev2-export/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_client.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_client.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_client.h Mon Jan 21 23:37:01 2013
@@ -2939,6 +2939,9 @@ svn_client_blame(const char *path_or_url
  * and the addition of another, but if this flag is TRUE, unrelated
  * items will be diffed as if they were related.
  *
+ * If @a no_diff_added is TRUE, then no diff output will be generated
+ * on added files.
+ *
  * If @a no_diff_deleted is TRUE, then no diff output will be
  * generated on deleted files.
  *
@@ -3000,6 +3003,7 @@ svn_client_diff6(const apr_array_header_
                  const char *relative_to_dir,
                  svn_depth_t depth,
                  svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
                  svn_boolean_t no_diff_deleted,
                  svn_boolean_t show_copies_as_adds,
                  svn_boolean_t ignore_content_type,
@@ -3015,7 +3019,7 @@ svn_client_diff6(const apr_array_header_
 
 /** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
  * instead of @a outstream and @a errstream, and always showing property
- * changes.
+ * changes and additions.
  *
  * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
@@ -3161,6 +3165,7 @@ svn_client_diff_peg6(const apr_array_hea
                      const char *relative_to_dir,
                      svn_depth_t depth,
                      svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
                      svn_boolean_t no_diff_deleted,
                      svn_boolean_t show_copies_as_adds,
                      svn_boolean_t ignore_content_type,
@@ -3505,7 +3510,7 @@ svn_error_t *
 svn_client_do_automatic_merge(const svn_client_automatic_merge_t *merge,
                               const char *target_wcpath,
                               svn_depth_t depth,
-                              svn_boolean_t force,
+                              svn_boolean_t force_delete,
                               svn_boolean_t record_only,
                               svn_boolean_t dry_run,
                               const apr_array_header_t *merge_options,
@@ -3583,16 +3588,21 @@ svn_client_automatic_merge_get_locations
  *
  * If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
  *
- * Use @a ignore_ancestry to control whether or not items being
- * diffed will be checked for relatedness first.  Unrelated items
- * are typically transmitted to the editor as a deletion of one thing
- * and the addition of another, but if this flag is TRUE, unrelated
- * items will be diffed as if they were related.
+ * @a ignore_ancestry has both of the following meanings:
  *
- * If @a force is false and the merge involves deleting a file whose
+ *   (1) Disable merge tracking, by treating the two sources as unrelated
+ *   even if they actually have a common ancestor.
+ *
+ *   (2) Diff unrelated nodes as if related.  If @a ignore_ancestry is true,
+ *   the 'left' and 'right' versions of a node (if they are the same kind)
+ *   will be diffed as if they were related even if they are not related.
+ *   Otherwise, unrelated items will be diffed as a deletion of one thing
+ *   and the addition of another.
+ *
+ * If @a force_delete is false and the merge involves deleting a file whose
  * content differs from the source-left version, or a locally modified
  * directory, or an unversioned item, then the operation will fail.  If
- * @a force is true then all such items will be deleted.
+ * @a force_delete is true then all such items will be deleted.
  *
  * @a merge_options (an array of <tt>const char *</tt>), if non-NULL,
  * is used to pass additional command line arguments to the merge
@@ -3628,7 +3638,7 @@ svn_client_merge4(const char *source1,
                   const char *target_wcpath,
                   svn_depth_t depth,
                   svn_boolean_t ignore_ancestry,
-                  svn_boolean_t force,
+                  svn_boolean_t force_delete,
                   svn_boolean_t record_only,
                   svn_boolean_t dry_run,
                   svn_boolean_t allow_mixed_rev,
@@ -3638,7 +3648,8 @@ svn_client_merge4(const char *source1,
 
 /**
  * Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
- * @c TRUE.
+ * @c TRUE.  The @a force parameter maps to the @c force_delete parameter
+ * of svn_client_merge4().
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
  *
@@ -3787,7 +3798,7 @@ svn_client_merge_peg4(const char *source
                       const char *target_wcpath,
                       svn_depth_t depth,
                       svn_boolean_t ignore_ancestry,
-                      svn_boolean_t force,
+                      svn_boolean_t force_delete,
                       svn_boolean_t record_only,
                       svn_boolean_t dry_run,
                       svn_boolean_t allow_mixed_rev,
@@ -3797,7 +3808,8 @@ svn_client_merge_peg4(const char *source
 
 /**
  * Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
- * @c TRUE.
+ * @c TRUE.  The @a force parameter maps to the @c force_delete parameter
+ * of svn_client_merge_peg4().
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
  *

Modified: subversion/branches/ev2-export/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_config.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_config.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_config.h Mon Jan 21 23:37:01 2013
@@ -380,6 +380,20 @@ svn_config_get_yes_no_ask(svn_config_t *
                           const char *option,
                           const char* default_value);
 
+/** Like svn_config_set(), but for tristate values.
+ *
+ * Sets the option to 'TRUE'/'FALSE'/'UNKNOWN', depending on @a value.
+ *
+ * @a unknown_value specifies options value value allowed for third state.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_get_tristate(svn_config_t *cfg, svn_tristate_t *valuep,
+                        const char *section, const char *option,
+                        const char *unknown_value,
+                        svn_tristate_t default_value);
+
 /** Similar to @c svn_config_section_enumerator2_t, but is not
  * provided with a memory pool argument.
  *

Modified: subversion/branches/ev2-export/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_fs.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_fs.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_fs.h Mon Jan 21 23:37:01 2013
@@ -263,14 +263,32 @@ svn_fs_upgrade(const char *path,
                apr_pool_t *pool);
 
 /**
+ * Callback function type for progress notification.
+ *
+ * @a revision is the number of the revision currently begin processed,
+ * #SVN_INVALID_REVNUM if the current stage is not linked to any specific
+ * revision. @a baton is the callback baton.
+ *
+ * @since New in 1.8.
+ */
+typedef void (*svn_fs_progress_notify_func_t)(svn_revnum_t revision,
+                                              void *baton,
+                                              apr_pool_t *pool);
+
+/**
  * Perform backend-specific data consistency and correctness validations
  * to the Subversion filesystem located in the directory @a path.
- * Use @a pool for necessary allocations.
+ * Use @a scratch_pool for temporary allocations.
  *
  * @a start and @a end may be #SVN_INVALID_REVNUM, in which case
  * svn_repos_verify_fs2()'s semantics apply.  When @c r0 is being
  * verified, global invariants may be verified as well.
  *
+ * The optional @a notify_func callback is only a general feedback that
+ * the operation is still in process but may be called in random revisions
+ * order and more than once for the same revision, i.e. r2, r1, r2 would
+ * be a valid sequence.
+ *
  * @note You probably don't want to use this directly.  Take a look at
  * svn_repos_verify_fs2() instead, which does non-backend-specific
  * verifications as well.
@@ -281,11 +299,29 @@ svn_error_t *
 svn_fs_verify(const char *path,
               svn_cancel_func_t cancel_func,
               void *cancel_baton,
+              svn_fs_progress_notify_func_t notify_func,
+              void *notify_baton,
               svn_revnum_t start,
               svn_revnum_t end,
               apr_pool_t *scratch_pool);
 
 /**
+ * Perform backend-specific data consistency and correctness validations
+ * to revision @a revision of the Subversion filesystem @a fs.
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @note You probably don't want to use this directly.  Take a look at
+ * svn_repos_verify_fs2() instead, which does non-backend-specific
+ * verifications as well.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_verify_rev(svn_fs_t *fs,
+                  svn_revnum_t revision,
+                  apr_pool_t *scratch_pool);
+
+/**
  * Return, in @a *fs_type, a string identifying the back-end type of
  * the Subversion filesystem located in @a path.  Allocate @a *fs_type
  * in @a pool.

Modified: subversion/branches/ev2-export/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_io.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_io.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_io.h Mon Jan 21 23:37:01 2013
@@ -1553,10 +1553,31 @@ svn_io_get_dirents(apr_hash_t **dirents,
 /** Create a svn_io_dirent2_t instance for path. Specialized variant of
  * svn_io_stat() that directly translates node_kind and special.
  *
+ * If @a verify_truename is @c TRUE, an additional check is performed to
+ * verify the truename of the last path component on case insensitive
+ * filesystems. This check is expensive compared to a just a stat,
+ * but certainly cheaper than a full truename calculation using
+ * apr_filepath_merge() which verifies all path components.
+ *
  * If @a ignore_enoent is set to @c TRUE, set *dirent_p->kind to
  * svn_node_none instead of returning an error.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_stat_dirent2(const svn_io_dirent2_t **dirent_p,
+                    const char *path,
+                    svn_boolean_t verify_truename,
+                    svn_boolean_t ignore_enoent,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
+
+/** Similar to svn_io_stat_dirent2, but always passes FALSE for
+ * verify_truename.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  */
 svn_error_t *
 svn_io_stat_dirent(const svn_io_dirent2_t **dirent_p,

Modified: subversion/branches/ev2-export/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_repos.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_repos.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_repos.h Mon Jan 21 23:37:01 2013
@@ -245,7 +245,10 @@ typedef enum svn_repos_notify_action_t
   svn_repos_notify_upgrade_start,
 
   /** A revision was skipped during loading. @since New in 1.8. */
-  svn_repos_notify_load_skipped_rev
+  svn_repos_notify_load_skipped_rev,
+
+  /** The structure of a revision is begin verified.  @since New in 1.8. */
+  svn_repos_notify_verify_struc_rev
 
 } svn_repos_notify_action_t;
 

Modified: subversion/branches/ev2-export/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_types.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_types.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_types.h Mon Jan 21 23:37:01 2013
@@ -587,7 +587,13 @@ svn_depth_from_word(const char *word);
 
 /** @} */
 
-/** A general subversion directory entry. */
+/** A general subversion directory entry.
+ *
+ * @note To allow for extending the #svn_dirent_t structure in future
+ * releases, always use svn_dirent_create() to allocate the stucture.
+ *
+ * @since New in 1.6.
+ */
 typedef struct svn_dirent_t
 {
   /** node kind */
@@ -619,6 +625,14 @@ svn_dirent_t *
 svn_dirent_dup(const svn_dirent_t *dirent,
                apr_pool_t *pool);
 
+/**
+ * Create a new svn_dirent_t instance with all values initialized to their
+ * not-available values.
+ *
+ * @since New in 1.8.
+ */
+svn_dirent_t *
+svn_dirent_create(apr_pool_t *result_pool);
 
 
 /** Keyword substitution.

Modified: subversion/branches/ev2-export/subversion/libsvn_client/blame.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/blame.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/blame.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/blame.c Mon Jan 21 23:37:01 2013
@@ -678,28 +678,41 @@ svn_client_blame5(const char *target,
       SVN_ERR(svn_wc_status3(&status, ctx->wc_ctx, target_abspath_or_url, pool,
                              pool));
 
-      if (status->text_status != svn_wc_status_normal)
+      if (status->text_status != svn_wc_status_normal
+          || (status->prop_status != svn_wc_status_normal
+              && status->prop_status != svn_wc_status_none))
         {
-          apr_hash_t *props;
           svn_stream_t *wcfile;
-          svn_string_t *keywords;
           svn_stream_t *tempfile;
+          svn_opt_revision_t rev;
+          svn_boolean_t normalize_eols = FALSE;
           const char *temppath;
-          apr_hash_t *kw = NULL;
 
-          SVN_ERR(svn_wc_prop_list2(&props, ctx->wc_ctx, target_abspath_or_url,
-                                    pool, pool));
-          SVN_ERR(svn_stream_open_readonly(&wcfile, target, pool, pool));
-
-          keywords = apr_hash_get(props, SVN_PROP_KEYWORDS,
-                                  APR_HASH_KEY_STRING);
+          if (status->prop_status != svn_wc_status_none)
+            {
+              const svn_string_t *eol_style;
+              SVN_ERR(svn_wc_prop_get2(&eol_style, ctx->wc_ctx,
+                                       target_abspath_or_url,
+                                       SVN_PROP_EOL_STYLE,
+                                       pool, pool));
+
+              if (eol_style)
+                {
+                  svn_subst_eol_style_t style;
+                  const char *eol;
+                  svn_subst_eol_style_from_value(&style, &eol, eol_style->data);
 
-          if (keywords)
-            SVN_ERR(svn_subst_build_keywords2(&kw, keywords->data, NULL, NULL,
-                                              0, NULL, pool));
+                  normalize_eols = (style == svn_subst_eol_style_native);
+                }
+            }
 
-          wcfile = svn_subst_stream_translated(wcfile, "\n", TRUE, kw, FALSE,
-                                               pool);
+          rev.kind = svn_opt_revision_working;
+          SVN_ERR(svn_client__get_normalized_stream(&wcfile, ctx->wc_ctx,
+                                                    target_abspath_or_url, &rev,
+                                                    FALSE, normalize_eols,
+                                                    ctx->cancel_func,
+                                                    ctx->cancel_baton,
+                                                    pool, pool));
 
           SVN_ERR(svn_stream_open_unique(&tempfile, &temppath, NULL,
                                          svn_io_file_del_on_pool_cleanup,

Modified: subversion/branches/ev2-export/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/client.h?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/client.h (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/client.h Mon Jan 21 23:37:01 2013
@@ -421,17 +421,18 @@ svn_error_t *svn_client__get_inherited_i
    If DRY_RUN is TRUE all the checks are made to ensure that the delete can
    occur, but the working copy is not modified.  If NOTIFY_FUNC is not
    null, it is called with NOTIFY_BATON for each file or directory deleted. */
-svn_error_t * svn_client__wc_delete(const char *path,
-                                    svn_boolean_t force,
-                                    svn_boolean_t dry_run,
-                                    svn_boolean_t keep_local,
-                                    svn_wc_notify_func2_t notify_func,
-                                    void *notify_baton,
-                                    svn_client_ctx_t *ctx,
-                                    apr_pool_t *pool);
+svn_error_t *
+svn_client__wc_delete(const char *local_abspath,
+                      svn_boolean_t force,
+                      svn_boolean_t dry_run,
+                      svn_boolean_t keep_local,
+                      svn_wc_notify_func2_t notify_func,
+                      void *notify_baton,
+                      svn_client_ctx_t *ctx,
+                      apr_pool_t *pool);
 
 
-/* Like svn_client__wc_delete(), but deletes mulitple TARGETS efficiently. */
+/* Like svn_client__wc_delete(), but deletes multiple TARGETS efficiently. */
 svn_error_t *
 svn_client__wc_delete_many(const apr_array_header_t *targets,
                            svn_boolean_t force,
@@ -673,10 +674,13 @@ svn_client__iprop_relpaths_to_urls(apr_a
    If LOCAL_ABSPATH has no base then do nothing.
 
    RA_SESSION should be an open RA session pointing at the URL of PATH,
-   or NULL, in which case this function will open its own temporary session.
+   or NULL, in which case this function will use its own temporary session.
 
    Allocate *WCROOT_IPROPS in RESULT_POOL, use SCRATCH_POOL for temporary
    allocations.
+
+   If one or more of the paths are not available in the repository at the
+   specified revision, these paths will not be added to the hashtable.
 */
 svn_error_t *
 svn_client__get_inheritable_props(apr_hash_t **wcroot_iprops,
@@ -906,6 +910,9 @@ typedef svn_error_t *(*svn_client__check
    as specified by DEPTH; the behavior is the same as that described
    for svn_client_commit4().
 
+   If DEPTH_EMPTY_START is >= 0, all targets after index DEPTH_EMPTY_START
+   in TARGETS are handled as having svn_depth_empty.
+
    If JUST_LOCKED is TRUE, treat unmodified items with lock tokens as
    commit candidates.
 
@@ -922,6 +929,7 @@ svn_client__harvest_committables(svn_cli
                                  apr_hash_t **lock_tokens,
                                  const char *base_dir_abspath,
                                  const apr_array_header_t *targets,
+                                 int depth_empty_start,
                                  svn_depth_t depth,
                                  svn_boolean_t just_locked,
                                  const apr_array_header_t *changelists,
@@ -1089,7 +1097,11 @@ svn_client__export_externals(apr_hash_t 
 
 /* Perform status operations on each external in EXTERNAL_MAP, a const char *
    local_abspath of all externals mapping to the const char* defining_abspath.
-   All other options are the same as those passed to svn_client_status(). */
+   All other options are the same as those passed to svn_client_status().
+
+   If ANCHOR_ABSPATH and ANCHOR-RELPATH are not null, use them to provide
+   properly formatted relative paths
+ */
 svn_error_t *
 svn_client__do_external_status(svn_client_ctx_t *ctx,
                                apr_hash_t *external_map,
@@ -1097,9 +1109,11 @@ svn_client__do_external_status(svn_clien
                                svn_boolean_t get_all,
                                svn_boolean_t update,
                                svn_boolean_t no_ignore,
+                               const char *anchor_abspath,
+                               const char *anchor_relpath,
                                svn_client_status_func_t status_func,
                                void *status_baton,
-                               apr_pool_t *pool);
+                               apr_pool_t *scratch_pool);
 
 
 /* List external items defined on each external in EXTERNALS, a const char *

Modified: subversion/branches/ev2-export/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/commit.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/commit.c Mon Jan 21 23:37:01 2013
@@ -498,25 +498,6 @@ append_externals_as_explicit_targets(apr
       /* Don't recurse. */
       return SVN_NO_ERROR;
     }
-  else if (depth != svn_depth_infinity)
-    {
-      include_dir_externals = FALSE;
-      /* We slip in dir externals as explicit targets. When we do that,
-       * depth_immediates should become depth_empty for dir externals targets.
-       * But adding the dir external to the list of targets makes it get
-       * handled with depth_immediates itself, and thus will also include the
-       * immediate children of the dir external. So do dir externals only with
-       * depth_infinity or not at all.
-       * ### TODO: Maybe rework this (and svn_client_commit6()) into separate
-       * ### target lists, "duplicating" REL_TARGETS: one for the user's
-       * ### targets and one for the overlayed externals targets, and pass an
-       * ### appropriate depth for the externals targets in a separate call to
-       * ### svn_client__harvest_committables(). The only gain is correct
-       * ### handling of this very specific case: during 'svn commit
-       * ### --depth=immediates --include-externals', commit dir externals
-       * ### (only immediate children of a target) with depth_empty instead of
-       * ### not at all. No other effect. So not doing that for now. */
-    }
 
   /* Iterate *and* grow REL_TARGETS at the same time. */
   rel_targets_nelts_fixed = rel_targets->nelts;
@@ -608,6 +589,7 @@ svn_client_commit6(const apr_array_heade
   apr_pool_t *iterpool = svn_pool_create(pool);
   const char *current_abspath;
   const char *notify_prefix;
+  int depth_empty_after = -1;
   int i;
 
   SVN_ERR_ASSERT(depth != svn_depth_unknown && depth != svn_depth_exclude);
@@ -638,11 +620,20 @@ svn_client_commit6(const apr_array_heade
   if (rel_targets->nelts == 0)
     APR_ARRAY_PUSH(rel_targets, const char *) = "";
 
-  SVN_ERR(append_externals_as_explicit_targets(rel_targets, base_abspath,
-                                               include_file_externals,
-                                               include_dir_externals,
-                                               depth, ctx,
-                                               pool, pool));
+  if (include_file_externals || include_dir_externals)
+    {
+      if (depth != svn_depth_unknown && depth != svn_depth_infinity)
+        {
+          /* All targets after this will be handled as depth empty */
+          depth_empty_after = rel_targets->nelts;
+        }
+
+      SVN_ERR(append_externals_as_explicit_targets(rel_targets, base_abspath,
+                                                   include_file_externals,
+                                                   include_dir_externals,
+                                                   depth, ctx,
+                                                   pool, pool));
+    }
 
   SVN_ERR(determine_lock_targets(&lock_targets, ctx->wc_ctx, base_abspath,
                                  rel_targets, pool, iterpool));
@@ -708,6 +699,7 @@ svn_client_commit6(const apr_array_heade
                                                     &lock_tokens,
                                                     base_abspath,
                                                     rel_targets,
+                                                    depth_empty_after,
                                                     depth,
                                                     ! keep_locks,
                                                     changelists,

Modified: subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/commit_util.c Mon Jan 21 23:37:01 2013
@@ -1094,6 +1094,7 @@ svn_client__harvest_committables(svn_cli
                                  apr_hash_t **lock_tokens,
                                  const char *base_dir_abspath,
                                  const apr_array_header_t *targets,
+                                 int depth_empty_start,
                                  svn_depth_t depth,
                                  svn_boolean_t just_locked,
                                  const apr_array_header_t *changelists,
@@ -1166,6 +1167,10 @@ svn_client__harvest_committables(svn_cli
                                                ctx->notify_baton2,
                                                iterpool));
 
+      /* Are the remaining items externals with depth empty? */
+      if (i == depth_empty_start)
+        depth = svn_depth_empty;
+
       SVN_ERR(harvest_committables(target_abspath,
                                    *committables, *lock_tokens,
                                    NULL /* COPY_MODE_RELPATH */,

Modified: subversion/branches/ev2-export/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/delete.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/delete.c Mon Jan 21 23:37:01 2013
@@ -46,36 +46,47 @@
 
 /*** Code. ***/
 
+/* Baton for find_undeletables */
+struct can_delete_baton_t
+{
+  const char *root_abspath;
+  svn_boolean_t target_missing;
+};
 
 /* An svn_wc_status_func4_t callback function for finding
    status structures which are not safely deletable. */
 static svn_error_t *
 find_undeletables(void *baton,
-                  const char *path,
+                  const char *local_abspath,
                   const svn_wc_status3_t *status,
                   apr_pool_t *pool)
 {
+  if (status->node_status == svn_wc_status_missing)
+    {
+      struct can_delete_baton_t *cdt = baton;
+
+      if (strcmp(cdt->root_abspath, local_abspath) == 0)
+        cdt->target_missing = TRUE;
+    }
+
   /* Check for error-ful states. */
   if (status->node_status == svn_wc_status_obstructed)
     return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
                              _("'%s' is in the way of the resource "
                                "actually under version control"),
-                             svn_dirent_local_style(path, pool));
+                             svn_dirent_local_style(local_abspath, pool));
   else if (! status->versioned)
     return svn_error_createf(SVN_ERR_UNVERSIONED_RESOURCE, NULL,
                              _("'%s' is not under version control"),
-                             svn_dirent_local_style(path, pool));
+                             svn_dirent_local_style(local_abspath, pool));
 
-  else if ((status->node_status != svn_wc_status_normal
-            && status->node_status != svn_wc_status_deleted
-            && status->node_status != svn_wc_status_missing)
-           ||
-           (status->prop_status != svn_wc_status_none
-            && status->prop_status != svn_wc_status_normal))
+  else if (status->node_status != svn_wc_status_normal
+           && status->node_status != svn_wc_status_deleted
+           && status->node_status != svn_wc_status_missing)
     return svn_error_createf(SVN_ERR_CLIENT_MODIFIED, NULL,
                              _("'%s' has local modifications -- commit or "
                                "revert them first"),
-                             svn_dirent_local_style(path, pool));
+                             svn_dirent_local_style(local_abspath, pool));
 
   return SVN_NO_ERROR;
 }
@@ -86,13 +97,15 @@ find_undeletables(void *baton,
    command.  CTX is used for the client's config options.  POOL is
    used for all temporary allocations. */
 static svn_error_t *
-can_delete_node(const char *local_abspath,
+can_delete_node(svn_boolean_t *target_missing,
+                const char *local_abspath,
                 svn_client_ctx_t *ctx,
                 apr_pool_t *scratch_pool)
 {
   svn_node_kind_t external_kind;
   const char *defining_abspath;
   apr_array_header_t *ignores;
+  struct can_delete_baton_t cdt;
 
   /* A file external should not be deleted since the file external is
      implemented as a switched file and it would delete the file the
@@ -123,17 +136,25 @@ can_delete_node(const char *local_abspat
 
   SVN_ERR(svn_wc_get_default_ignores(&ignores, ctx->config, scratch_pool));
 
-  return svn_error_trace(svn_wc_walk_status(ctx->wc_ctx,
-                                            local_abspath,
-                                            svn_depth_infinity,
-                                            FALSE /* get_all */,
-                                            FALSE /* no_ignore */,
-                                            FALSE /* ignore_text_mod */,
-                                            ignores,
-                                            find_undeletables, NULL,
-                                            ctx->cancel_func,
-                                            ctx->cancel_baton,
-                                            scratch_pool));
+  cdt.root_abspath = local_abspath;
+  cdt.target_missing = FALSE;
+
+  SVN_ERR(svn_wc_walk_status(ctx->wc_ctx,
+                             local_abspath,
+                             svn_depth_infinity,
+                             FALSE /* get_all */,
+                             FALSE /* no_ignore */,
+                             FALSE /* ignore_text_mod */,
+                             ignores,
+                             find_undeletables, &cdt,
+                             ctx->cancel_func,
+                             ctx->cancel_baton,
+                             scratch_pool));
+
+  if (target_missing)
+    *target_missing = cdt.target_missing;
+
+  return SVN_NO_ERROR;
 }
 
 
@@ -309,7 +330,7 @@ delete_urls_multi_repos(const apr_array_
 }
 
 svn_error_t *
-svn_client__wc_delete(const char *path,
+svn_client__wc_delete(const char *local_abspath,
                       svn_boolean_t force,
                       svn_boolean_t dry_run,
                       svn_boolean_t keep_local,
@@ -318,18 +339,20 @@ svn_client__wc_delete(const char *path,
                       svn_client_ctx_t *ctx,
                       apr_pool_t *pool)
 {
-  const char *local_abspath;
+  svn_boolean_t target_missing = FALSE;
 
-  SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
+  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
   if (!force && !keep_local)
     /* Verify that there are no "awkward" files */
-    SVN_ERR(can_delete_node(local_abspath, ctx, pool));
+    SVN_ERR(can_delete_node(&target_missing, local_abspath, ctx, pool));
 
   if (!dry_run)
     /* Mark the entry for commit deletion and perform wc deletion */
     return svn_error_trace(svn_wc_delete4(ctx->wc_ctx, local_abspath,
-                                          keep_local, TRUE,
+                                          keep_local || target_missing
+                                                            /*keep_local */,
+                                          TRUE /* delete_unversioned */,
                                           ctx->cancel_func, ctx->cancel_baton,
                                           notify_func, notify_baton, pool));
 
@@ -347,30 +370,43 @@ svn_client__wc_delete_many(const apr_arr
                            apr_pool_t *pool)
 {
   int i;
-  apr_array_header_t *abs_targets;
+  svn_boolean_t has_non_missing = FALSE;
 
-  abs_targets = apr_array_make(pool, targets->nelts, sizeof(const char *));
   for (i = 0; i < targets->nelts; i++)
     {
-      const char *path = APR_ARRAY_IDX(targets, i, const char *);
-      const char *local_abspath;
+      const char *local_abspath = APR_ARRAY_IDX(targets, i, const char *);
 
-      SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
-      APR_ARRAY_PUSH(abs_targets, const char *) = local_abspath;
+      SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
       if (!force && !keep_local)
-        /* Verify that there are no "awkward" files */
-        SVN_ERR(can_delete_node(local_abspath, ctx, pool));
+        {
+          svn_boolean_t missing;
+          /* Verify that there are no "awkward" files */
+
+          SVN_ERR(can_delete_node(&missing, local_abspath, ctx, pool));
+
+          if (! missing)
+            has_non_missing = TRUE;
+        }
+      else
+        has_non_missing = TRUE;
     }
 
   if (!dry_run)
-    /* Mark the entry for commit deletion and perform wc deletion */
-    return svn_error_trace(svn_wc__delete_many(ctx->wc_ctx, abs_targets,
-                                               keep_local, TRUE,
-                                               ctx->cancel_func,
-                                               ctx->cancel_baton,
-                                               notify_func, notify_baton,
-                                               pool));
+    {
+      /* Mark the entry for commit deletion and perform wc deletion */
+
+      /* If none of the targets exists, pass keep local TRUE, to avoid
+         deleting case-different files. Detecting this in the generic case
+         from the delete code is expensive */
+      return svn_error_trace(svn_wc__delete_many(ctx->wc_ctx, targets,
+                                                 keep_local || !has_non_missing,
+                                                 TRUE /* delete_unversioned_target */,
+                                                 ctx->cancel_func,
+                                                 ctx->cancel_baton,
+                                                 notify_func, notify_baton,
+                                                 pool));
+    }
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/deprecated.c Mon Jan 21 23:37:01 2013
@@ -937,9 +937,11 @@ svn_client_diff5(const apr_array_header_
 
   return svn_client_diff6(diff_options, path1, revision1, path2,
                           revision2, relative_to_dir, depth,
-                          ignore_ancestry, no_diff_deleted,
-                          show_copies_as_adds, ignore_content_type, FALSE,
-                          FALSE, use_git_diff_format, header_encoding,
+                          ignore_ancestry, FALSE /* no_diff_added */,
+                          no_diff_deleted, show_copies_as_adds,
+                          ignore_content_type, FALSE /* ignore_properties */,
+                          FALSE /* properties_only */, use_git_diff_format,
+                          header_encoding,
                           outstream, errstream, changelists, ctx, pool);
 }
 
@@ -1063,11 +1065,12 @@ svn_client_diff_peg5(const apr_array_hea
                               relative_to_dir,
                               depth,
                               ignore_ancestry,
+                              FALSE /* no_diff_added */,
                               no_diff_deleted,
                               show_copies_as_adds,
                               ignore_content_type,
-                              FALSE,
-                              FALSE,
+                              FALSE /* ignore_properties */,
+                              FALSE /* properties_only */,
                               use_git_diff_format,
                               header_encoding,
                               outstream,

Modified: subversion/branches/ev2-export/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/diff.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/diff.c Mon Jan 21 23:37:01 2013
@@ -575,10 +575,6 @@ struct diff_cmd_baton {
   /* Set this if you want diff output even for binary files. */
   svn_boolean_t force_binary;
 
-  /* Set this flag if you want diff_file_changed to output diffs
-     unconditionally, even if the diffs are empty. */
-  svn_boolean_t force_empty;
-
   /* The directory that diff target paths should be considered as
      relative to for output generation (see issue #2723). */
   const char *relative_to_dir;
@@ -592,6 +588,9 @@ struct diff_cmd_baton {
   /* Whether we're producing a git-style diff. */
   svn_boolean_t use_git_diff_format;
 
+  /* Whether addition of a file is summarized versus showing a full diff. */
+  svn_boolean_t no_diff_added;
+
   /* Whether deletion of a file is summarized versus showing a full diff. */
   svn_boolean_t no_diff_deleted;
 
@@ -610,9 +609,7 @@ struct diff_cmd_baton {
 /* An helper for diff_dir_props_changed, diff_file_changed and diff_file_added
  */
 static svn_error_t *
-diff_props_changed(svn_wc_notify_state_t *state,
-                   svn_boolean_t *tree_conflicted,
-                   const char *diff_relpath,
+diff_props_changed(const char *diff_relpath,
                    svn_revnum_t rev1,
                    svn_revnum_t rev2,
                    svn_boolean_t dir_was_added,
@@ -653,11 +650,6 @@ diff_props_changed(svn_wc_notify_state_t
                                  scratch_pool));
     }
 
-  if (state)
-    *state = svn_wc_notify_state_unknown;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-
   return SVN_NO_ERROR;
 }
 
@@ -674,9 +666,7 @@ diff_dir_props_changed(svn_wc_notify_sta
 {
   struct diff_cmd_baton *diff_cmd_baton = diff_baton;
 
-  return svn_error_trace(diff_props_changed(state,
-                                            tree_conflicted,
-                                            diff_relpath,
+  return svn_error_trace(diff_props_changed(diff_relpath,
                                             /* ### These revs be filled
                                              * ### with per node info */
                                             diff_cmd_baton->revnum1,
@@ -695,6 +685,8 @@ diff_dir_props_changed(svn_wc_notify_sta
    MIMETYPE1 or MIMETYPE2 indicate binary content, don't show a diff,
    but instead print a warning message. 
 
+   If FORCE_DIFF is TRUE, always write a diff, even for empty diffs.
+
    Set *WROTE_HEADER to TRUE if a diff header was written */
 static svn_error_t *
 diff_content_changed(svn_boolean_t *wrote_header,
@@ -706,6 +698,7 @@ diff_content_changed(svn_boolean_t *wrot
                      const char *mimetype1,
                      const char *mimetype2,
                      svn_diff_operation_kind_t operation,
+                     svn_boolean_t force_diff,
                      const char *copyfrom_path,
                      svn_revnum_t copyfrom_rev,
                      struct diff_cmd_baton *diff_cmd_baton,
@@ -848,8 +841,9 @@ diff_content_changed(svn_boolean_t *wrot
                                    diff_cmd_baton->options.for_internal,
                                    scratch_pool));
 
-      if (svn_diff_contains_diffs(diff) || diff_cmd_baton->force_empty ||
-          diff_cmd_baton->use_git_diff_format)
+      if (force_diff
+          || diff_cmd_baton->use_git_diff_format
+          || svn_diff_contains_diffs(diff))
         {
           /* Print out the diff header. */
           SVN_ERR(svn_stream_printf_from_utf8(outstream,
@@ -885,7 +879,7 @@ diff_content_changed(svn_boolean_t *wrot
             }
 
           /* Output the actual diff */
-          if (svn_diff_contains_diffs(diff) || diff_cmd_baton->force_empty)
+          if (force_diff || svn_diff_contains_diffs(diff))
             SVN_ERR(svn_diff_file_output_unified3(outstream, diff,
                      tmpfile1, tmpfile2, label1, label2,
                      diff_cmd_baton->header_encoding, rel_to_dir,
@@ -951,21 +945,15 @@ diff_file_changed(svn_wc_notify_state_t 
   if (tmpfile1)
     SVN_ERR(diff_content_changed(&wrote_header, diff_relpath,
                                  tmpfile1, tmpfile2, rev1, rev2,
-                                 mimetype1, mimetype2,
-                                 svn_diff_op_modified, NULL,
+                                 mimetype1, mimetype2, 
+                                 svn_diff_op_modified, FALSE,
+                                 NULL,
                                  SVN_INVALID_REVNUM, diff_cmd_baton,
                                  scratch_pool));
   if (prop_changes->nelts > 0)
-    SVN_ERR(diff_props_changed(prop_state, tree_conflicted,
-                               diff_relpath, rev1, rev2, FALSE, prop_changes,
+    SVN_ERR(diff_props_changed(diff_relpath, rev1, rev2, FALSE, prop_changes,
                                original_props, !wrote_header,
                                diff_cmd_baton, scratch_pool));
-  if (content_state)
-    *content_state = svn_wc_notify_state_unknown;
-  if (prop_state)
-    *prop_state = svn_wc_notify_state_unknown;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -1008,41 +996,44 @@ diff_file_added(svn_wc_notify_state_t *c
         rev2 = diff_cmd_baton->revnum2;
     }
 
-  /* We want diff_file_changed to unconditionally show diffs, even if
-     the diff is empty (as would be the case if an empty file were
-     added.)  It's important, because 'patch' would still see an empty
-     diff and create an empty file.  It's also important to let the
-     user see that *something* happened. */
-  diff_cmd_baton->force_empty = TRUE;
+  if (diff_cmd_baton->no_diff_added)
+    {
+      const char *index_path = diff_relpath;
 
-  if (tmpfile1 && copyfrom_path)
+      if (diff_cmd_baton->anchor)
+        index_path = svn_dirent_join(diff_cmd_baton->anchor, diff_relpath,
+                                     scratch_pool);
+
+      SVN_ERR(svn_stream_printf_from_utf8(diff_cmd_baton->outstream,
+                diff_cmd_baton->header_encoding, scratch_pool,
+                "Index: %s (added)" APR_EOL_STR
+                SVN_DIFF__EQUAL_STRING APR_EOL_STR,
+                index_path));
+      wrote_header = TRUE;
+    }
+  else if (tmpfile1 && copyfrom_path)
     SVN_ERR(diff_content_changed(&wrote_header, diff_relpath,
                                  tmpfile1, tmpfile2, rev1, rev2,
                                  mimetype1, mimetype2,
-                                 svn_diff_op_copied, copyfrom_path,
+                                 svn_diff_op_copied,
+                                 TRUE /* force diff output */,
+                                 copyfrom_path,
                                  copyfrom_revision, diff_cmd_baton,
                                  scratch_pool));
   else if (tmpfile1)
     SVN_ERR(diff_content_changed(&wrote_header, diff_relpath,
                                  tmpfile1, tmpfile2, rev1, rev2,
                                  mimetype1, mimetype2,
-                                 svn_diff_op_added, NULL, SVN_INVALID_REVNUM,
+                                 svn_diff_op_added,
+                                 TRUE /* force diff output */,
+                                 NULL, SVN_INVALID_REVNUM,
                                  diff_cmd_baton, scratch_pool));
 
   if (prop_changes->nelts > 0)
-    SVN_ERR(diff_props_changed(prop_state, tree_conflicted,
-                               diff_relpath, rev1, rev2,
+    SVN_ERR(diff_props_changed(diff_relpath, rev1, rev2,
                                FALSE, prop_changes,
                                original_props, ! wrote_header,
                                diff_cmd_baton, scratch_pool));
-  if (content_state)
-    *content_state = svn_wc_notify_state_unknown;
-  if (prop_state)
-    *prop_state = svn_wc_notify_state_unknown;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-
-  diff_cmd_baton->force_empty = FALSE;
 
   return SVN_NO_ERROR;
 }
@@ -1085,8 +1076,9 @@ diff_file_deleted(svn_wc_notify_state_t 
                                      diff_cmd_baton->revnum1,
                                      diff_cmd_baton->revnum2,
                                      mimetype1, mimetype2,
-                                     svn_diff_op_deleted, NULL,
-                                     SVN_INVALID_REVNUM, diff_cmd_baton,
+                                     svn_diff_op_deleted, FALSE,
+                                     NULL, SVN_INVALID_REVNUM,
+                                     diff_cmd_baton,
                                      scratch_pool));
 
       /* Should we also report the properties as deleted? */
@@ -1094,11 +1086,6 @@ diff_file_deleted(svn_wc_notify_state_t 
 
   /* We don't list all the deleted properties. */
 
-  if (state)
-    *state = svn_wc_notify_state_unknown;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-
   return SVN_NO_ERROR;
 }
 
@@ -2937,6 +2924,7 @@ svn_client_diff6(const apr_array_header_
                  const char *relative_to_dir,
                  svn_depth_t depth,
                  svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
                  svn_boolean_t no_diff_deleted,
                  svn_boolean_t show_copies_as_adds,
                  svn_boolean_t ignore_content_type,
@@ -2974,12 +2962,12 @@ svn_client_diff6(const apr_array_header_
   diff_cmd_baton.revnum1 = SVN_INVALID_REVNUM;
   diff_cmd_baton.revnum2 = SVN_INVALID_REVNUM;
 
-  diff_cmd_baton.force_empty = FALSE;
   diff_cmd_baton.force_binary = ignore_content_type;
   diff_cmd_baton.ignore_properties = ignore_properties;
   diff_cmd_baton.properties_only = properties_only;
   diff_cmd_baton.relative_to_dir = relative_to_dir;
   diff_cmd_baton.use_git_diff_format = use_git_diff_format;
+  diff_cmd_baton.no_diff_added = no_diff_added;
   diff_cmd_baton.no_diff_deleted = no_diff_deleted;
   diff_cmd_baton.wc_ctx = ctx->wc_ctx;
   diff_cmd_baton.ra_session = NULL;
@@ -3001,6 +2989,7 @@ svn_client_diff_peg6(const apr_array_hea
                      const char *relative_to_dir,
                      svn_depth_t depth,
                      svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
                      svn_boolean_t no_diff_deleted,
                      svn_boolean_t show_copies_as_adds,
                      svn_boolean_t ignore_content_type,
@@ -3034,12 +3023,12 @@ svn_client_diff_peg6(const apr_array_hea
   diff_cmd_baton.revnum1 = SVN_INVALID_REVNUM;
   diff_cmd_baton.revnum2 = SVN_INVALID_REVNUM;
 
-  diff_cmd_baton.force_empty = FALSE;
   diff_cmd_baton.force_binary = ignore_content_type;
   diff_cmd_baton.ignore_properties = ignore_properties;
   diff_cmd_baton.properties_only = properties_only;
   diff_cmd_baton.relative_to_dir = relative_to_dir;
   diff_cmd_baton.use_git_diff_format = use_git_diff_format;
+  diff_cmd_baton.no_diff_added = no_diff_added;
   diff_cmd_baton.no_diff_deleted = no_diff_deleted;
   diff_cmd_baton.wc_ctx = ctx->wc_ctx;
   diff_cmd_baton.ra_session = NULL;

Modified: subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c?rev=1436688&r1=1436687&r2=1436688&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/diff_summarize.c Mon Jan 21 23:37:01 2013
@@ -118,10 +118,6 @@ cb_dir_deleted(svn_wc_notify_state_t *st
   SVN_ERR(send_summary(b, path, svn_client_diff_summarize_kind_deleted,
                        FALSE, svn_node_dir, scratch_pool));
 
-  if (state)
-    *state = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -142,10 +138,6 @@ cb_file_deleted(svn_wc_notify_state_t *s
   SVN_ERR(send_summary(b, path, svn_client_diff_summarize_kind_deleted,
                        FALSE, svn_node_file, scratch_pool));
 
-  if (state)
-    *state = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -161,12 +153,6 @@ cb_dir_added(svn_wc_notify_state_t *stat
              void *diff_baton,
              apr_pool_t *scratch_pool)
 {
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-  if (skip)
-    *skip = FALSE;
-  if (skip_children)
-    *skip_children = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -179,12 +165,6 @@ cb_dir_opened(svn_boolean_t *tree_confli
               void *diff_baton,
               apr_pool_t *scratch_pool)
 {
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-  if (skip)
-    *skip = FALSE;
-  if (skip_children)
-    *skip_children = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -207,12 +187,6 @@ cb_dir_closed(svn_wc_notify_state_t *con
                                        : svn_client_diff_summarize_kind_normal,
                          prop_change, svn_node_dir, scratch_pool));
 
-  if (contentstate)
-    *contentstate = svn_wc_notify_state_inapplicable;
-  if (propstate)
-    *propstate = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -240,12 +214,6 @@ cb_file_added(svn_wc_notify_state_t *con
                        props_changed(propchanges, scratch_pool),
                        svn_node_file, scratch_pool));
 
-  if (contentstate)
-    *contentstate = svn_wc_notify_state_inapplicable;
-  if (propstate)
-    *propstate = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -257,10 +225,6 @@ cb_file_opened(svn_boolean_t *tree_confl
                void *diff_baton,
                apr_pool_t *scratch_pool)
 {
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
-  if (skip)
-    *skip = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -290,12 +254,6 @@ cb_file_changed(svn_wc_notify_state_t *c
                                      : svn_client_diff_summarize_kind_normal,
                          prop_change, svn_node_file, scratch_pool));
 
-  if (contentstate)
-    *contentstate = svn_wc_notify_state_inapplicable;
-  if (propstate)
-    *propstate = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 
@@ -314,10 +272,6 @@ cb_dir_props_changed(svn_wc_notify_state
   if (props_changed(propchanges, scratch_pool))
     apr_hash_set(b->prop_changes, path, APR_HASH_KEY_STRING, path);
 
-  if (propstate)
-    *propstate = svn_wc_notify_state_inapplicable;
-  if (tree_conflicted)
-    *tree_conflicted = FALSE;
   return SVN_NO_ERROR;
 }
 



Mime
View raw message