You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/09/20 22:16:16 UTC
svn commit: r999098 [1/8] - in /subversion/branches/performance: ./
subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/bindings/javahl/src/org/tigris/subversion/javahl/
subversion/bindings/javahl/...
Author: stefan2
Date: Mon Sep 20 20:16:13 2010
New Revision: 999098
URL: http://svn.apache.org/viewvc?rev=999098&view=rev
Log:
On the performance branch:
Bring up-to-date with trunk.
Added:
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/copy-from-previous-version-and-modify.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-from-previous-version-and-modify.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/copy-parent-modify-prop.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-parent-modify-prop.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/dir-prop-change.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/dir-prop-change.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/modified-in-place.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/modified-in-place.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/move-and-modify.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/move-and-modify.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/no-author.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/no-author.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/revprops.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/revprops.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/tag-empty-trunk.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/tag-empty-trunk.dump
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests_data/url-encoding-bug.dump
- copied unchanged from r999095, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/url-encoding-bug.dump
Modified:
subversion/branches/performance/ (props changed)
subversion/branches/performance/CHANGES
subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.cpp
subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.h
subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/branches/performance/subversion/include/private/svn_dep_compat.h
subversion/branches/performance/subversion/include/private/svn_sqlite.h
subversion/branches/performance/subversion/include/svn_client.h
subversion/branches/performance/subversion/include/svn_diff.h
subversion/branches/performance/subversion/include/svn_error_codes.h
subversion/branches/performance/subversion/include/svn_fs.h
subversion/branches/performance/subversion/include/svn_wc.h
subversion/branches/performance/subversion/libsvn_client/checkout.c
subversion/branches/performance/subversion/libsvn_client/cleanup.c
subversion/branches/performance/subversion/libsvn_client/client.h
subversion/branches/performance/subversion/libsvn_client/commit.c
subversion/branches/performance/subversion/libsvn_client/commit_util.c
subversion/branches/performance/subversion/libsvn_client/externals.c
subversion/branches/performance/subversion/libsvn_client/list.c
subversion/branches/performance/subversion/libsvn_client/merge.c
subversion/branches/performance/subversion/libsvn_client/patch.c
subversion/branches/performance/subversion/libsvn_client/switch.c
subversion/branches/performance/subversion/libsvn_client/update.c
subversion/branches/performance/subversion/libsvn_diff/parse-diff.c
subversion/branches/performance/subversion/libsvn_fs_base/revs-txns.c
subversion/branches/performance/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/performance/subversion/libsvn_ra_neon/lock.c
subversion/branches/performance/subversion/libsvn_ra_neon/util.c
subversion/branches/performance/subversion/libsvn_ra_serf/property.c
subversion/branches/performance/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/performance/subversion/libsvn_ra_svn/editorp.c
subversion/branches/performance/subversion/libsvn_ra_svn/marshal.c
subversion/branches/performance/subversion/libsvn_ra_svn/ra_svn.h
subversion/branches/performance/subversion/libsvn_repos/load.c
subversion/branches/performance/subversion/libsvn_subr/io.c
subversion/branches/performance/subversion/libsvn_subr/svn_string.c
subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c
subversion/branches/performance/subversion/libsvn_wc/adm_files.c
subversion/branches/performance/subversion/libsvn_wc/adm_ops.c
subversion/branches/performance/subversion/libsvn_wc/cleanup.c
subversion/branches/performance/subversion/libsvn_wc/crop.c
subversion/branches/performance/subversion/libsvn_wc/deprecated.c
subversion/branches/performance/subversion/libsvn_wc/entries.c
subversion/branches/performance/subversion/libsvn_wc/entries.h
subversion/branches/performance/subversion/libsvn_wc/lock.c
subversion/branches/performance/subversion/libsvn_wc/node.c
subversion/branches/performance/subversion/libsvn_wc/props.c
subversion/branches/performance/subversion/libsvn_wc/revision_status.c
subversion/branches/performance/subversion/libsvn_wc/status.c
subversion/branches/performance/subversion/libsvn_wc/update_editor.c
subversion/branches/performance/subversion/libsvn_wc/upgrade.c
subversion/branches/performance/subversion/libsvn_wc/util.c
subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql
subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql
subversion/branches/performance/subversion/libsvn_wc/wc.h
subversion/branches/performance/subversion/libsvn_wc/wc_db.c
subversion/branches/performance/subversion/libsvn_wc/wc_db.h
subversion/branches/performance/subversion/libsvn_wc/wc_db_pdh.c
subversion/branches/performance/subversion/libsvn_wc/wc_db_private.h
subversion/branches/performance/subversion/libsvn_wc/workqueue.c
subversion/branches/performance/subversion/libsvn_wc/workqueue.h
subversion/branches/performance/subversion/mod_dav_svn/authz.c
subversion/branches/performance/subversion/mod_dav_svn/dav_svn.h
subversion/branches/performance/subversion/mod_dav_svn/liveprops.c
subversion/branches/performance/subversion/mod_dav_svn/lock.c
subversion/branches/performance/subversion/mod_dav_svn/repos.c
subversion/branches/performance/subversion/svn/cl.h
subversion/branches/performance/subversion/svn/conflict-callbacks.c
subversion/branches/performance/subversion/svn/main.c
subversion/branches/performance/subversion/svn/patch-cmd.c
subversion/branches/performance/subversion/svn/upgrade-cmd.c
subversion/branches/performance/subversion/svnrdump/dump_editor.c
subversion/branches/performance/subversion/svnrdump/load_editor.c
subversion/branches/performance/subversion/svnserve/cyrus_auth.c
subversion/branches/performance/subversion/svnserve/main.c
subversion/branches/performance/subversion/svnserve/serve.c
subversion/branches/performance/subversion/svnsync/main.c
subversion/branches/performance/subversion/tests/cmdline/authz_tests.py
subversion/branches/performance/subversion/tests/cmdline/copy_tests.py
subversion/branches/performance/subversion/tests/cmdline/externals_tests.py
subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py
subversion/branches/performance/subversion/tests/cmdline/merge_tests.py
subversion/branches/performance/subversion/tests/cmdline/patch_tests.py
subversion/branches/performance/subversion/tests/cmdline/resolve_tests.py
subversion/branches/performance/subversion/tests/cmdline/resolved_tests.py
subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests.py
subversion/branches/performance/subversion/tests/cmdline/svntest/main.py
subversion/branches/performance/subversion/tests/cmdline/svntest/verify.py
subversion/branches/performance/subversion/tests/cmdline/update_tests.py
subversion/branches/performance/subversion/tests/libsvn_client/ (props changed)
subversion/branches/performance/subversion/tests/libsvn_client/client-test.c
subversion/branches/performance/subversion/tests/libsvn_fs/fs-test.c
subversion/branches/performance/subversion/tests/libsvn_wc/db-test.c
subversion/branches/performance/subversion/tests/libsvn_wc/entries-compat.c
subversion/branches/performance/tools/dev/unix-build/Makefile.svn
Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 20 20:16:13 2010
@@ -36,4 +36,4 @@
/subversion/branches/tc_url_rev:874351-874483
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:962911-995462
+/subversion/trunk:962911-995462,995465-999095
Modified: subversion/branches/performance/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/performance/CHANGES?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/CHANGES (original)
+++ subversion/branches/performance/CHANGES Mon Sep 20 20:16:13 2010
@@ -1,3 +1,25 @@
+Version 1.6.13
+(?? Sep 2010, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.13
+
+ User-visible changes:
+ * don't drop properties during foreign-repo merges (issue #3623)
+ * improve auto-props failure error message (r961970)
+ * improve error message for 403 status with ra_neon (r876615)
+ * don't allow 'merge --reintegrate' for 2-url merges (r959004)
+ * improve handling of missing fsfs.conf in with hotcopy (r980811, -1449)
+ * escape unsafe characters in a URL during export (issue #3683)
+ * don't leak stale locks in FSFS (r959760)
+ * better detect broken working copies during update over neon (r979045)
+ * make rev files read-only (r981921)
+ * properly canonicalize a URL (r984928, -31)
+
+ Developer-visible changes:
+ * make ruby bindings compatible with Ruby 1.9 (r957507)
+ * use the repos verify API in JavaHL (r948916)
+ * teach ra_serf to parse md5 checksums with update editors (r979429)
+
+
Version 1.6.12
(21 Jun 2010, from /branches/1.6.x)
http://svn.apache.org/repos/asf/subversion/tags/1.6.12
Modified: subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.cpp?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.cpp Mon Sep 20 20:16:13 2010
@@ -33,6 +33,7 @@
#include "Pool.h"
#include "Targets.h"
#include "Revision.h"
+#include "OutputStream.h"
#include "RevisionRange.h"
#include "BlameCallback.h"
#include "ProplistCallback.h"
@@ -1093,43 +1094,9 @@ SVNClient::diffSummarize(const char *tar
requestPool.pool()), );
}
-jbyteArray SVNClient::fileContent(const char *path, Revision &revision,
- Revision &pegRevision)
-{
- SVN::Pool requestPool;
- SVN_JNI_NULL_PTR_EX(path, "path", NULL);
- Path intPath(path);
- SVN_JNI_ERR(intPath.error_occured(), NULL);
-
- size_t size = 0;
- svn_stream_t *read_stream = createReadStream(requestPool.pool(),
- intPath.c_str(), revision,
- pegRevision, size);
- if (read_stream == NULL)
- return NULL;
-
- JNIEnv *env = JNIUtil::getEnv();
- // size will be set to the number of bytes available.
- jbyteArray jcontent = env->NewByteArray(size);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- jbyte *jbytes = env->GetByteArrayElements(jcontent, NULL);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- svn_error_t *err = svn_stream_read(read_stream, (char *) jbytes, &size);
- env->ReleaseByteArrayElements(jcontent, jbytes, 0);
- SVN_JNI_ERR(err, NULL);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- return jcontent;
-}
-
void SVNClient::streamFileContent(const char *path, Revision &revision,
- Revision &pegRevision, jobject outputStream,
- size_t bufSize)
+ Revision &pegRevision,
+ OutputStream &outputStream)
{
SVN::Pool requestPool;
SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -1137,101 +1104,14 @@ void SVNClient::streamFileContent(const
SVN_JNI_ERR(intPath.error_occured(), );
JNIEnv *env = JNIUtil::getEnv();
- jclass outputStreamClass = env->FindClass("java/io/OutputStream");
- if (outputStreamClass == NULL)
- return;
-
- jmethodID writeMethod = env->GetMethodID(outputStreamClass, "write",
- "([BII)V");
- if (writeMethod == NULL)
- return;
-
- // Create the buffer.
- jbyteArray buffer = env->NewByteArray(bufSize);
- if (JNIUtil::isJavaExceptionThrown())
- return;
-
- jbyte *bufData = env->GetByteArrayElements(buffer, NULL);
- if (JNIUtil::isJavaExceptionThrown())
- return;
-
- size_t contentSize = 0;
- svn_stream_t *read_stream = createReadStream(requestPool.pool(), path,
- revision, pegRevision,
- contentSize);
- if (read_stream == NULL)
+ svn_client_ctx_t *ctx = context.getContext(NULL);
+ if (ctx == NULL)
return;
- while (contentSize > 0)
- {
- size_t readSize = bufSize > contentSize ? contentSize : bufSize;
- svn_error_t *err;
-
- err = svn_stream_read(read_stream, (char *)bufData, &readSize);
- if (err != NULL)
- {
- env->ReleaseByteArrayElements(buffer, bufData, 0);
- svn_stream_close(read_stream);
- SVN_JNI_ERR(err, );
- }
-
- env->ReleaseByteArrayElements(buffer, bufData, JNI_COMMIT);
- env->CallVoidMethod(outputStream, writeMethod, buffer, 0, readSize);
- if (JNIUtil::isJavaExceptionThrown())
- {
- env->ReleaseByteArrayElements(buffer, bufData, 0);
- svn_stream_close(read_stream);
- return;
- }
- contentSize -= readSize;
- }
-
- env->ReleaseByteArrayElements(buffer, bufData, 0);
- return;
-}
-
-svn_stream_t *SVNClient::createReadStream(apr_pool_t *pool, const char *path,
- Revision &revision,
- Revision &pegRevision, size_t &size)
-{
- svn_stream_t *read_stream = NULL;
-
- if (revision.revision()->kind == svn_opt_revision_working)
- {
- // We want the working copy. Going back to the server returns
- // base instead (which is not what we want).
- apr_file_t *file = NULL;
- apr_finfo_t finfo;
- apr_status_t apr_err = apr_stat(&finfo, path, APR_FINFO_MIN, pool);
- if (apr_err)
- {
- JNIUtil::handleAPRError(apr_err, _("open file"));
- return NULL;
- }
- apr_err = apr_file_open(&file, path, APR_READ, 0, pool);
- if (apr_err)
- {
- JNIUtil::handleAPRError(apr_err, _("open file"));
- return NULL;
- }
- read_stream = svn_stream_from_aprfile2(file, TRUE, pool);
- size = finfo.size;
- }
- else
- {
- svn_client_ctx_t *ctx = context.getContext(NULL);
- if (ctx == NULL)
- return NULL;
-
- svn_stringbuf_t *buf = svn_stringbuf_create("", pool);
- read_stream = svn_stream_from_stringbuf(buf, pool);
- SVN_JNI_ERR(svn_client_cat2(read_stream, path, pegRevision.revision(),
- revision.revision(), ctx, pool),
- NULL);
- size = buf->len;
- }
-
- return read_stream;
+ SVN_JNI_ERR(svn_client_cat2(outputStream.getStream(requestPool),
+ path, pegRevision.revision(),
+ revision.revision(), ctx, requestPool.pool()),
+ );
}
jbyteArray SVNClient::revProperty(const char *path,
@@ -1580,10 +1460,11 @@ SVNClient::patch(const char *patchPath,
Path checkedTargetPath(targetPath);
SVN_JNI_ERR(checkedTargetPath.error_occured(), );
+ // Should parameterize the following, instead of defaulting to FALSE
SVN_JNI_ERR(svn_client_patch(checkedPatchPath.c_str(),
checkedTargetPath.c_str(),
- dryRun, stripCount, reverse, ignoreWhitespace,
- removeTempfiles,
+ dryRun, stripCount, FALSE, reverse,
+ ignoreWhitespace, removeTempfiles,
PatchCallback::callback, callback,
ctx, requestPool.pool(),
requestPool.pool()), );
Modified: subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/SVNClient.h Mon Sep 20 20:16:13 2010
@@ -47,6 +47,7 @@ class InfoCallback;
class CommitCallback;
class ListCallback;
class StatusCallback;
+class OutputStream;
class PatchCallback;
class ChangelistCallback;
class CommitMessage;
@@ -75,11 +76,8 @@ class SVNClient :public SVNBase
BlameCallback *callback);
void relocate(const char *from, const char *to, const char *path,
bool recurse);
- jbyteArray fileContent(const char *path, Revision &revision,
- Revision &pegRevision);
void streamFileContent(const char *path, Revision &revision,
- Revision &pegRevision, jobject outputStream,
- size_t bufSize);
+ Revision &pegRevision, OutputStream &outputStream);
void propertySet(const char *path, const char *name, const char *value,
svn_depth_t depth, StringArray &changelists, bool force,
RevpropTable &revprops, CommitCallback *callback);
@@ -199,9 +197,6 @@ class SVNClient :public SVNBase
SVNClient(jobject jthis_in);
virtual ~SVNClient();
private:
- svn_stream_t *createReadStream(apr_pool_t *pool, const char *path,
- Revision &revision, Revision &pegRevision,
- size_t &size);
/**
* Shared implementation for diff() APIs. When pegRevision is
* provided, revision1 and revision2 equate to startRevision and
Modified: subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Mon Sep 20 20:16:13 2010
@@ -32,6 +32,7 @@
#include "SVNClient.h"
#include "Revision.h"
#include "RevisionRange.h"
+#include "OutputStream.h"
#include "EnumMapper.h"
#include "CommitMessage.h"
#include "Prompter.h"
@@ -1309,37 +1310,10 @@ Java_org_apache_subversion_javahl_SVNCli
jignoreAncestry ? true : false, receiver);
}
-JNIEXPORT jbyteArray JNICALL
-Java_org_apache_subversion_javahl_SVNClient_fileContent
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision)
-{
- JNIEntry(SVNClient, fileContent);
- SVNClient *cl = SVNClient::getCppObject(jthis);
- if (cl == NULL)
- {
- JNIUtil::throwError(_("bad C++ this"));
- return NULL;
- }
- JNIStringHolder path(jpath);
- if (JNIUtil::isExceptionThrown())
- return NULL;
-
- Revision revision(jrevision);
- if (JNIUtil::isExceptionThrown())
- return NULL;
-
- Revision pegRevision(jpegRevision);
- if (JNIUtil::isExceptionThrown())
- return NULL;
-
- return cl->fileContent(path, revision, pegRevision);
-}
-
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_streamFileContent
(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision, jint bufSize, jobject jstream)
+ jobject jpegRevision, jobject jstream)
{
JNIEntry(SVNClient, streamFileContent);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1360,7 +1334,11 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return;
- cl->streamFileContent(path, revision, pegRevision, jstream, bufSize);
+ OutputStream dataOut(jstream);
+ if (JNIUtil::isExceptionThrown())
+ return;
+
+ cl->streamFileContent(path, revision, pegRevision, dataOut);
}
JNIEXPORT jstring JNICALL
Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Mon Sep 20 20:16:13 2010
@@ -790,7 +790,7 @@ public interface ISVNClient
* @since 1.0
*/
void streamFileContent(String path, Revision revision, Revision pegRevision,
- int bufferSize, OutputStream stream)
+ OutputStream stream)
throws ClientException;
/**
Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Mon Sep 20 20:16:13 2010
@@ -26,6 +26,7 @@ package org.apache.subversion.javahl;
import org.apache.subversion.javahl.callback.*;
import java.io.OutputStream;
+import java.io.ByteArrayOutputStream;
import java.util.Collection;
import java.util.Set;
@@ -473,15 +474,21 @@ public class SVNClient implements ISVNCl
/**
* @since 1.2
*/
- public native byte[] fileContent(String path, Revision revision,
- Revision pegRevision)
- throws ClientException;
+ public byte[] fileContent(String path, Revision revision,
+ Revision pegRevision)
+ throws ClientException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ streamFileContent(path, revision, pegRevision, stream);
+ return stream.toByteArray();
+ }
/**
* @since 1.0
*/
public native void streamFileContent(String path, Revision revision,
- Revision pegRevision, int bufferSize,
+ Revision pegRevision,
OutputStream stream)
throws ClientException;
Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Mon Sep 20 20:16:13 2010
@@ -2105,7 +2105,7 @@ public class SVNClient implements SVNCli
aSVNClient.streamFileContent(path,
revision == null ? null : revision.toApache(),
pegRevision == null ? null : pegRevision.toApache(),
- bufferSize, stream);
+ stream);
}
catch (org.apache.subversion.javahl.ClientException ex)
{
Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Mon Sep 20 20:16:13 2010
@@ -1827,7 +1827,7 @@ public class BasicTests extends SVNTests
// get the content from the repository
ByteArrayOutputStream baos = new ByteArrayOutputStream();
client.streamFileContent(thisTest.getWCPath() + "/A/mu", null, null,
- 100, baos);
+ baos);
byte[] content = baos.toByteArray();
byte[] testContent = thisTest.getWc().getItemContent("A/mu").getBytes();
Modified: subversion/branches/performance/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_dep_compat.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_dep_compat.h Mon Sep 20 20:16:13 2010
@@ -63,6 +63,9 @@ extern "C" {
#endif
#if !APR_VERSION_AT_LEAST(1,3,0)
+#define APR_UINT16_MAX 0xFFFFU
+#define APR_INT16_MAX 0x7FFF
+#define APR_INT16_MIN (-APR_INT16_MAX-1)
#define APR_UINT32_MAX 0xFFFFFFFFU
#define APR_INT32_MAX 0x7FFFFFFF
#define APR_INT32_MIN (-APR_INT32_MAX-1)
Modified: subversion/branches/performance/subversion/include/private/svn_sqlite.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_sqlite.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_sqlite.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_sqlite.h Mon Sep 20 20:16:13 2010
@@ -165,7 +165,7 @@ svn_sqlite__prepare(svn_sqlite__stmt_t *
svn_error_t *
svn_sqlite__bindf(svn_sqlite__stmt_t *stmt, const char *fmt, ...);
-/* Error-handling wrapper around sqlite3_bind_int64. */
+/* Error-handling wrapper around sqlite3_bind_int. */
svn_error_t *
svn_sqlite__bind_int(svn_sqlite__stmt_t *stmt, int slot, int val);
Modified: subversion/branches/performance/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_client.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_client.h (original)
+++ subversion/branches/performance/subversion/include/svn_client.h Mon Sep 20 20:16:13 2010
@@ -53,18 +53,6 @@ extern "C" {
#endif /* __cplusplus */
-/**
- ### @todo Multiple Targets
- - Up for debate: an update on multiple targets is *not* atomic.
- Right now, svn_client_update only takes one path. What's
- debatable is whether this should ever change. On the one hand,
- it's kind of losing to have the client application loop over
- targets and call svn_client_update() on each one; each call to
- update initializes a whole new repository session (network
- overhead, etc.) On the other hand, it's a very simple
- implementation, and allows for the possibility that different
- targets may come from different repositories. */
-
/**
* Get libsvn_client version information.
@@ -328,6 +316,22 @@ svn_client_get_ssl_client_cert_pw_prompt
/** @} */
/**
+ * Revisions and Peg Revisions
+ *
+ * @defgroup clnt_revisions Revisions and Peg Revisions
+ *
+ * A brief word on operative and peg revisions.
+ *
+ * If the kind of the peg revision is #svn_opt_revision_unspecified, then it
+ * defaults to #svn_opt_revision_head for URLs and #svn_opt_revision_working
+ * for local paths.
+ *
+ * For deeper insight, please see the
+ * <a href="http://svnbook.red-bean.com/nightly/en/svn.advanced.pegrevs.html">
+ * Peg and Operative Revisions</a> section of the Subversion Book.
+ */
+
+/**
* Commit operations
*
* @defgroup clnt_commit Client commit subsystem
@@ -893,7 +897,7 @@ typedef struct svn_client_ctx_t
void *cancel_baton;
/** notification function, defaulting to a function that forwards
- * to notify_func().
+ * to notify_func(). If @a NULL, it will not be invoked.
* @since New in 1.2. */
svn_wc_notify_func2_t notify_func2;
@@ -1040,56 +1044,47 @@ svn_client_args_to_target_array(apr_arra
/**
- * Checkout a working copy of @a URL at @a revision, looked up at @a
- * peg_revision, using @a path as the root directory of the newly
- * checked out working copy, and authenticating with the
- * authentication baton cached in @a ctx. If @a result_rev is not @c
- * NULL, set @a *result_rev to the value of the revision actually
- * checked out from the repository.
- *
- * If @a peg_revision->kind is #svn_opt_revision_unspecified, then it
- * defaults to #svn_opt_revision_head.
- *
- * @a revision must be of kind #svn_opt_revision_number,
- * #svn_opt_revision_head, or #svn_opt_revision_date. If
- * @a revision does not meet these requirements, return the error
- * #SVN_ERR_CLIENT_BAD_REVISION.
- *
- * If @a depth is #svn_depth_infinity, check out fully recursively.
- * Else if it is #svn_depth_immediates, check out @a URL and its
- * immediate entries (subdirectories will be present, but will be at
- * depth #svn_depth_empty themselves); else #svn_depth_files,
- * check out @a URL and its file entries, but no subdirectories; else
- * if #svn_depth_empty, check out @a URL as an empty directory at
- * that depth, with no entries present.
- *
- * If @a depth is #svn_depth_unknown, then behave as if for
- * #svn_depth_infinity, except in the case of resuming a previous
- * checkout of @a path (i.e., updating), in which case use the depth
- * of the existing working copy.
- *
- * If @a ignore_externals is set, don't process externals definitions
- * as part of this operation.
- *
- * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
- * @a ctx->notify_baton2 as the checkout progresses.
- *
- * If @a allow_unver_obstructions is TRUE then the checkout tolerates
- * existing unversioned items that obstruct added paths from @a URL. Only
- * obstructions of the same type (file or dir) as the added item are
- * tolerated. The text of obstructing files is left as-is, effectively
- * treating it as a user modification after the checkout. Working
- * properties of obstructing items are set equal to the base properties.
- * If @a allow_unver_obstructions is FALSE then the checkout will abort
- * if there are any unversioned obstructing items.
- *
- * If @a URL refers to a file rather than a directory, return the
- * error #SVN_ERR_UNSUPPORTED_FEATURE. If @a URL does not exist,
- * return the error #SVN_ERR_RA_ILLEGAL_URL.
+ * Checkout a working copy from a repository.
*
- * Use @a pool for any temporary allocation.
+ * @param[out] result_rev If non-NULL, the value of the revision checked
+ * out form the repository.
+ * @param[in] URL The repository URL of the checkout source.
+ * @param[in] path The root of the new working copy.
+ * @param[in] peg_revision The peg revision.
+ * @param[in] revision The operative revision.
+ * @param[in] depth The depth of the operation. If #svn_depth_unknown,
+ * then behave as if for #svn_depth_infinity, except in the case
+ * of resuming a previous checkout of @a path (i.e., updating),
+ * in which case use the depth of the existing working copy.
+ * @param[in] ignore_externals If @c TRUE, don't process externals
+ * definitions as part of this operation.
+ * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
+ * unversioned items that obstruct incoming paths. Only
+ * obstructions of the same type (file or dir) as the added
+ * item are tolerated. The text of obstructing files is left
+ * as-is, effectively treating it as a user modification after
+ * the checkout. Working properties of obstructing items are
+ * set equal to the base properties. <br>
+ * If @c FALSE, then abort if there are any unversioned
+ * obstructing items.
+ * @param[in] ctx The standard client context, used for authentication and
+ * notification.
+ * @param[in] pool Used for any temporary allocation.
+ *
+ * @return A pointer to an #svn_error_t of the type (this list is not
+ * exhaustive): <br>
+ * #SVN_ERR_UNSUPPORTED_FEATURE if @a URL refers to a file rather
+ * than a directory; <br>
+ * #SVN_ERR_RA_ILLEGAL_URL if @a URL does not exist; <br>
+ * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
+ * #svn_opt_revision_number, #svn_opt_revision_head, or
+ * #svn_opt_revision_date. <br>
+ * If no error occurred, return #SVN_NO_ERROR.
*
* @since New in 1.5.
+ *
+ * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
+ * a discussion of operative and peg revisions.
*/
svn_error_t *
svn_client_checkout3(svn_revnum_t *result_rev,
@@ -1201,6 +1196,17 @@ svn_client_checkout(svn_revnum_t *result
*
* Use @a pool for any temporary allocation.
*
+ * @todo Multiple Targets
+ * - Up for debate: an update on multiple targets is *not* atomic.
+ * Right now, svn_client_update only takes one path. What's
+ * debatable is whether this should ever change. On the one hand,
+ * it's kind of losing to have the client application loop over
+ * targets and call svn_client_update() on each one; each call to
+ * update initializes a whole new repository session (network
+ * overhead, etc.) On the other hand, it's a very simple
+ * implementation, and allows for the possibility that different
+ * targets may come from different repositories.
+ *
* @since New in 1.5.
*/
svn_error_t *
@@ -4685,26 +4691,30 @@ svn_client_ls(apr_hash_t **dirents,
*/
/**
- * Output the content of file identified by @a path_or_url and @a
- * revision to the stream @a out. The actual node revision selected
- * is determined by the path as it exists in @a peg_revision. If @a
- * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
- * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
- * for WC targets.
+ * Output the content of a file.
*
- * If @a path_or_url is not a local path, then if @a revision is of
- * kind #svn_opt_revision_previous (or some other kind that requires
- * a local path), an error will be returned, because the desired
- * revision cannot be determined.
- *
- * Use the authentication baton cached in @a ctx to authenticate against the
- * repository.
- *
- * Perform all allocations from @a pool.
- *
- * ### @todo Add an expansion/translation flag?
+ * @param[in] out The stream to which the content will be written.
+ * @param[in] path_or_url The path or URL of the file.
+ * @param[in] peg_revision The peg revision.
+ * @param[in] revision The operative revision.
+ * @param[in] ctx The standard client context, used for possible
+ * authentication.
+ * @param[in] pool Used for any temporary allocation.
+ *
+ * @todo Add an expansion/translation flag?
+ *
+ * @return A pointer to an #svn_error_t of the type (this list is not
+ * exhaustive): <br>
+ * An unspecified error if @a revision is of kind
+ * #svn_opt_revision_previous (or some other kind that requires
+ * a local path), because the desired revision cannot be
+ * determined. <br>
+ * If no error occurred, return #SVN_NO_ERROR.
*
* @since New in 1.2.
+ *
+ * @see #svn_client_ctx_t <br> @ref clnt_revisions for
+ * a discussion of operative and peg revisions.
*/
svn_error_t *
svn_client_cat2(svn_stream_t *out,
@@ -5224,6 +5234,15 @@ typedef svn_error_t *(*svn_client_patch_
* stripped from paths obtained from the patch. It is an error if a
* negative strip count is passed.
*
+ * If @a old_patch_target_names is @c TRUE, use target names from the old
+ * side of the patch, rather than using target names from the new side of
+ * the patch. For instance, if a unidiff header contains
+ * --- foo.c
+ * +++ foo.c.new
+ * and @a old_patch_target_names is @c TRUE, the name "foo.c" will be used
+ * for the target, and if @a old_patch_target_names is @c FALSE, the target
+ * name "foo.c.new" will be used.
+ *
* If @a reverse is @c TRUE, apply patches in reverse, deleting lines
* the patch would add and adding lines the patch would delete.
* This is useful when applying a unidiff which was created with the
@@ -5255,6 +5274,7 @@ svn_client_patch(const char *patch_abspa
const char *local_abspath,
svn_boolean_t dry_run,
int strip_count,
+ svn_boolean_t old_patch_target_names,
svn_boolean_t reverse,
svn_boolean_t ignore_whitespace,
svn_boolean_t remove_tempfiles,
Modified: subversion/branches/performance/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_diff.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_diff.h (original)
+++ subversion/branches/performance/subversion/include/svn_diff.h Mon Sep 20 20:16:13 2010
@@ -986,6 +986,10 @@ typedef struct svn_patch_t {
/**
* Represents the operation performed on the file. */
svn_diff_operation_kind_t operation;
+
+ /**
+ * Indicates whether the patch is being interpreted in reverse. */
+ svn_boolean_t reverse;
} svn_patch_t;
/**
Modified: subversion/branches/performance/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_error_codes.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/performance/subversion/include/svn_error_codes.h Mon Sep 20 20:16:13 2010
@@ -219,6 +219,11 @@ SVN_ERROR_START
SVN_ERR_BAD_CATEGORY_START + 13,
"Unknown string value of token")
+ /** @since New in 1.7. */
+ SVN_ERRDEF(SVN_ERR_BAD_OLD_VALUE,
+ SVN_ERR_BAD_CATEGORY_START + 14,
+ "Old value doesn't match repository")
+
/* xml errors */
SVN_ERRDEF(SVN_ERR_XML_ATTRIB_NOT_FOUND,
@@ -365,14 +370,14 @@ SVN_ERROR_START
SVN_ERR_WC_CATEGORY_START + 6,
"Invalid lock")
- /** Previously this error number was used by SVN_ERR_WC_NOT_DIRECTORY, which
+ /** Previously this error number was used by #SVN_ERR_WC_NOT_DIRECTORY, which
* is now an alias for this error.
* @since Since 1.7. */
SVN_ERRDEF(SVN_ERR_WC_NOT_WORKING_COPY,
SVN_ERR_WC_CATEGORY_START + 7,
"Path is not a working copy directory")
- /* This name is deprecated. Use SVN_ERR_WC_NOT_WORKING_COPY.
+ /** This name is deprecated. Use #SVN_ERR_WC_NOT_WORKING_COPY.
* @deprecated Provided for backward compatibility with the 1.6 API. */
#define SVN_ERR_WC_NOT_DIRECTORY SVN_ERR_WC_NOT_WORKING_COPY
Modified: subversion/branches/performance/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_fs.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_fs.h (original)
+++ subversion/branches/performance/subversion/include/svn_fs.h Mon Sep 20 20:16:13 2010
@@ -1896,8 +1896,8 @@ svn_fs_revision_proplist(apr_hash_t **ta
* - @a name is the name of the property to change.
* - if @a old_value_p is not @c NULL, then @a *old_value_p is the expected old
* value of the property, and changing the value will fail with error
- * #SVN_ERR_BAD_PROPERTY_VALUE if the present value of the property is not @a
- * *old_value_p.
+ * #SVN_ERR_BAD_OLD_VALUE if the present value of the property is not @a
+ * *old_value_p. (This is an atomic test-and-set).
* - @a value is the new value of the property, or zero if the property should
* be removed altogether.
*
Modified: subversion/branches/performance/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_wc.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_wc.h (original)
+++ subversion/branches/performance/subversion/include/svn_wc.h Mon Sep 20 20:16:13 2010
@@ -1258,10 +1258,12 @@ typedef struct svn_wc_notify_t {
* hunk the notification is for. They are line-based
* offsets and lengths parsed from the unidiff hunk header.
* @since New in 1.7. */
+ /* @{ */
svn_linenum_t hunk_original_start;
svn_linenum_t hunk_original_length;
svn_linenum_t hunk_modified_start;
svn_linenum_t hunk_modified_length;
+ /* @} */
/** The line at which a hunk was matched (and applied).
* @since New in 1.7. */
@@ -5365,10 +5367,6 @@ svn_wc_get_actual_target(const char *pat
* whenever external changes are encountered, giving the callback a chance
* to store the external information for processing.
*
- * If @a fetch_func is non-NULL, then use it (with @a fetch_baton) as
- * a fallback for retrieving repository files whenever 'copyfrom' args
- * are sent into editor->add_file().
- *
* If @a diff3_cmd is non-NULL, then use it as the diff3 command for
* any merging; otherwise, use the built-in merge code.
*
@@ -5419,8 +5417,6 @@ svn_wc_get_update_editor4(const svn_delt
svn_boolean_t allow_unver_obstructions,
const char *diff3_cmd,
const apr_array_header_t *preserved_exts,
- svn_wc_get_file_t fetch_func,
- void *fetch_baton,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
svn_wc_external_update_t external_func,
@@ -5434,7 +5430,8 @@ svn_wc_get_update_editor4(const svn_delt
/** Similar to svn_wc_get_update_editor4, but uses access batons and relative
* path instead of a working copy context-abspath pair and
- * svn_wc_traversal_info_t instead of an externals callback.
+ * svn_wc_traversal_info_t instead of an externals callback. Also,
+ * @a fetch_func and @a fetch_baton are ignored.
*
* If @a ti is non-NULL, record traversal info in @a ti, for use by
* post-traversal accessors such as svn_wc_edited_externals().
@@ -5546,8 +5543,6 @@ svn_wc_get_switch_editor4(const svn_delt
svn_boolean_t allow_unver_obstructions,
const char *diff3_cmd,
const apr_array_header_t *preserved_exts,
- svn_wc_get_file_t fetch_func,
- void *fetch_baton,
svn_wc_conflict_resolver_func_t conflict_func,
void *conflict_baton,
svn_wc_external_update_t external_func,
@@ -5561,8 +5556,7 @@ svn_wc_get_switch_editor4(const svn_delt
/** Similar to svn_wc_get_switch_editor4, but uses access batons and relative
* path instead of a working copy context and svn_wc_traversal_info_t instead
- * of an externals callback. This function doesn't support an external file
- * fetcher.
+ * of an externals callback.
*
* If @a ti is non-NULL, record traversal info in @a ti, for use by
* post-traversal accessors such as svn_wc_edited_externals().
Modified: subversion/branches/performance/subversion/libsvn_client/checkout.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/checkout.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/checkout.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/checkout.c Mon Sep 20 20:16:13 2010
@@ -71,10 +71,11 @@ initialize_area(svn_revnum_t *result_rev
repos_root, uuid, revnum, depth, pool));
/* Have update fix the incompleteness. */
return svn_error_return(svn_client__update_internal(result_rev, local_abspath,
- revision, depth, TRUE, ignore_externals,
- allow_unver_obstructions,
- use_sleep, FALSE, innercheckout,
- ctx, pool));
+ revision, depth, TRUE,
+ ignore_externals,
+ allow_unver_obstructions,
+ use_sleep, innercheckout,
+ ctx, pool));
}
@@ -219,7 +220,7 @@ svn_client__checkout_internal(svn_revnum
revision, depth, TRUE,
ignore_externals,
allow_unver_obstructions,
- use_sleep, FALSE, innercheckout,
+ use_sleep, innercheckout,
ctx, pool);
}
else
Modified: subversion/branches/performance/subversion/libsvn_client/cleanup.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/cleanup.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/cleanup.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/cleanup.c Mon Sep 20 20:16:13 2010
@@ -129,6 +129,11 @@ svn_client_upgrade(const char *path,
info_baton.last_repos = NULL;
info_baton.last_uuid = NULL;
+ 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, scratch_pool));
SVN_ERR(svn_wc_upgrade(ctx->wc_ctx, local_abspath,
fetch_repos_info, &info_baton,
Modified: subversion/branches/performance/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/client.h?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/client.h (original)
+++ subversion/branches/performance/subversion/libsvn_client/client.h Mon Sep 20 20:16:13 2010
@@ -490,12 +490,6 @@ svn_client__make_local_parents(const cha
that obstruct items added from the repos are tolerated; if FALSE,
these obstructions cause the update to fail.
- If SEND_COPYFROM_ARGS is true, then request that the server not
- send file contents when adding files that have been created by
- explicit copying; instead, just send copyfrom-args to add_file(),
- and possibly follow up with an apply_textdelta() against the copied
- file.
-
If INNERUPDATE is true, no anchor check is performed on the update target.
*/
svn_error_t *
@@ -507,7 +501,6 @@ svn_client__update_internal(svn_revnum_t
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
Modified: subversion/branches/performance/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/commit.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/commit.c Mon Sep 20 20:16:13 2010
@@ -929,25 +929,6 @@ post_process_commit_item(svn_wc_committe
svn_boolean_t loop_recurse = FALSE;
svn_boolean_t remove_lock;
-#ifndef SVN_WC__SINGLE_DB
- /* Is it a missing, deleted directory?
-
- ### Temporary: once we centralise this sort of node is just a
- normal delete and will get handled by the post-commit queue. */
- if (item->kind == svn_node_dir
- && item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
- {
- svn_boolean_t obstructed;
-
- SVN_ERR(svn_wc__node_is_status_obstructed(&obstructed,
- wc_ctx, item->path,
- scratch_pool));
- if (obstructed)
- return svn_wc__temp_mark_missing_not_present(item->path,
- wc_ctx, scratch_pool);
- }
-#endif
-
if ((item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD)
&& (item->kind == svn_node_dir)
&& (item->copyfrom_url))
Modified: subversion/branches/performance/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/commit_util.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/commit_util.c Mon Sep 20 20:16:13 2010
@@ -859,46 +859,6 @@ harvest_committables(apr_hash_t *committ
and depth says not to go there. */
continue;
}
-#ifndef SVN_WC__SINGLE_DB
- else
- {
- svn_boolean_t obstructed;
-
- SVN_ERR(svn_wc__node_is_status_obstructed(&obstructed,
- ctx->wc_ctx,
- this_abspath,
- iterpool));
-
- if (obstructed)
- {
- /* A missing, schedule-delete child dir is
- allowable. Just don't try to recurse. */
- svn_node_kind_t childkind;
- SVN_ERR(svn_io_check_path(this_abspath,
- &childkind,
- iterpool));
- if (childkind == svn_node_none && this_is_deleted)
- {
- if (svn_wc__changelist_match(ctx->wc_ctx,
- this_abspath,
- changelists,
- iterpool))
- {
- SVN_ERR(add_committable(
- committables, this_abspath,
- this_kind,
- repos_root_url, this_repos_relpath,
- SVN_INVALID_REVNUM,
- NULL,
- SVN_INVALID_REVNUM,
- SVN_CLIENT_COMMIT_ITEM_DELETE,
- result_pool, iterpool));
- continue; /* don't recurse! */
- }
- }
- }
- }
-#endif
}
{
Modified: subversion/branches/performance/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/externals.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/externals.c Mon Sep 20 20:16:13 2010
@@ -205,7 +205,7 @@ switch_dir_external(const char *path,
revision, svn_depth_unknown,
FALSE, FALSE, FALSE,
timestamp_sleep, TRUE,
- TRUE, ctx, subpool));
+ ctx, subpool));
svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
Modified: subversion/branches/performance/subversion/libsvn_client/list.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/list.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/list.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/list.c Mon Sep 20 20:16:13 2010
@@ -63,14 +63,23 @@ get_dir_contents(apr_uint32_t dirent_fie
apr_hash_t *tmpdirents;
apr_pool_t *iterpool = svn_pool_create(pool);
apr_array_header_t *array;
+ svn_error_t *err;
int i;
if (depth == svn_depth_empty)
return SVN_NO_ERROR;
- /* Get the directory's entries, but not its props. */
- SVN_ERR(svn_ra_get_dir2(ra_session, &tmpdirents, NULL, NULL,
- dir, rev, dirent_fields, pool));
+ /* Get the directory's entries, but not its props. Ignore any
+ not-authorized errors. */
+ err = svn_ra_get_dir2(ra_session, &tmpdirents, NULL, NULL,
+ dir, rev, dirent_fields, pool);
+ if (err && ((err->apr_err == SVN_ERR_RA_NOT_AUTHORIZED) ||
+ (err->apr_err == SVN_ERR_RA_DAV_FORBIDDEN)))
+ {
+ svn_error_clear(err);
+ return SVN_NO_ERROR;
+ }
+ SVN_ERR(err);
if (ctx->cancel_func)
SVN_ERR(ctx->cancel_func(ctx->cancel_baton));
Modified: subversion/branches/performance/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/merge.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/merge.c Mon Sep 20 20:16:13 2010
@@ -437,29 +437,7 @@ obstructed_or_missing(svn_wc_notify_stat
local_abspath,
pool));
if (is_deleted)
- {
-#ifndef SVN_WC__SINGLE_DB
- /* ### 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
-#endif
- kind_expected = svn_node_none;
- }
+ kind_expected = svn_node_none;
}
if (kind_expected == kind_on_disk)
@@ -5467,9 +5445,6 @@ get_mergeinfo_walk_cb(const char *local_
svn_boolean_t is_present;
svn_boolean_t deleted;
svn_boolean_t absent;
-#ifndef SVN_WC__SINGLE_DB
- svn_boolean_t obstructed;
-#endif
svn_boolean_t immediate_child_dir;
/* TODO(#2843) How to deal with a excluded item on merge? */
@@ -5481,20 +5456,12 @@ get_mergeinfo_walk_cb(const char *local_
if (!is_present)
return SVN_NO_ERROR;
-#ifndef SVN_WC__SINGLE_DB
- SVN_ERR(svn_wc__node_is_status_obstructed(&obstructed, wb->ctx->wc_ctx,
- local_abspath, scratch_pool));
-#endif
SVN_ERR(svn_wc__node_is_status_deleted(&deleted, wb->ctx->wc_ctx,
local_abspath, scratch_pool));
SVN_ERR(svn_wc__node_is_status_absent(&absent, wb->ctx->wc_ctx,
local_abspath, scratch_pool));
-#ifndef SVN_WC__SINGLE_DB
- if (obstructed || deleted || absent)
-#else
if (deleted || absent)
-#endif
{
propval = NULL;
switched = FALSE;
@@ -5525,11 +5492,7 @@ get_mergeinfo_walk_cb(const char *local_
&& (strcmp(abs_parent_path,
wb->merge_target_abspath) == 0));
/* Make sure what the WC thinks is present on disk really is. */
-#ifndef SVN_WC__SINGLE_DB
- if (!absent && !deleted && !obstructed)
-#else
if (!absent && !deleted)
-#endif
SVN_ERR(record_missing_subtree_roots(local_abspath, kind,
wb->subtree_dirents,
wb->missing_subtrees,
Modified: subversion/branches/performance/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/patch.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/patch.c Mon Sep 20 20:16:13 2010
@@ -532,6 +532,8 @@ init_prop_target(prop_patch_target_t **p
* described by PATCH. Use working copy context WC_CTX.
* STRIP_COUNT specifies the number of leading path components
* which should be stripped from target paths in the patch.
+ * OLD_PATCH_TARGET_NAMES indicates whether the old target's name parsed
+ * from the patch file should be preferred over the new target's name.
* The patch target structure is allocated in RESULT_POOL, but if the target
* should be skipped, PATCH_TARGET->SKIPPED is set and the target should be
* treated as not fully initialized, e.g. the caller should not not do any
@@ -543,7 +545,9 @@ static svn_error_t *
init_patch_target(patch_target_t **patch_target,
const svn_patch_t *patch,
const char *base_dir,
- svn_wc_context_t *wc_ctx, int strip_count,
+ svn_wc_context_t *wc_ctx,
+ int strip_count,
+ svn_boolean_t old_patch_target_names,
svn_boolean_t remove_tempfiles,
apr_pool_t *result_pool, apr_pool_t *scratch_pool)
{
@@ -589,7 +593,8 @@ init_patch_target(patch_target_t **patch
target->prop_targets = apr_hash_make(result_pool);
target->pool = result_pool;
- SVN_ERR(resolve_target_path(target, patch->new_filename,
+ SVN_ERR(resolve_target_path(target, old_patch_target_names ?
+ patch->old_filename : patch->new_filename,
base_dir, strip_count, prop_changes_only,
wc_ctx, result_pool, scratch_pool));
if (! target->skipped)
@@ -811,7 +816,7 @@ match_hunk(svn_boolean_t *matched, targe
svn_boolean_t hunk_eof;
svn_boolean_t lines_matched;
apr_pool_t *iterpool;
- svn_linenum_t original_length;
+ svn_linenum_t hunk_length;
svn_linenum_t leading_context;
svn_linenum_t trailing_context;
@@ -823,13 +828,18 @@ match_hunk(svn_boolean_t *matched, targe
saved_line = content_info->current_line;
lines_read = 0;
lines_matched = FALSE;
- original_length = svn_diff_hunk_get_original_length(hunk);
leading_context = svn_diff_hunk_get_leading_context(hunk);
trailing_context = svn_diff_hunk_get_trailing_context(hunk);
if (match_modified)
- SVN_ERR(svn_diff_hunk_reset_modified_text(hunk));
+ {
+ SVN_ERR(svn_diff_hunk_reset_modified_text(hunk));
+ hunk_length = svn_diff_hunk_get_modified_length(hunk);
+ }
else
- SVN_ERR(svn_diff_hunk_reset_original_text(hunk));
+ {
+ SVN_ERR(svn_diff_hunk_reset_original_text(hunk));
+ hunk_length = svn_diff_hunk_get_original_length(hunk);
+ }
iterpool = svn_pool_create(pool);
do
{
@@ -852,59 +862,41 @@ match_hunk(svn_boolean_t *matched, targe
NULL, FALSE,
content_info->keywords, FALSE,
iterpool));
- lines_read++;
SVN_ERR(read_line(content_info, &target_line, iterpool, iterpool));
- if (! hunk_eof)
+
+ lines_read++;
+
+ /* If the last line doesn't have a newline, we get EOF but still
+ * have a non-empty line to compare. */
+ if ((hunk_eof && hunk_line->len == 0) ||
+ (content_info->eof && strlen(target_line) == 0))
+ break;
+
+ /* Leading/trailing fuzzy lines always match. */
+ if ((lines_read <= fuzz && leading_context > fuzz) ||
+ (lines_read > hunk_length - fuzz && trailing_context > fuzz))
+ lines_matched = TRUE;
+ else
{
- if (lines_read <= fuzz && leading_context > fuzz)
- lines_matched = TRUE;
- else if (lines_read > original_length - fuzz &&
- trailing_context > fuzz)
- lines_matched = TRUE;
- else
+ if (ignore_whitespace)
{
- if (ignore_whitespace)
- {
- char *stripped_hunk_line = apr_pstrdup(pool,
- hunk_line_translated);
- char *stripped_target_line = apr_pstrdup(pool, target_line);
-
- apr_collapse_spaces(stripped_hunk_line,
- hunk_line_translated);
- apr_collapse_spaces(stripped_target_line, target_line);
- lines_matched = ! strcmp(stripped_hunk_line,
- stripped_target_line);
- }
- else
- lines_matched = ! strcmp(hunk_line_translated, target_line);
+ char *hunk_line_trimmed;
+ char *target_line_trimmed;
+
+ hunk_line_trimmed = apr_pstrdup(iterpool, hunk_line_translated);
+ target_line_trimmed = apr_pstrdup(iterpool, target_line);
+ apr_collapse_spaces(hunk_line_trimmed, hunk_line_trimmed);
+ apr_collapse_spaces(target_line_trimmed, target_line_trimmed);
+ lines_matched = ! strcmp(hunk_line_trimmed, target_line_trimmed);
}
+ else
+ lines_matched = ! strcmp(hunk_line_translated, target_line);
}
}
- while (lines_matched && ! (hunk_eof || content_info->eof));
+ while (lines_matched);
- if (hunk_eof)
- *matched = lines_matched;
- else if (content_info->eof)
- {
- /* If the target has no newline at end-of-file, we get an EOF
- * indication for the target earlier than we do get it for the hunk. */
- if (match_modified)
- SVN_ERR(svn_diff_hunk_readline_modified_text(hunk, &hunk_line,
- NULL, &hunk_eof,
- iterpool, iterpool));
- else
- SVN_ERR(svn_diff_hunk_readline_original_text(hunk, &hunk_line,
- NULL, &hunk_eof,
- iterpool, iterpool));
+ *matched = lines_matched && hunk_eof && hunk_line->len == 0;
- /* When comparing modified text we require that all lines match, else
- * a hunk that adds a newline at the end will be treated as already
- * applied even if it isn't. */
- if (! match_modified && hunk_line->len == 0 && hunk_eof)
- *matched = lines_matched;
- else
- *matched = FALSE;
- }
SVN_ERR(seek_to_line(content_info, saved_line, iterpool));
svn_pool_destroy(iterpool);
@@ -1150,54 +1142,55 @@ get_hunk_info(hunk_info_t **hi, patch_ta
else if (original_start > 0 && content_info->stream)
{
svn_linenum_t saved_line = content_info->current_line;
- svn_linenum_t modified_start;
- /* Check if the hunk is already applied.
- * We only check for an exact match here, and don't bother checking
- * for already applied patches with offset/fuzz, because such a
- * check would be ambiguous. */
- if (fuzz == 0)
+ /* Scan for a match at the line where the hunk thinks it
+ * should be going. */
+ SVN_ERR(seek_to_line(content_info, original_start, scratch_pool));
+ if (content_info->current_line != original_start)
{
- modified_start = svn_diff_hunk_get_modified_start(hunk);
- if (modified_start == 0)
- {
- /* Patch wants to delete the file. */
- already_applied = target->locally_deleted;
- }
- else
- {
- SVN_ERR(seek_to_line(content_info, modified_start,
- scratch_pool));
- SVN_ERR(scan_for_match(&matched_line, content_info,
- hunk, TRUE,
- modified_start + 1,
- fuzz, ignore_whitespace, TRUE,
- cancel_func, cancel_baton,
- scratch_pool));
- already_applied = (matched_line == modified_start);
- }
+ /* Seek failed. */
+ matched_line = 0;
}
else
- already_applied = FALSE;
+ SVN_ERR(scan_for_match(&matched_line, content_info, hunk, TRUE,
+ original_start + 1, fuzz,
+ ignore_whitespace, FALSE,
+ cancel_func, cancel_baton,
+ scratch_pool));
- if (! already_applied)
+ if (matched_line != original_start)
{
- /* Scan for a match at the line where the hunk thinks it
- * should be going. */
- SVN_ERR(seek_to_line(content_info, original_start, scratch_pool));
- if (content_info->current_line != original_start)
+ /* Check if the hunk is already applied.
+ * We only check for an exact match here, and don't bother checking
+ * for already applied patches with offset/fuzz, because such a
+ * check would be ambiguous. */
+ if (fuzz == 0)
{
- /* Seek failed. */
- matched_line = 0;
+ svn_linenum_t modified_start;
+
+ modified_start = svn_diff_hunk_get_modified_start(hunk);
+ if (modified_start == 0)
+ {
+ /* Patch wants to delete the file. */
+ already_applied = target->locally_deleted;
+ }
+ else
+ {
+ SVN_ERR(seek_to_line(content_info, modified_start,
+ scratch_pool));
+ SVN_ERR(scan_for_match(&matched_line, content_info,
+ hunk, TRUE,
+ modified_start + 1,
+ fuzz, ignore_whitespace, TRUE,
+ cancel_func, cancel_baton,
+ scratch_pool));
+ already_applied = (matched_line == modified_start);
+ }
}
else
- SVN_ERR(scan_for_match(&matched_line, content_info, hunk, TRUE,
- original_start + 1, fuzz,
- ignore_whitespace, FALSE,
- cancel_func, cancel_baton,
- scratch_pool));
+ already_applied = FALSE;
- if (matched_line != original_start)
+ if (! already_applied)
{
/* Scan the whole file again from the start. */
SVN_ERR(seek_to_line(content_info, 1, scratch_pool));
@@ -1644,6 +1637,8 @@ close_target_streams(const patch_target_
* in RESULT_POOL. Use WC_CTX as the working copy context.
* STRIP_COUNT specifies the number of leading path components
* which should be stripped from target paths in the patch.
+ * OLD_PATCH_TARGET_NAMES indicates whether the old filename parsed
+ * from the patch file should be preferred over the new filename.
* REMOVE_TEMPFILES, PATCH_FUNC, and PATCH_BATON as in svn_client_patch().
* IGNORE_WHITESPACE tells whether whitespace should be considered when
* doing the matching.
@@ -1653,6 +1648,7 @@ static svn_error_t *
apply_one_patch(patch_target_t **patch_target, svn_patch_t *patch,
const char *abs_wc_path, svn_wc_context_t *wc_ctx,
int strip_count,
+ svn_boolean_t old_patch_target_names,
svn_boolean_t ignore_whitespace,
svn_boolean_t remove_tempfiles,
svn_client_patch_func_t patch_func,
@@ -1667,7 +1663,8 @@ apply_one_patch(patch_target_t **patch_t
static const int MAX_FUZZ = 2;
apr_hash_index_t *hash_index;
- SVN_ERR(init_patch_target(&target, patch, abs_wc_path, wc_ctx, strip_count,
+ SVN_ERR(init_patch_target(&target, patch, abs_wc_path, wc_ctx,
+ strip_count, old_patch_target_names,
remove_tempfiles, result_pool, scratch_pool));
if (target->skipped)
{
@@ -2554,6 +2551,9 @@ typedef struct {
/* Number of leading components to strip from patch target paths. */
int strip_count;
+ /* Whether to use the old path from the patch file instead of the new one. */
+ svn_boolean_t old_patch_target_names;
+
/* Whether to apply the patch in reverse. */
svn_boolean_t reverse;
@@ -2619,6 +2619,7 @@ apply_patches(void *baton,
SVN_ERR(apply_one_patch(&target, patch, btn->abs_wc_path,
btn->ctx->wc_ctx, btn->strip_count,
+ btn->old_patch_target_names,
btn->ignore_whitespace,
btn->remove_tempfiles,
btn->patch_func, btn->patch_baton,
@@ -2674,6 +2675,7 @@ svn_client_patch(const char *patch_abspa
const char *local_abspath,
svn_boolean_t dry_run,
int strip_count,
+ svn_boolean_t old_patch_target_names,
svn_boolean_t reverse,
svn_boolean_t ignore_whitespace,
svn_boolean_t remove_tempfiles,
@@ -2694,6 +2696,7 @@ svn_client_patch(const char *patch_abspa
baton.dry_run = dry_run;
baton.ctx = ctx;
baton.strip_count = strip_count;
+ baton.old_patch_target_names = old_patch_target_names;
baton.reverse = reverse;
baton.ignore_whitespace = ignore_whitespace;
baton.remove_tempfiles = remove_tempfiles;
Modified: subversion/branches/performance/subversion/libsvn_client/switch.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/switch.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/switch.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/switch.c Mon Sep 20 20:16:13 2010
@@ -190,7 +190,6 @@ switch_internal(svn_revnum_t *result_rev
depth,
depth_is_sticky, allow_unver_obstructions,
diff3_cmd, preserved_exts,
- NULL, NULL,
ctx->conflict_func, ctx->conflict_baton,
svn_client__external_info_gatherer, &efb,
ctx->cancel_func, ctx->cancel_baton,
Modified: subversion/branches/performance/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/update.c?rev=999098&r1=999097&r2=999098&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/update.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/update.c Mon Sep 20 20:16:13 2010
@@ -45,49 +45,6 @@
/*** Code. ***/
-/* Context baton for file_fetcher below. */
-struct ff_baton
-{
- svn_client_ctx_t *ctx; /* client context used to open ra session */
- const char *repos_root; /* repository root URL */
- svn_ra_session_t *session; /* the secondary ra session itself */
- apr_pool_t *pool; /* the pool where the ra session is allocated */
-};
-
-
-/* Implementation of svn_wc_get_file_t. A feeble callback wrapper
- around svn_ra_get_file(), so that the update_editor can use it to
- fetch any file, any time. */
-static svn_error_t *
-file_fetcher(void *baton,
- const char *path,
- svn_revnum_t revision,
- svn_stream_t *stream,
- svn_revnum_t *fetched_rev,
- apr_hash_t **props,
- apr_pool_t *pool)
-{
- struct ff_baton *ffb = (struct ff_baton *)baton;
- const char *dirpath, *base_name, *session_url, *old_session_url;
-
- svn_relpath_split(&dirpath, &base_name, path, pool);
- session_url = svn_path_url_add_component2(ffb->repos_root,
- dirpath, pool);
-
- if (ffb->session)
- SVN_ERR(svn_client__ensure_ra_session_url(&old_session_url, ffb->session,
- session_url, ffb->pool));
- else
- SVN_ERR(svn_client__open_ra_session_internal(&(ffb->session), NULL,
- session_url, NULL, NULL,
- FALSE, TRUE,
- ffb->ctx, ffb->pool));
-
- return svn_ra_get_file(ffb->session, base_name, revision, stream,
- fetched_rev, props, pool);
-}
-
-
static svn_error_t *
update_internal(svn_revnum_t *result_rev,
const char *local_abspath,
@@ -98,7 +55,6 @@ update_internal(svn_revnum_t *result_rev
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -120,7 +76,6 @@ update_internal(svn_revnum_t *result_rev
svn_ra_session_t *ra_session;
const char *preserved_exts_str;
apr_array_header_t *preserved_exts;
- struct ff_baton *ffb;
svn_client__external_func_baton_t efb;
svn_boolean_t server_supports_depth;
svn_config_t *cfg = ctx->config ? apr_hash_get(ctx->config,
@@ -216,12 +171,6 @@ update_internal(svn_revnum_t *result_rev
a strict sense, however.) */
SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root, pool));
- /* Build a baton for the file-fetching callback. */
- ffb = apr_pcalloc(pool, sizeof(*ffb));
- ffb->ctx = ctx;
- ffb->repos_root = repos_root;
- ffb->pool = pool;
-
/* Build a baton for the externals-info-gatherer callback. */
efb.externals_new = apr_hash_make(pool);
efb.externals_old = apr_hash_make(pool);
@@ -235,7 +184,6 @@ update_internal(svn_revnum_t *result_rev
target, use_commit_times, depth,
depth_is_sticky, allow_unver_obstructions,
diff3_cmd, preserved_exts,
- file_fetcher, ffb,
ctx->conflict_func, ctx->conflict_baton,
svn_client__external_info_gatherer, &efb,
ctx->cancel_func, ctx->cancel_baton,
@@ -244,12 +192,8 @@ update_internal(svn_revnum_t *result_rev
/* Tell RA to do an update of URL+TARGET to REVISION; if we pass an
invalid revnum, that means RA will use the latest revision. */
- SVN_ERR(svn_ra_do_update2(ra_session,
- &reporter, &report_baton,
- revnum,
- target,
- depth,
- send_copyfrom_args,
+ SVN_ERR(svn_ra_do_update2(ra_session, &reporter, &report_baton,
+ revnum, target, depth, FALSE,
update_editor, update_edit_baton, pool));
SVN_ERR(svn_ra_has_capability(ra_session, &server_supports_depth,
@@ -321,7 +265,6 @@ svn_client__update_internal(svn_revnum_t
svn_boolean_t ignore_externals,
svn_boolean_t allow_unver_obstructions,
svn_boolean_t *timestamp_sleep,
- svn_boolean_t send_copyfrom_args,
svn_boolean_t innerupdate,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -343,8 +286,7 @@ svn_client__update_internal(svn_revnum_t
err = update_internal(result_rev, local_abspath, anchor_abspath,
revision, depth, depth_is_sticky,
ignore_externals, allow_unver_obstructions,
- timestamp_sleep, send_copyfrom_args,
- innerupdate, ctx, pool);
+ timestamp_sleep, innerupdate, ctx, pool);
err = svn_error_compose_create(
err,
@@ -398,7 +340,7 @@ svn_client_update3(apr_array_header_t **
revision, depth, depth_is_sticky,
ignore_externals,
allow_unver_obstructions,
- &sleep, TRUE, FALSE, ctx, subpool);
+ &sleep, FALSE, ctx, subpool);
if (err && err->apr_err != SVN_ERR_WC_NOT_WORKING_COPY)
{