You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2013/06/04 22:56:33 UTC
svn commit: r1489602 [1/3] - in /subversion/branches/move-tracking-1: ./
build/generator/ contrib/hook-scripts/ notes/
subversion/bindings/swig/perl/libsvn_swig_perl/
subversion/bindings/swig/perl/native/ subversion/bindings/swig/ruby/test/
subversion/...
Author: julianfoad
Date: Tue Jun 4 20:56:23 2013
New Revision: 1489602
URL: http://svn.apache.org/r1489602
Log:
On the merge-tracking-1 branch: catch up to trunk@1489600.
Added:
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/revprop-change-hook.py
- copied unchanged from r1489593, subversion/trunk/tools/server-side/svnpubsub/revprop-change-hook.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/svnpubsub/util.py
- copied unchanged from r1489593, subversion/trunk/tools/server-side/svnpubsub/svnpubsub/util.py
Modified:
subversion/branches/move-tracking-1/ (props changed)
subversion/branches/move-tracking-1/CHANGES
subversion/branches/move-tracking-1/INSTALL
subversion/branches/move-tracking-1/build/generator/gen_base.py
subversion/branches/move-tracking-1/build/generator/gen_win.py
subversion/branches/move-tracking-1/configure.ac
subversion/branches/move-tracking-1/contrib/hook-scripts/check-mime-type.pl
subversion/branches/move-tracking-1/contrib/hook-scripts/svn-keyword-check.pl
subversion/branches/move-tracking-1/get-deps.sh
subversion/branches/move-tracking-1/notes/dump-load-format.txt
subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Client.pm
subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Core.pm
subversion/branches/move-tracking-1/subversion/bindings/swig/ruby/test/windows_util.rb
subversion/branches/move-tracking-1/subversion/include/private/svn_ra_svn_private.h
subversion/branches/move-tracking-1/subversion/include/svn_compat.h
subversion/branches/move-tracking-1/subversion/include/svn_version.h
subversion/branches/move-tracking-1/subversion/libsvn_client/merge.c
subversion/branches/move-tracking-1/subversion/libsvn_delta/text_delta.c
subversion/branches/move-tracking-1/subversion/libsvn_diff/diff_file.c
subversion/branches/move-tracking-1/subversion/libsvn_diff/parse-diff.c
subversion/branches/move-tracking-1/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/commit.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/locks.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/util.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_svn/client.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_svn/marshal.c
subversion/branches/move-tracking-1/subversion/libsvn_ra_svn/protocol
subversion/branches/move-tracking-1/subversion/libsvn_repos/reporter.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/adler32.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/auth.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/compat.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/config_file.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/dirent_uri.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/eol.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/io.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/ssl_client_cert_providers.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/ssl_server_trust_providers.c
subversion/branches/move-tracking-1/subversion/libsvn_subr/subst.c
subversion/branches/move-tracking-1/subversion/libsvn_wc/tree_conflicts.c
subversion/branches/move-tracking-1/subversion/libsvn_wc/update_editor.c
subversion/branches/move-tracking-1/subversion/mod_dav_svn/activity.c
subversion/branches/move-tracking-1/subversion/mod_dav_svn/lock.c
subversion/branches/move-tracking-1/subversion/svn/file-merge.c
subversion/branches/move-tracking-1/subversion/svnadmin/svnadmin.c
subversion/branches/move-tracking-1/subversion/svnserve/serve.c
subversion/branches/move-tracking-1/subversion/tests/cmdline/lock_tests.py
subversion/branches/move-tracking-1/subversion/tests/cmdline/svntest/sandbox.py
subversion/branches/move-tracking-1/subversion/tests/libsvn_diff/diff-diff3-test.c
subversion/branches/move-tracking-1/subversion/tests/libsvn_fs/fs-test.c
subversion/branches/move-tracking-1/subversion/tests/libsvn_subr/subst_translate-test.c
subversion/branches/move-tracking-1/tools/dev/build-svn-deps-win.pl
subversion/branches/move-tracking-1/tools/dist/backport.pl
subversion/branches/move-tracking-1/tools/dist/make-deps-tarball.sh (contents, props changed)
subversion/branches/move-tracking-1/tools/dist/release.py
subversion/branches/move-tracking-1/tools/hook-scripts/mailer/mailer.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/commit-hook.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/svnpubsub/client.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/svnpubsub/server.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/svnwcsub.py
subversion/branches/move-tracking-1/tools/server-side/svnpubsub/watcher.py
Propchange: subversion/branches/move-tracking-1/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1485307-1489600
Modified: subversion/branches/move-tracking-1/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/CHANGES?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/CHANGES (original)
+++ subversion/branches/move-tracking-1/CHANGES Tue Jun 4 20:56:23 2013
@@ -25,7 +25,7 @@ http://svn.apache.org/repos/asf/subversi
Version 1.8.0
-(14 Jun 2013, from /branches/1.8.x)
+(18 Jun 2013, from /branches/1.8.x)
http://svn.apache.org/repos/asf/subversion/tags/1.8.0
User-visible changes:
@@ -145,6 +145,9 @@ http://svn.apache.org/repos/asf/subversi
* txn name now reported to post-commit hooks (r1240856)
* support for server-side keyword expansion in mod_dav_svn (r1466055)
* FSFS now able to cache revision properties (r1326307)
+ * FSFS cache for changed-paths increases 'svn log' performance (r1378358)
+ * FSFS cache mergeinfo requested during 'log -g' (r1395439)
+ * many FSFS caching improvements (r1390435, r1390447)
* directory and property deltification option in FSFS (issue #4084)
* fine-grained control deltification behavior via fsfs.conf (r1311476)
* FSFS de-duplication ("rep sharing") now works within a revision (r1397773)
@@ -160,7 +163,6 @@ http://svn.apache.org/repos/asf/subversi
* svnserve now logs explicit path and reason for authz failures (r1446542)
* validate offsets from rep-cache to prevent FSFS corruption (issue #4277)
* new AuthzSVNGroupsFile option to store authz groups separately (r1438407)
- * FSFS revprop packing support (r1358667 et al)
* new 'SVNAllowBulkUpdates prefer' option for mod_dav_svn (r1417642, et al)
* new 'SVNMasterVersion' option for mod_dav_svn (r1398962)
* added virtual-host support to 'svnserve' (r1401296)
@@ -175,11 +177,8 @@ http://svn.apache.org/repos/asf/subversi
* mod_dav_svn now advertises supported POST types (r1375123)
* mod_dav_svn can create transaction with inline txnprops (r1375167)
* run start-commit hook after transaction creation (r1376201)
- * fsfs cache for changed-paths increases 'svn log' performance (r1378358)
* avoid byte-for-byte comparison where it can be avoided (r1390641)
- * cache mergeinfo requested during 'log -g' (r1395439)
* various server-side performance improvements for 'log -g' (r1395442 et al)
- * many FSFS caching improvements (r1390435, r1390447)
* allow up to 10Gbit throughput with svnserve (r1391788)
* install mod_dontdothat correctly (r1454450)
* svnadmin verify can now verify transactions (r1462353)
@@ -366,6 +365,48 @@ http://svn.apache.org/repos/asf/subversi
* fix some reference counting bugs in swig-py bindings (r1464899, r1466524)
+Version 1.7.11
+(?? ??? 2013, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.11
+
+ User-visible changes:
+ - Other tool improvements and bugfixes:
+ * fix argument processing in contrib hook scripts (r1485350)
+
+
+Version 1.7.10
+(30 May 2013, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.10
+
+ User-visible changes:
+ - Client-side bugfixes:
+ * fix 'svn revert' "no such table: revert_list" spurious error (issue #4168)
+ * fix 'svn diff' doesn't show some locally added files (issue #3797)
+ * fix changelist filtering when --changelist values aren't UTF8 (r1475724)
+ * fix 'svn diff --git' shows wrong copyfrom (issue #4294)
+ * fix 'svn diff -x-w' shows wrong changes (issues #4133 and #4270, r1427278)
+ * fix 'svn blame' sometimes shows every line as modified (issue #4034)
+ * fix regression in 'svn status -u' output for externals (r1434750)
+ * fix file permissions change on commit of file with keywords (issue #4331)
+ * improve some fatal error messages (r1465975)
+ * fix externals not removed when working copy is made shallow (issue #3741)
+
+ - Server-side bugfixes:
+ * fix FSFS repository corruption due to newline in filename (issue #4340)
+ * fix svnserve exiting when a client connection is aborted (r1482759)
+ * fix svnserve memory use after clear (issue #4365)
+ * fix repository corruption on power/disk failure on Windows (r1483781)
+
+ Developer-visible changes
+ - General:
+ * make get-deps.sh compatible with Solaris /bin/sh (r1451678)
+ * fix infinite recursion bug in get-deps.sh (r1421541, r1424977)
+ * fix uninitialised output parameter of svn_fs_commit_txn() (r1461743)
+
+ - Bindings:
+ * fix JavaHL thread-safety bug (r1476359)
+
+
Version 1.7.9
(04 Apr 2013, from /branches/1.7.x)
http://svn.apache.org/repos/asf/subversion/tags/1.7.9
@@ -907,6 +948,23 @@ the 1.6 release: http://subversion.apac
* fix type mapping of svn_txdelta_window_t in python bindings (issue #3688)
+Version 1.6.23
+(30 May 2013, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.23
+
+ User-visible changes
+ - Server-side bugfixes:
+ * fix FSFS repository corruption due to newline in filename (issue #4340)
+ * fix svnserve exiting when a client connection is aborted (r1482759)
+
+ - Other tool improvements and bugfixes:
+ * fix argument processing in contrib hook scripts (r1485350)
+
+
+Version 1.6.22
+(Not released, see changes for 1.6.23.)
+
+
Version 1.6.21
(04 Apr 2013, from /branches/1.6.x)
http://svn.apache.org/repos/asf/subversion/tags/1.6.21
Modified: subversion/branches/move-tracking-1/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/INSTALL?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/INSTALL (original)
+++ subversion/branches/move-tracking-1/INSTALL Tue Jun 4 20:56:23 2013
@@ -306,7 +306,7 @@ I. INTRODUCTION
newer. The autogen.sh script knows about that.
- 5. Serf library 1.2 or newer (http://code.google.com/p/serf/) (OPTIONAL)
+ 5. Serf library 1.2.1 or newer (OPTIONAL)
If you want your client to be able to speak to an Apache
server (via a http:// or https:// URL), you must link against
@@ -320,6 +320,9 @@ I. INTRODUCTION
instead.
+ Serf can be obtained via your system's package distribution
+ system or directly from http://code.google.com/p/serf/.
+
For more information on serf and Subversion's ra_serf, see the file
subversion/libsvn_ra_serf/README.
Modified: subversion/branches/move-tracking-1/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/build/generator/gen_base.py?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/build/generator/gen_base.py (original)
+++ subversion/branches/move-tracking-1/build/generator/gen_base.py Tue Jun 4 20:56:23 2013
@@ -239,8 +239,7 @@ class GeneratorBase:
except: pass
os.rename(new_hdrfile, hdrfile)
- @staticmethod
- def write_errno_table():
+ def write_errno_table(self):
# ### We generate errorcode.inc at autogen.sh time (here!).
# ###
# ### Currently it's only used by maintainer-mode builds. If this
@@ -252,23 +251,20 @@ class GeneratorBase:
fd = open('subversion/libsvn_subr/errorcode.inc', 'w')
fd.write('/* This file was generated by build/generator/gen_base.py */\n\n')
- ## write errno codes.
- fd.write('static struct {\n'
- ' int errcode;\n'
- ' const char *errname;\n'
- '} svn__errno[] = {\n');
- for num, val in sorted(errno.errorcode.items()):
- fd.write(' { %d, "%s" },\n' % (num, val))
- # fd.seek(-2, os.SEEK_CUR); fd.write('\n');
- fd.write('};\n')
+ def write_struct(name, codes):
+ fd.write('static struct {\n'
+ ' int errcode;\n'
+ ' const char *errname;\n'
+ '} %s[] = {\n' % name)
+ for num, val in sorted(codes):
+ fd.write(' { %d, "%s" },\n' % (num, val))
+ # fd.seek(-2, os.SEEK_CUR); fd.write('\n');
+ fd.write('};\n')
+ write_struct('svn__errno', errno.errorcode.items())
fd.write('\n')
- ## write apr error codes.
- fd.write('static struct {\n'
- ' int errcode;\n'
- ' const char *errname;\n'
- '} svn__apr_errno[] = {\n');
+ # Fetch and write apr_errno.h codes.
aprerr = []
for line in open(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),
'tools', 'dev', 'aprerr.txt')):
@@ -277,16 +273,16 @@ class GeneratorBase:
continue
key, _, val = line.split()
aprerr += [(int(val), key)]
- for num, val in sorted(aprerr):
- fd.write(' { %d, "%s" },\n' % (num, val))
- # fd.seek(-2, os.SEEK_CUR); fd.write('\n');
- fd.write('};\n')
+ write_struct('svn__apr_errno', aprerr)
## sanity check
intersection = set(errno.errorcode.keys()) & set(dict(aprerr).keys())
- if intersection:
+ if self.errno_filter(intersection):
print("WARNING: errno intersects APR error codes: %r" % intersection)
+ def errno_filter(self, codes):
+ return codes
+
class DependencyGraph:
"""Record dependencies between build items.
@@ -471,10 +467,9 @@ class TargetLinked(Target):
# the specified install area depends upon this target
self.gen_obj.graph.add(DT_INSTALL, self.install, self)
- sources = sorted(_collect_paths(self.sources or '*.c' or '*.cpp', self.path))
+ sources = sorted(_collect_paths(self.sources, self.path))
- for srcs, reldir in sources:
- for src in srcs.split(" "):
+ for src, reldir in sources:
if glob.glob(src):
if src[-2:] == '.c':
objname = src[:-2] + self.objext
@@ -954,10 +949,13 @@ def _collect_paths(pats, path=None):
path (string), if specified, is a path that will be prepended to each
glob pattern before it is evaluated
- If path is none the return value is a list of filenames, otherwise
+ If path is None the return value is a list of filenames, otherwise
the return value is a list of 2-tuples. The first element in each tuple
is a matching filename and the second element is the portion of the
glob pattern which matched the file before its last forward slash (/)
+
+ If no files are found matching a pattern, then include the pattern itself
+ as a filename in the results.
"""
result = [ ]
for base_pat in pats.split():
Modified: subversion/branches/move-tracking-1/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/build/generator/gen_win.py?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/build/generator/gen_win.py (original)
+++ subversion/branches/move-tracking-1/build/generator/gen_win.py Tue Jun 4 20:56:23 2013
@@ -337,6 +337,11 @@ class WinGeneratorBase(GeneratorBase):
else:
print("%s not found; skipping SWIG file generation..." % self.swig_exe)
+ def errno_filter(self, codes):
+ "Callback for gen_base.write_errno_table()."
+ # Filter out apr_errno.h SOC* codes, which alias the windows API names.
+ return set(filter(lambda code: not (10000 <= code <= 10100), codes))
+
def find_rootpath(self):
"Gets the root path as understand by the project system"
return os.path.relpath('.', self.projfilesdir) + "\\"
@@ -1443,7 +1448,7 @@ class WinGeneratorBase(GeneratorBase):
def _find_serf(self):
"Check if serf and its dependencies are available"
- minimal_serf_version = (1, 2, 0)
+ minimal_serf_version = (1, 2, 1)
self.serf_lib = None
if self.serf_path and os.path.exists(self.serf_path):
if self.openssl_path and os.path.exists(self.openssl_path):
Modified: subversion/branches/move-tracking-1/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/configure.ac?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/configure.ac (original)
+++ subversion/branches/move-tracking-1/configure.ac Tue Jun 4 20:56:23 2013
@@ -125,7 +125,7 @@ dnl Search for pkg-config
AC_PATH_PROG(PKG_CONFIG, pkg-config)
dnl Search for serf
-SVN_LIB_SERF(1,2,0)
+SVN_LIB_SERF(1,2,1)
if test "$svn_lib_serf" = "yes"; then
AC_DEFINE([SVN_HAVE_SERF], 1,
Modified: subversion/branches/move-tracking-1/contrib/hook-scripts/check-mime-type.pl
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/contrib/hook-scripts/check-mime-type.pl?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/contrib/hook-scripts/check-mime-type.pl (original)
+++ subversion/branches/move-tracking-1/contrib/hook-scripts/check-mime-type.pl Tue Jun 4 20:56:23 2013
@@ -120,7 +120,7 @@ foreach my $path ( @files_added )
# Parse the complete list of property values of the file $path to extract
# the mime-type and eol-style
foreach my $prop (&read_from_process($svnlook, 'proplist', $repos, '-t',
- $txn, '--verbose', $path))
+ $txn, '--verbose', '--', $path))
{
if ($prop =~ /^\s*svn:mime-type : (\S+)/)
{
@@ -187,7 +187,7 @@ sub safe_read_from_pipe
croak "$0: safe_read_from_pipe passed no arguments.\n";
}
print "Running @_\n";
- my $pid = open(SAFE_READ, '-|');
+ my $pid = open(SAFE_READ, '-|', @_);
unless (defined $pid)
{
die "$0: cannot fork: $!\n";
Modified: subversion/branches/move-tracking-1/contrib/hook-scripts/svn-keyword-check.pl
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/contrib/hook-scripts/svn-keyword-check.pl?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/contrib/hook-scripts/svn-keyword-check.pl (original)
+++ subversion/branches/move-tracking-1/contrib/hook-scripts/svn-keyword-check.pl Tue Jun 4 20:56:23 2013
@@ -141,7 +141,7 @@ sub check {
return 1;
} else {
my @keywords = get_svnkeywords($file);
- my $fh = _pipe("$svnlook cat $flag $value $repos $file");
+ my $fh = _pipe($svnlook, qw/cat/, $flag, $value, $repos, '--', $file);
while (my $line = <$fh>) {
foreach my $keyword (@keywords) {
if ($line =~ m/$keyword/) {
@@ -168,7 +168,7 @@ sub file_is_binary {
return 0;
}
if (has_svn_property($file, "svn:mime-type")) {
- my ($mimetype) = read_from_process("$svnlook propget $flag $value $repos svn:mime-type $file");
+ my ($mimetype) = read_from_process($svnlook, qw/propget/, $flag, $value, $repos, 'svn:mime-type', '--', $file);
chomp($mimetype);
$mimetype =~ s/^\s*(.*)/$1/;
if ($mimetype =~ m/^text\//) {
@@ -186,7 +186,7 @@ sub file_is_binary {
# Return a list of svn:keywords on a file
sub get_svnkeywords {
my $file = shift;
- my @lines = read_from_process("$svnlook propget $flag $value $repos svn:keywords $file");
+ my @lines = read_from_process($svnlook, qw/propget/, $flag, $value, $repos, 'svn:keywords', '--', $file);
my @returnlines;
foreach my $line (@lines) {
$line =~ s/\s+/ /;
@@ -199,7 +199,7 @@ sub get_svnkeywords {
sub has_svn_property {
my $file = shift;
my $keyword = shift;
- my @proplist = read_from_process("$svnlook proplist $flag $value $repos $file");
+ my @proplist = read_from_process($svnlook, qw/proplist/, $flag, $value, $repos, '--', $file);
foreach my $prop (@proplist) {
chomp($prop);
if ($prop =~ m/\b$keyword\b/) {
@@ -241,7 +241,7 @@ sub safe_read_from_pipe {
# Return the filehandle as a glob so we can loop over it elsewhere.
sub _pipe {
local *SAFE_READ;
- my $pid = open(SAFE_READ, '-|');
+ my $pid = open(SAFE_READ, '-|', @_);
unless (defined $pid) {
die "$0: cannot fork: $!\n";
}
Modified: subversion/branches/move-tracking-1/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/get-deps.sh?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/get-deps.sh (original)
+++ subversion/branches/move-tracking-1/get-deps.sh Tue Jun 4 20:56:23 2013
@@ -31,19 +31,26 @@
# features already used in the file. Reviewing the history of changes
# may be useful as well.
-APR=apr-1.4.6
-APR_UTIL=apr-util-1.5.1
-SERF=serf-1.2.0
-ZLIB=zlib-1.2.8
-SQLITE_VERSION=3.7.15.1
+APR_VERSION=${APR_VERSION:-"1.4.6"}
+APU_VERSION=${APU_VERSION:-"1.5.1"}
+SERF_VERSION=${SERF_VERSION:-"1.2.1"}
+ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
+SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
+GTEST_VERSION=${GTEST_VERSION:-"1.6.0"}
+HTTPD_VERSION=${HTTPD_VERSION:-"2.4.3"}
+APR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"}
+
+APR=apr-${APR_VERSION}
+APR_UTIL=apr-util-${APU_VERSION}
+SERF=serf-${SERF_VERSION}
+ZLIB=zlib-${ZLIB_VERSION}
SQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'`
SQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST`
-GTEST_VERSION=1.6.0
GTEST=gtest-${GTEST_VERSION}
GTEST_URL=http://googletest.googlecode.com/files/
-HTTPD=httpd-2.4.3
-APR_ICONV=apr-iconv-1.2.1
+HTTPD=httpd-${HTTPD_VERSION}
+APR_ICONV=apr-iconv-${APR_ICONV_VERSION}
BASEDIR=`pwd`
TEMPDIR=$BASEDIR/temp
Modified: subversion/branches/move-tracking-1/notes/dump-load-format.txt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/notes/dump-load-format.txt?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/notes/dump-load-format.txt (original)
+++ subversion/branches/move-tracking-1/notes/dump-load-format.txt Tue Jun 4 20:56:23 2013
@@ -215,7 +215,7 @@ is the payload of program source code, d
that a version control system actually manages.
A Node record describes a change in properties, the addition or deletion
-of a flow, or a change in content. It nust do at least one of these things,
+of a flow, or a change in content. It must do at least one of these things,
otherwise it would be a no-op and omitted.
When no copyfrom is present, and the action isn't an add or copy, then
@@ -341,7 +341,7 @@ to the same directory.
The properties section of a Revision record consists of some subset
of the three reserved per-commit properties: svn:author, svn:date,
-and svn.log. These properties do not persist to later revisions.
+and svn:log. These properties do not persist to later revisions.
The key thing to know about Node properties is that they are
persistent, once set, until modified by a future property
@@ -485,8 +485,10 @@ that (1) properties with the same value
the flow are not printed, and (2) deleted properties will be written
out as
+-------------------------------------------------------------------
D <name length>
<name>
+-------------------------------------------------------------------
just as a regular property is printed, but with the "K " changed to a
"D " and with no value part.
Modified: subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Tue Jun 4 20:56:23 2013
@@ -29,6 +29,10 @@
#include <perl.h>
#include <XSUB.h>
+/* Perl defines a _ macro, but SVN uses it for translations.
+ * So undefine _ after including the Perl headers. */
+#undef _
+
#include <stdarg.h>
#ifdef WIN32
#include <io.h>
Modified: subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/move-tracking-1/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Tue Jun 4 20:56:23 2013
@@ -29,6 +29,10 @@
#include <perl.h>
#include <XSUB.h>
+/* Perl defines a _ macro, but SVN uses it for translations.
+ * So undefine _ after including the Perl headers. */
+#undef _
+
#include <apr.h>
#include <apr_pools.h>
#include <apr_strings.h>
Modified: subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Client.pm
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Client.pm?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Client.pm (original)
+++ subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Client.pm Tue Jun 4 20:56:23 2013
@@ -8,25 +8,26 @@ package SVN::Client;
my @_all_fns;
BEGIN {
@_all_fns =
- qw( version diff_summarize_dup create_context checkout3
- checkout2 checkout update4 update3 update2 update switch2 switch
- add4 add3 add2 add mkdir4 mkdir3 mkdir2 mkdir delete3 delete2
- delete import3 import2 import commit4 commit3 commit2
- commit status4 status3 status2 status log5 log4 log3 log2 log
- blame4 blame3 blame2 blame diff4 diff3 diff2 diff diff_peg4
- diff_peg3 diff_peg2 diff_peg diff_summarize2
- diff_summarize diff_summarize_peg2 diff_summarize_peg
- merge3 merge2 merge merge_peg3 merge_peg2 merge_peg
- cleanup relocate revert2 revert resolve resolved copy4
- copy3 copy2 copy move5 move4 move3 move2 move propset3
- propset2 propset revprop_set propget3 propget2
- propget revprop_get proplist3 proplist2 proplist
- revprop_list export4 export3 export2 export list2 list
- ls3 ls2 ls cat2 cat add_to_changelist
- remove_from_changelist lock unlock info2 info
- url_from_path uuid_from_url uuid_from_path open_ra_session
- invoke_blame_receiver2 invoke_blame_receiver
- invoke_diff_summarize_func
+ qw( add add2 add3 add4 add_to_changelist blame blame2 blame3 blame4
+ cat cat2 checkout checkout2 checkout3 cleanup
+ commit commit2 commit3 commit4 copy copy2 copy3 copy4
+ create_context delete delete2 delete3 diff diff2 diff3 diff4
+ diff_peg diff_peg2 diff_peg3 diff_peg4
+ diff_summarize diff_summarize2 diff_summarize_dup
+ diff_summarize_peg diff_summarize_peg2
+ export export2 export3 export4 import import2 import3
+ info info2 invoke_blame_receiver invoke_blame_receiver2
+ invoke_diff_summarize_func list list2 lock
+ log log2 log3 log4 log5 ls ls2 ls3
+ merge merge2 merge3 merge_peg merge_peg2 merge_peg3
+ mkdir mkdir2 mkdir3 mkdir4 move move2 move3 move4 move5
+ open_ra_session propget propget2 propget3
+ proplist proplist2 proplist3 propset propset2 propset3
+ relocate remove_from_changelist resolve resolved
+ revert revert2 revprop_get revprop_list revprop_set
+ status status2 status3 status4 switch switch2
+ unlock update update2 update3 update4
+ url_from_path uuid_from_path uuid_from_url version
);
require SVN::Base;
@@ -40,21 +41,18 @@ SVN::Client - Subversion client function
=head1 SYNOPSIS
use SVN::Client;
- my $ctx = new SVN::Client(
- auth => [SVN::Client::get_simple_provider(),
- SVN::Client::get_simple_prompt_provider(\&simple_prompt,2),
- SVN::Client::get_username_provider()]
- );
+ my $client = new SVN::Client(
+ auth => [
+ SVN::Client::get_simple_provider(),
+ SVN::Client::get_simple_prompt_provider(\&simple_prompt,2),
+ SVN::Client::get_username_provider()
+ ]);
- $ctx->cat(\*STDOUT, 'http://svn.apache.org/repos/asf/subversion/trunk/README',
- 'HEAD');
+ $client->cat(\*STDOUT,
+ 'http://svn.apache.org/repos/asf/subversion/trunk/README', 'HEAD');
sub simple_prompt {
- my $cred = shift;
- my $realm = shift;
- my $default_username = shift;
- my $may_save = shift;
- my $pool = shift;
+ my ($cred, $realm, $default_username, $may_save, $pool) = @_;
print "Enter authentication info for realm: $realm\n";
print "Username: ";
@@ -81,8 +79,8 @@ The Perl method calls take a SVN::Client
This allows method call invocation of the methods to be possible. For
example, the following are equivalent:
- SVN::Client::add($ctx,$path, $recursive, $pool);
- $ctx->add($path, $recursive, $pool);
+ SVN::Client::add($client,$path, $recursive, $pool);
+ $client->add($path, $recursive, $pool);
Many of the C API calls also take a apr_pool_t pointer as their last
argument. The Perl bindings generally deal with this for you and
@@ -103,7 +101,7 @@ the rules below or will be noted otherwi
=over 4
-=item $ctx
+=item $client
An SVN::Client object that you get from the constructor.
@@ -163,7 +161,7 @@ The following methods are available:
=over 4
-=item $ctx = SVN::Client-E<gt>new( %options );
+=item $client = SVN::Client-E<gt>new( %options );
This class method constructs a new C<SVN::Client> object and returns
a reference to it.
@@ -252,21 +250,21 @@ sub new
return $self;
}
-=item $ctx-E<gt>add($path, $recursive, $pool);
+=item $client-E<gt>add($path, $recursive, $pool);
-Similar to $ctx-E<gt>add2(), but with $force always set to FALSE.
+Similar to $client-E<gt>add2(), but with $force always set to FALSE.
-=item $ctx-E<gt>add2($path, $recursive, $force, $ctx, $pool);
+=item $client-E<gt>add2($path, $recursive, $force, $pool);
-Similar to $ctx-E<gt>add3(), but with $no_ignore always set to FALSE.
+Similar to $client-E<gt>add3(), but with $no_ignore always set to FALSE.
-=item $ctx-E<gt>add3($path, $recursive, $force, $no_ignore, $pool);
+=item $client-E<gt>add3($path, $recursive, $force, $no_ignore, $pool);
-Similar to $ctx-E<gt>add4(), but with $add_parents always set to FALSE and
+Similar to $client-E<gt>add4(), but with $add_parents always set to FALSE and
$depth set according to $recursive; if TRUE, then depth is
$SVN::Depth::infinity, if FALSE, then $SVN::Depth::empty.
-=item $ctx-E<gt>add4($path, $depth, $force, $no_ignore, $add_parents, $pool);
+=item $client-E<gt>add4($path, $depth, $force, $no_ignore, $add_parents, $pool);
Schedule a working copy $path for addition to the repository.
@@ -289,7 +287,7 @@ Calls the notify callback for each added
If $no_ignore is FALSE, don't add any file or directory (or recurse into any
directory) that is unversioned and found by recursion (as opposed to being the
explicit target $path) and whose name matches the svn:ignore property on its
-parent directory or the global-ignores list in $ctx->config. If $no_ignore is
+parent directory or the global-ignores list in $client->config. If $no_ignore is
TRUE, do include such files and directories. (Note that an svn:ignore property
can influence this behaviour only when recursing into an already versioned
directory with $force).
@@ -300,11 +298,11 @@ found return $SVN::Error::NO_VERSIONED_P
Important: this is a B<scheduling> operation. No changes will happen
to the repository until a commit occurs. This scheduling can be
-removed with $ctx-E<gt>revert().
+removed with $client-E<gt>revert().
No return.
-=item $ctx-E<gt>blame($target, $start, $end, \&receiver, $pool);
+=item $client-E<gt>blame($target, $start, $end, \&receiver, $pool);
Invoke \&receiver subroutine on each line-blame item associated with revision
$end of $target, using $start as the default source of all blame.
@@ -324,7 +322,7 @@ The blame receiver subroutine can return
to return an error. All other returns will be ignored.
You can create an svn_error_t object with SVN::Error::create().
-=item $ctx-E<gt>cat(\*FILEHANDLE, $target, $revision, $pool);
+=item $client-E<gt>cat(\*FILEHANDLE, $target, $revision, $pool);
Outputs the content of the file identified by $target and $revision to the
FILEHANDLE. FILEHANDLE is a reference to a filehandle.
@@ -333,17 +331,17 @@ If $target is not a local path and if $r
other kind that requires a local path), then an error will be raised,
because the desired revision can not be determined.
-=item $ctx-E<gt>checkout($url, $path, $revision, $recursive, $pool);
+=item $client-E<gt>checkout($url, $path, $revision, $recursive, $pool);
-Similar to $ctx-E<gt>checkout2(), but with $peg_revision always set to undef (unspecified) and $ignore_externals always set to FALSE.
+Similar to $client-E<gt>checkout2(), but with $peg_revision always set to undef (unspecified) and $ignore_externals always set to FALSE.
-=item $ctx-E<gt>checkout2($url, $path, $peg_revision, $revision, $recursive, $ignore_externals, $pool);
+=item $client-E<gt>checkout2($url, $path, $peg_revision, $revision, $recursive, $ignore_externals, $pool);
-Similar to $ctx-E<gt>checkout3(), but with $allow_unver_obstructions always set
+Similar to $client-E<gt>checkout3(), but with $allow_unver_obstructions always set
to FALSE, and $depth set according to $recurse: if $recurse is TRUE, $depth is
$SVN::Depth::infinity, if $recurse is FALSE, set $depth to $SVN::Depth::files.
-=item $ctx-E<gt>checkout3($url, $path, $preg_revision, $revision, $depth, $ignore_externals, $allow_unver_obstructions, $pool);
+=item $client-E<gt>checkout3($url, $path, $preg_revision, $revision, $depth, $ignore_externals, $allow_unver_obstructions, $pool);
Checkout a working copy of $url at $revision using $path as the root directory
of the newly checked out working copy.
@@ -370,12 +368,12 @@ obstructing items.
Returns the value of the revision actually checked out of the repository.
-=item $ctx-E<gt>cleanup($dir, $pool);
+=item $client-E<gt>cleanup($dir, $pool);
Recursively cleanup a working copy directory, $dir, finishing any incomplete
operations, removing lockfiles, etc.
-=item $ctx-E<gt>commit($targets, $nonrecursive, $pool);
+=item $client-E<gt>commit($targets, $nonrecursive, $pool);
Commit files or directories referenced by target. Will use the log_msg
callback to obtain the log message for the commit.
@@ -397,7 +395,7 @@ Returns a svn_client_commit_info_t objec
commit information object is $SVN::Core::INVALID_REVNUM and no error was
raised, then the commit was a no-op; nothing needed to be committed.
-=item $ctx-E<gt>copy($src_target, $src_revision, $dst_target, $pool);
+=item $client-E<gt>copy($src_target, $src_revision, $dst_target, $pool);
Copies $src_target to $dst_target.
@@ -412,15 +410,15 @@ to the repository. The log_msg callback
log message. If the commit succeeds, return a svn_client_commit_info_t
object.
-If $dst_target is not a URL, then this is just a variant of $ctx-E<gt>add(),
+If $dst_target is not a URL, then this is just a variant of $client-E<gt>add(),
where the $dst_path items are scheduled for addition as copies. No changes
will happen to the repository until a commit occurs. This scheduling can be
-removed with $ctx-E<gt>revert(). undef will be returned in this case.
+removed with $client-E<gt>revert(). undef will be returned in this case.
Calls the notify callback for each item added at the new location, passing
the new, relative path of the added item.
-=item $ctx-E<gt>delete($targets, $force, $pool);
+=item $client-E<gt>delete($targets, $force, $pool);
Delete items from a repository or working copy.
@@ -433,7 +431,7 @@ repository.
Else, schedule the working copy paths in $targets for removal from the
repository. Each path's parent must be under revision control. This is
just a B<scheduling> operation. No changes will happen to the repository
-until a commit occurs. This scheduling can be removed with $ctx-E<gt>revert().
+until a commit occurs. This scheduling can be removed with $client-E<gt>revert().
If a path is a file it is immediately removed from the working copy. If
the path is a directory it will remain in the working copy but all the files,
and all unversioned items it contains will be removed. If $force is not set
@@ -445,7 +443,7 @@ the deleted item.
Has no return.
-=item $ctx-E<gt>diff($diff_options, $target1, $revision1, $target2, $revision2, $recursive, $ignore_ancestry, $no_diff_deleted, $outfile, $errfile, $pool);
+=item $client-E<gt>diff($diff_options, $target1, $revision1, $target2, $revision2, $recursive, $ignore_ancestry, $no_diff_deleted, $outfile, $errfile, $pool);
Produces diff output which describes the delta between $target1 at
$revision1 and $target2 at $revision2. They both must represent the same
@@ -469,7 +467,7 @@ pass an empty array to return a unified
Has no return.
-=item $ctx-E<gt>diff_summarize($target1, $revision1, $target2, $revision2, $recursive, $ignore_ancestry, \&summarize_func, $pool);
+=item $client-E<gt>diff_summarize($target1, $revision1, $target2, $revision2, $recursive, $ignore_ancestry, \&summarize_func, $pool);
Produce a diff summary which lists the changed items between $target1
at $revision1 and $target2 at $revision2 without creating text deltas.
@@ -486,7 +484,7 @@ See diff() for a description of the othe
Has no return.
-=item $ctx-E<gt>export($from, $to, $revision, $force, $pool);
+=item $client-E<gt>export($from, $to, $revision, $force, $pool);
Export the contents of either a subversion repository or a subversion
working copy into a 'clean' directory (meaning a directory with no
@@ -506,7 +504,7 @@ The notify callback will be called for t
Returns the value of the revision actually exported or
$SVN::Core::INVALID_REVNUM for local exports.
-=item $ctx-E<gt>import($path, $url, $nonrecursive, $pool);
+=item $client-E<gt>import($path, $url, $nonrecursive, $pool);
Import file or directory $path into repository directory $url at head.
@@ -534,7 +532,39 @@ one is needed.
Returns a svn_client_commit_info_t object.
-=item $ctx-E<gt>log($targets, $start, $end, $discover_changed_paths, $strict_node_history, \&log_receiver, $pool);
+=item $client-E<gt>info($path_or_url, $peg_revision, $revision, \&receiver, $recurse);
+
+Invokes \&receiver passing it information about $path_or_url for $revision.
+The information returned is system-generated metadata, not the sort of
+"property" metadata created by users. For methods available on the object
+passed to \&receiver, B<see svn_info_t>.
+
+If both revision arguments are either svn_opt_revision_unspecified or NULL,
+then information will be pulled solely from the working copy; no network
+connections will be made.
+
+Otherwise, information will be pulled from a repository. The actual node
+revision selected is determined by the $path_or_url as it exists in
+$peg_revision. If $peg_revision is undef, then it defaults to HEAD for URLs
+or WORKING for WC targets.
+
+If $path_or_url is not a local path, then if $revision is PREV (or some other
+kind that requires a local path), an error will be returned, because the
+desired revision cannot be determined.
+
+Uses the authentication baton cached in ctx to authenticate against the
+repository.
+
+If $recurse is true (and $path_or_url is a directory) this will be a recursive
+operation, invoking $receiver on each child.
+
+ my $receiver = sub {
+ my( $path, $info, $pool ) = @_;
+ print "Current revision of $path is ", $info->rev, "\n";
+ };
+ $client->info( 'foo/bar.c', undef, 'WORKING', $receiver, 0 );
+
+=item $client-E<gt>log($targets, $start, $end, $discover_changed_paths, $strict_node_history, \&log_receiver, $pool);
Invoke the log_receiver subroutine on each log_message from $start to $end in
turn, inclusive (but will never invoke receiver on a given log message more
@@ -577,7 +607,7 @@ If $changed_paths is defined it referenc
every path committed in $revision; the values are svn_log_changed_path_t
objects.
-=item $ctx-E<gt>ls($target, $revision, $recursive, $pool);
+=item $client-E<gt>ls($target, $revision, $recursive, $pool);
Returns a hash of svn_dirent_t objects for $target at $revision.
@@ -589,7 +619,7 @@ If $target is a file only return an entr
If $target is non-existent, raises the $SVN::Error::FS_NOT_FOUND
error.
-=item $ctx-E<gt>merge($src1, $rev1, $src2, $rev2, $target_wcpath, $recursive, $ignore_ancestry, $force, $dry_run, $pool);
+=item $client-E<gt>merge($src1, $rev1, $src2, $rev2, $target_wcpath, $recursive, $ignore_ancestry, $force, $dry_run, $pool);
Merge changes from $src1/$rev1 to $src2/$rev2 into the working-copy path
$target_wcpath.
@@ -626,22 +656,22 @@ feedback is provided, but the working co
Has no return.
-=item $ctx-E<gt>mkdir($targets, $pool);
+=item $client-E<gt>mkdir($targets, $pool);
-Similar to $ctx-E<gt>mkdir2() except it returns an svn_client_commit_info_t
+Similar to $client-E<gt>mkdir2() except it returns an svn_client_commit_info_t
object instead of a svn_commit_info_t object.
-=item $ctx-E<gt>mkdir2($targets, $pool);
+=item $client-E<gt>mkdir2($targets, $pool);
-Similar to $ctx-E<gt>mkdir3(), but with $make_parents always FALSE, and
+Similar to $client-E<gt>mkdir3(), but with $make_parents always FALSE, and
$revprop_hash always undef.
-=item $ctx-E<gt>mkdir3($targets, $make_parents, $revprop_hash, $pool);
+=item $client-E<gt>mkdir3($targets, $make_parents, $revprop_hash, $pool);
-Similar to $ctx-E<gt>mkdir4(), but returns a svn_commit_info_t object rather
+Similar to $client-E<gt>mkdir4(), but returns a svn_commit_info_t object rather
than through a callback function.
-=item $ctx-E<gt>mkdir4($targets, $make_parents, $revprop_hash, \&commit_callback, $pool);
+=item $client-E<gt>mkdir4($targets, $make_parents, $revprop_hash, \&commit_callback, $pool);
Create a directory, either in a repository or a working copy.
@@ -669,7 +699,7 @@ called for items added to the working co
If \&commit_callback is not undef, then for each successful commit, call
\&commit_callback with the svn_commit_info_t object for the commit.
-=item $ctx-E<gt>move($src_path, $src_revision, $dst_path, $force, $pool);
+=item $client-E<gt>move($src_path, $src_revision, $dst_path, $force, $pool);
Move $src_path to $dst_path.
@@ -696,7 +726,7 @@ If $src_path is a working copy path
not be called.
* This is a scheduling operation. No changes will happen to the repository
-until a commit occurs. This scheduling can be removed with $ctx-E<gt>revert().
+until a commit occurs. This scheduling can be removed with $client-E<gt>revert().
If $src_path is a file it is removed from the working copy immediately.
If $src_path is a directory it will remain in the working copy but all
files, and unversioned items, it contains will be removed.
@@ -709,13 +739,13 @@ The notify callback will be called twice
indicate the deletion of the moved node, and once to indicate the addition
of the new location of the node.
-=item $ctx-E<gt>propget($propname, $target, $revision, $recursive, $pool);
+=item $client-E<gt>propget($propname, $target, $revision, $recursive, $pool);
Returns a reference to a hash containing paths or URLs, prefixed by $target (a
working copy or URL), of items for which the property $propname is set, and
whose values represent the property value for $propname at that path.
-=item $ctx-E<gt>proplist($target, $revision, $recursive, $pool);
+=item $client-E<gt>proplist($target, $revision, $recursive, $pool);
Returns a reference to an array of svn_client_proplist_item_t objects.
@@ -732,7 +762,7 @@ versioned entry below (and including) $t
If $target is not found, raises the $SVN::Error::ENTRY_NOT_FOUND error.
-=item $ctx-E<gt>propset($propname, $propval, $target, $recursive, $pool);
+=item $client-E<gt>propset($propname, $propval, $target, $recursive, $pool);
Set $propname to $propval on $target (a working copy or URL path).
@@ -746,7 +776,7 @@ If $propname is an svn-controlled proper
then the caller is responsible for ensuring that $propval is UTF8-encoded
and uses LF line-endings.
-=item $ctx-E<gt>relocate($dir, $from, $to, $recursive, $pool);
+=item $client-E<gt>relocate($dir, $from, $to, $recursive, $pool);
Modify a working copy directory $dir, changing any repository URLs that
begin with $from to begin with $to instead, recursing into subdirectories if
@@ -754,7 +784,7 @@ $recursive is true.
Has no return.
-=item $ctx-E<gt>resolved($path, $recursive, $pool);
+=item $client-E<gt>resolved($path, $recursive, $pool);
Removed the 'conflicted' state on a working copy path.
@@ -768,7 +798,7 @@ If $path is not in a state of conflict t
If $path's conflict state is removed, call the notify callback with the
$path.
-=item $ctx-E<gt>revert($paths, $recursive, $pool);
+=item $client-E<gt>revert($paths, $recursive, $pool);
Restore the pristine version of a working copy $paths, effectively undoing
any local mods.
@@ -776,28 +806,28 @@ any local mods.
For each path in $paths, if it is a directory and $recursive
is true, this will be a recursive operation.
-=item $ctx-E<gt>revprop_get($propname, $url, $revision, $pool);
+=item $client-E<gt>revprop_get($propname, $url, $revision, $pool);
Returns two values, the first of which is the value of $propname on revision
$revision in the repository represented by $url. The second value is the
actual revision queried.
-Note that unlike its cousin $ctx-E<gt>propget(), this routine doesn't affect
+Note that unlike its cousin $client-E<gt>propget(), this routine doesn't affect
working copy at all; it's a pure network operation that queries an
B<unversioned> property attached to a revision. This can be used to query
log messages, dates, authors, and the like.
-=item $ctx-E<gt>revprop_list($url, $revision, $pool);
+=item $client-E<gt>revprop_list($url, $revision, $pool);
Returns two values, the first of which is a reference to a hash containing
the properties attached to $revision in the repository represented by $url.
The second value is the actual revision queried.
-Note that unlike its cousin $ctx-E<gt>proplist(), this routine doesn't read a
+Note that unlike its cousin $client-E<gt>proplist(), this routine doesn't read a
working copy at all; it's a pure network operation that reads B<unversioned>
properties attached to a revision.
-=item $ctx-E<gt>revprop_set($propname, $propval, $url, $revision, $force, $pool);
+=item $client-E<gt>revprop_set($propname, $propval, $url, $revision, $force, $pool);
Set $propname to $propval on revision $revision in the repository represented
by $url.
@@ -811,7 +841,7 @@ If $propname is an svn-controlled proper
the caller is responsible for ensuring that the value is UTF8-encoded and
uses LF line-endings.
-Note that unlike its cousin $ctx-E<gt>propset(), this routine doesn't affect
+Note that unlike its cousin $client-E<gt>propset(), this routine doesn't affect
the working copy at all; it's a pure network operation that changes an
B<unversioned> property attached to a revision. This can be used to tweak
log messages, dates, authors, and the like. Be careful: it's a lossy
@@ -821,19 +851,19 @@ with no way to retrieve the prior value.
Also note that unless the administrator creates a pre-revprop-change hook
in the repository, this feature will fail.
-=item $ctx-E<gt>status($path, $revision, \&status_func, $recursive, $get_all, $update, $no_ignore, $pool);
+=item $client-E<gt>status($path, $revision, \&status_func, $recursive, $get_all, $update, $no_ignore, $pool);
-Similar to $ctx-E<gt>status2(), but with ignore_externals always set to FALSE, and with the status_func receiving a svn_wc_status2_t instead of a svn_wc_status_t object.
+Similar to $client-E<gt>status2(), but with ignore_externals always set to FALSE, and with the status_func receiving a svn_wc_status2_t instead of a svn_wc_status_t object.
-=item $ctx-E<gt>status2($path, $revision, \&status_func, $recursive, $get_all, $update, $no_ignore, $ignore_externals, $pool);
+=item $client-E<gt>status2($path, $revision, \&status_func, $recursive, $get_all, $update, $no_ignore, $ignore_externals, $pool);
-Similar to $ctx-E<gt>status3(), but with the changelists passed as undef, and with recursive instead of depth.
+Similar to $client-E<gt>status3(), but with the changelists passed as undef, and with recursive instead of depth.
-=item $ctx-E<gt>status3($path, $revision, \&status_func, $depth, $get_all, $update, $no_ignore, $ignore_externals, $changelists, $pool);
+=item $client-E<gt>status3($path, $revision, \&status_func, $depth, $get_all, $update, $no_ignore, $ignore_externals, $changelists, $pool);
-Similar to $ctx-E<gt>status4(), without the pool parameter to the callback and the return of the callback is ignored.
+Similar to $client-E<gt>status4(), without the pool parameter to the callback and the return of the callback is ignored.
-=item $ctx-E<gt>status4($path, $revision, \&status_func, $depth, $get_all, $update, $no_ignore, $ignore_externals, $changelists, $pool);
+=item $client-E<gt>status4($path, $revision, \&status_func, $depth, $get_all, $update, $no_ignore, $ignore_externals, $changelists, $pool);
Given $path to a working copy directory (or single file), call status_func()
with a set of svn_wc_status2_t objects which describe the status of $path and
@@ -867,39 +897,7 @@ object which is cleaned beteween invocat
The return of the status_func subroutine can be a svn_error_t object created by
SVN::Error::create in order to propogate an error up.
-=item $ctx-E<gt>info($path_or_url, $peg_revision, $revision, \&receiver, $recurse);
-
-Invokes \&receiver passing it information about $path_or_url for $revision.
-The information returned is system-generated metadata, not the sort of
-"property" metadata created by users. For methods available on the object
-passed to \&receiver, B<see svn_info_t>.
-
-If both revision arguments are either svn_opt_revision_unspecified or NULL,
-then information will be pulled solely from the working copy; no network
-connections will be made.
-
-Otherwise, information will be pulled from a repository. The actual node
-revision selected is determined by the $path_or_url as it exists in
-$peg_revision. If $peg_revision is undef, then it defaults to HEAD for URLs
-or WORKING for WC targets.
-
-If $path_or_url is not a local path, then if $revision is PREV (or some other
-kind that requires a local path), an error will be returned, because the
-desired revision cannot be determined.
-
-Uses the authentication baton cached in ctx to authenticate against the
-repository.
-
-If $recurse is true (and $path_or_url is a directory) this will be a recursive
-operation, invoking $receiver on each child.
-
- my $receiver = sub {
- my( $path, $info, $pool ) = @_;
- print "Current revision of $path is ", $info->rev, "\n";
- };
- $ctx->info( 'foo/bar.c', undef, 'WORKING', $receiver, 0 );
-
-=item $ctx-E<gt>switch($path, $url, $revision, $recursive, $pool);
+=item $client-E<gt>switch($path, $url, $revision, $recursive, $pool);
Switch working tree $path to $url at $revision.
@@ -918,24 +916,24 @@ scratch.
Returns the value of the revision to which the working copy was actually
switched.
-=item $ctx-E<gt>update($path, $revision, $recursive, $pool)
+=item $client-E<gt>update($path, $revision, $recursive, $pool)
-Similar to $ctx-E<gt>update2() except that it accepts only a single target in
+Similar to $client-E<gt>update2() except that it accepts only a single target in
$path, returns a single revision, and $ignore_externals is always set to FALSE.
-=item $ctx-E<gt>update2($paths, $revision, $recursive, $ignore_externals, $pool)
+=item $client-E<gt>update2($paths, $revision, $recursive, $ignore_externals, $pool)
-Similar to $ctx-E<gt>update3() but with $allow_unver_obstructions always set to
+Similar to $client-E<gt>update3() but with $allow_unver_obstructions always set to
FALSE, $depth_is_sticky to FALSE, and $depth set according to $recursive: if
$recursive is TRUE, set $depth to $SVN::Depth::infinity, if $recursive is
FALSE, set $depth to $SVN::Depth::files.
-=item $ctx-E<gt>update3($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $pool)
+=item $client-E<gt>update3($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $pool)
-Similar to $ctx-E<gt>update4() but with $make_parents always set to FALSE and
+Similar to $client-E<gt>update4() but with $make_parents always set to FALSE and
$adds_as_modification set to TRUE.
-=item $ctx-E<gt>update4($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $adds_as_modification, $make_parents)
+=item $client-E<gt>update4($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $adds_as_modification, $make_parents)
Update working trees $paths to $revision.
@@ -989,7 +987,7 @@ set to the revision to which $revision w
element of $paths.
-=item $ctx-E<gt>url_from_path($target, $pool); or SVN::Client::url_from_path($target, $pool);
+=item $client-E<gt>url_from_path($target, $pool); or SVN::Client::url_from_path($target, $pool);
Returns the URL for $target.
@@ -999,21 +997,21 @@ If $target is a versioned item, it retur
If $target is unversioned (has no entry), returns undef.
-=item $ctx-E<gt>uuid_from_path($path, $adm_access, $pool);
+=item $client-E<gt>uuid_from_path($path, $adm_access, $pool);
Return the repository uuid for working-copy $path, allocated in $pool.
Use $adm_access to retrieve the uuid from $path's entry; if not present in the
-entry, then call $ctx-E<gt>uuid_from_url() to retrieve, using the entry's URL.
+entry, then call $client-E<gt>uuid_from_url() to retrieve, using the entry's URL.
-Note: The only reason this function falls back on $ctx-E<gt>uuid_from_url is for
+Note: The only reason this function falls back on $client-E<gt>uuid_from_url is for
compatibility purposes. Old working copies may not have uuids in the entries
files.
Note: This method probably doesn't work right now without a lot of pain,
because SVN::Wc is incomplete and it requires an adm_access object from it.
-=item $ctx-E<gt>uuid_from_url($url, $pool);
+=item $client-E<gt>uuid_from_url($url, $pool);
Return repository uuid for url.
@@ -1022,7 +1020,7 @@ Return repository uuid for url.
=cut
# import methods into our name space and wrap them in a closure
-# to support method calling style $ctx->log()
+# to support method calling style $client->log()
foreach my $function (@_all_fns)
{
no strict 'refs';
@@ -1102,7 +1100,7 @@ current value.
=over 4
-=item $ctx-E<gt>auth(SVN::Client::get_username_provider());
+=item $client-E<gt>auth(SVN::Client::get_username_provider());
Provides access to the auth_baton in the svn_client_ctx_t attached to the
SVN::Client object.
@@ -1143,7 +1141,7 @@ sub auth
return $self->{'ctx'}->auth_baton();
}
-=item $ctx-E<gt>notify(\¬ify);
+=item $client-E<gt>notify(\¬ify);
Sets the notify callback for the client context to a code reference that
you pass. It always returns the current codereference set.
@@ -1174,7 +1172,7 @@ sub notify {
return ${$self->{'notify_callback'}};
}
-=item $ctx-E<gt>log_msg(\&log_msg)
+=item $client-E<gt>log_msg(\&log_msg)
Sets the log_msg callback for the client context to a code reference that you
pass. It always returns the current codereference set.
@@ -1207,7 +1205,7 @@ sub log_msg {
return ${$self->{'log_msg_callback'}};
}
-=item $ctx-E<gt>cancel(\&cancel)
+=item $client-E<gt>cancel(\&cancel)
Sets the cancellation callback for the client context to a code reference that you
pass. It always returns the current codereference set.
@@ -1240,7 +1238,7 @@ sub cancel {
return ${$self->{'cancel_callback'}};
}
-=item $ctx-E<gt>pool(new SVN::Pool);
+=item $client-E<gt>pool(new SVN::Pool);
Method that sets or gets the default pool that is passed to method calls
requiring a pool, but which were not explicitly passed one.
@@ -1261,7 +1259,7 @@ sub pool
return $self->{'pool'} = shift;
}
}
-=item $ctx-E<gt>config(SVN::Core::config_get_config(undef));
+=item $client-E<gt>config(SVN::Core::config_get_config(undef));
Method that allows access to the config member of the svn_client_ctx_t.
Accepts a Perl hash to set, which is what functions like
@@ -1509,11 +1507,11 @@ use SVN::Base qw(Client svn_client_commi
=over 8
-=item $citem-E<gt>path()
+=item $commit_item-E<gt>path()
Absolute working-copy path of item.
-=item $citem-E<gt>kind()
+=item $commit_item-E<gt>kind()
An integer representing the type of node it is (file/dir).
Can be one of the following constants:
@@ -1522,19 +1520,19 @@ $SVN::Node::file
$SVN::Node::dir
$SVN::Node::unknown
-=item $citem-E<gt>url()
+=item $commit_item-E<gt>url()
Commit URL for this item.
-=item $citem-E<gt>revision()
+=item $commit_item-E<gt>revision()
Revision (copyfrom_rev if state_flags has IS_COPY set).
-=item $citem-E<gt>copyform_url();
+=item $commit_item-E<gt>copyform_url();
CopyFrom URL
-=item $citem-E<gt>state_flags();
+=item $commit_item-E<gt>state_flags();
One of several state flags:
$SVN::Client::COMMIT_ITEM_ADD
@@ -1543,12 +1541,12 @@ $SVN::Client::COMMIT_ITEM_TEXT_MODS
$SVN::Client::COMMIT_ITEM_PROP_MODS
$SVN::Client::COMMIT_ITEM_IS_COPY
-=item $citem-E<gt>incoming_prop_changes()
+=item $commit_item-E<gt>incoming_prop_changes()
A reference to an array of svn_prop_t objects representing changes to
WC properties.
-=item $citem-E<gt>outgoing_prop_changes()
+=item $commit_item-E<gt>outgoing_prop_changes()
A reference to an array of svn_prop_t objects representing extra
changes to properties in the repository (which are not necessarily
@@ -1565,15 +1563,15 @@ use SVN::Base qw(Client svn_client_commi
=over 4
-=item $cinfo-E<gt>revision()
+=item $commit_info-E<gt>revision()
Just committed revision.
-=item $cinfo-E<gt>date()
+=item $commit_info-E<gt>date()
Server-Side date of the commit as a string.
-=item $cinfo-E<gt>author()
+=item $commit_info-E<gt>author()
Author of the commit.
@@ -1641,6 +1639,144 @@ File or dir?
=back
+=head2 ADDITIONAL METHODS
+
+The following methods work, but are not currently documented in this
+file. Please consult the svn_client.h section in the Subversion API
+for more details.
+
+=over 4
+
+=item $client-E<gt>add_to_changelist(...)
+
+=item $client-E<gt>blame2(...)
+
+=item $client-E<gt>blame3(...)
+
+=item $client-E<gt>blame4(...)
+
+=item $client-E<gt>cat2(...)
+
+=item $client-E<gt>commit2(...)
+
+=item $client-E<gt>commit3(...)
+
+=item $client-E<gt>commit4(...)
+
+=item $client-E<gt>copy2(...)
+
+=item $client-E<gt>copy3(...)
+
+=item $client-E<gt>copy4(...)
+
+=item $client-E<gt>create_context(...)
+
+=item $client-E<gt>delete2(...)
+
+=item $client-E<gt>delete3(...)
+
+=item $client-E<gt>diff2(...)
+
+=item $client-E<gt>diff3(...)
+
+=item $client-E<gt>diff4(...)
+
+=item $client-E<gt>diff_peg(...)
+
+=item $client-E<gt>diff_peg2(...)
+
+=item $client-E<gt>diff_peg3(...)
+
+=item $client-E<gt>diff_peg4(...)
+
+=item $client-E<gt>diff_summarize2(...)
+
+=item $client-E<gt>diff_summarize_dup(...)
+
+=item $client-E<gt>diff_summarize_peg(...)
+
+=item $client-E<gt>diff_summarize_peg2(...)
+
+=item $client-E<gt>export2(...)
+
+=item $client-E<gt>export3(...)
+
+=item $client-E<gt>export4(...)
+
+=item $client-E<gt>import2(...)
+
+=item $client-E<gt>import3(...)
+
+=item $client-E<gt>info2(...)
+
+=item $client-E<gt>invoke_blame_receiver(...)
+
+=item $client-E<gt>invoke_blame_receiver2(...)
+
+=item $client-E<gt>invoke_diff_summarize_func(...)
+
+=item $client-E<gt>list(...)
+
+=item $client-E<gt>list2(...)
+
+=item $client-E<gt>log2(...)
+
+=item $client-E<gt>log3(...)
+
+=item $client-E<gt>log4(...)
+
+=item $client-E<gt>log5(...)
+
+=item $client-E<gt>ls2(...)
+
+=item $client-E<gt>ls3(...)
+
+=item $client-E<gt>merge2(...)
+
+=item $client-E<gt>merge3(...)
+
+=item $client-E<gt>merge_peg(...)
+
+=item $client-E<gt>merge_peg2(...)
+
+=item $client-E<gt>merge_peg3(...)
+
+=item $client-E<gt>move2(...)
+
+=item $client-E<gt>move3(...)
+
+=item $client-E<gt>move4(...)
+
+=item $client-E<gt>move5(...)
+
+=item $client-E<gt>open_ra_session(...)
+
+=item $client-E<gt>propget2(...)
+
+=item $client-E<gt>propget3(...)
+
+=item $client-E<gt>proplist2(...)
+
+=item $client-E<gt>proplist3(...)
+
+=item $client-E<gt>propset2(...)
+
+=item $client-E<gt>propset3(...)
+
+=item $client-E<gt>remove_from_changelist(...)
+
+=item $client-E<gt>resolve(...)
+
+=item $client-E<gt>revert2(...)
+
+=item $client-E<gt>switch2(...)
+
+=item $client-E<gt>unlock(...)
+
+=item $client-E<gt>version(...)
+
+=back
+
=head1 TODO
* Better support for the config.
Modified: subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Core.pm
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Core.pm?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Core.pm (original)
+++ subversion/branches/move-tracking-1/subversion/bindings/swig/perl/native/Core.pm Tue Jun 4 20:56:23 2013
@@ -834,20 +834,20 @@ A revision, specified in one of C<SVN::C
=item $rev-E<gt>kind()
An enum denoting how the revision C<$rev> was specified. One of
-C<$VN::Core::opt_revision_unspecified>,
-C<$VN::Core::opt_revision_number>,
-C<$VN::Core::opt_revision_date>,
-C<$VN::Core::opt_revision_committed>,
-C<$VN::Core::opt_revision_previous>,
-C<$VN::Core::opt_revision_base>,
-C<$VN::Core::opt_revision_working>
+C<$SVN::Core::opt_revision_unspecified>,
+C<$SVN::Core::opt_revision_number>,
+C<$SVN::Core::opt_revision_date>,
+C<$SVN::Core::opt_revision_committed>,
+C<$SVN::Core::opt_revision_previous>,
+C<$SVN::Core::opt_revision_base>,
+C<$SVN::Core::opt_revision_working>
or C<$SVN::Core::opt_revision_head>.
=item $rev-E<gt>value()
Extra data about the revision. Only relevant if C<$rev-E<gt>kind> is
-C<$VN::Core::opt_revision_number> (where it contains the revision number)
-or C<$VN::Core::opt_revision_date> (where it contains a date).
+C<$SVN::Core::opt_revision_number> (where it contains the revision number)
+or C<$SVN::Core::opt_revision_date> (where it contains a date).
=back
Modified: subversion/branches/move-tracking-1/subversion/bindings/swig/ruby/test/windows_util.rb
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/bindings/swig/ruby/test/windows_util.rb?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/bindings/swig/ruby/test/windows_util.rb (original)
+++ subversion/branches/move-tracking-1/subversion/bindings/swig/ruby/test/windows_util.rb Tue Jun 4 20:56:23 2013
@@ -106,6 +106,7 @@ module SvnTestUtil
begin
Dir.chdir(path)
rescue Errno::ENOENT
+ next
end
found_targets = []
Modified: subversion/branches/move-tracking-1/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/include/private/svn_ra_svn_private.h?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/move-tracking-1/subversion/include/private/svn_ra_svn_private.h Tue Jun 4 20:56:23 2013
@@ -83,6 +83,15 @@ svn_ra_svn__write_word(svn_ra_svn_conn_t
apr_pool_t *pool,
const char *word);
+/** Write a boolean over the net.
+ *
+ * Writes will be buffered until the next read or flush.
+ */
+svn_error_t *
+svn_ra_svn__write_boolean(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_boolean_t value);
+
/** Write a list of properties over the net. @a props is allowed to be NULL,
* in which case an empty list will be written out.
*
@@ -824,6 +833,53 @@ svn_ra_svn__write_cmd_finish_replay(svn_
/**
* @}
*/
+
+/**
+ * @defgroup svn_data sending data structures over ra_svn
+ * @{
+ */
+
+/** Send a changed path (as part of transmitting a log entry) over connection
+ * @a conn. Use @a pool for allocations.
+ *
+ * @see svn_log_changed_path2_t for a description of the other parameters.
+ */
+svn_error_t *
+svn_ra_svn__write_data_log_changed_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ const char *path,
+ char action,
+ const char *copyfrom_path,
+ svn_revnum_t copyfrom_rev,
+ svn_node_kind_t node_kind,
+ svn_boolean_t text_modified,
+ svn_boolean_t props_modified);
+
+/** Send a the details of a log entry (as part of transmitting a log entry
+ * and without revprops and changed paths) over connection @a conn.
+ * Use @a pool for allocations.
+ *
+ * @a author, @a date and @a message have been extracted and removed from
+ * the revprops to follow. @a has_children is taken directly from the
+ * #svn_log_entry_t struct. @a revision is too, except when it equals
+ * #SVN_INVALID_REVNUM. In that case, @a revision must be 0 and
+ * @a invalid_revnum be set to TRUE. @a revprop_count is the number of
+ * revprops that will follow in the revprops list.
+ */
+svn_error_t *
+svn_ra_svn__write_data_log_entry(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_revnum_t revision,
+ const svn_string_t *author,
+ const svn_string_t *date,
+ const svn_string_t *message,
+ svn_boolean_t has_children,
+ svn_boolean_t invalid_revnum,
+ int revprop_count);
+
+/**
+ * @}
+ */
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/move-tracking-1/subversion/include/svn_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/include/svn_compat.h?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/include/svn_compat.h (original)
+++ subversion/branches/move-tracking-1/subversion/include/svn_compat.h Tue Jun 4 20:56:23 2013
@@ -32,6 +32,7 @@
#include <apr_tables.h>
#include "svn_types.h"
+#include "svn_string.h"
#ifdef __cplusplus
extern "C" {
@@ -75,6 +76,17 @@ svn_compat_log_revprops_in(apr_pool_t *p
* revprops is NULL, all return values are NULL. Any return value may be
* NULL if the corresponding property is not set in @a revprops.
*
+ * @since New in 1.9.
+ */
+void
+svn_compat_log_revprops_out_string(const svn_string_t **author,
+ const svn_string_t **date,
+ const svn_string_t **message,
+ apr_hash_t *revprops);
+
+/** Simiar to #svn_compat_log_revprops_out2 but returns C-style strings
+ * instead of #svn_string_t.
+ *
* @since New in 1.5.
*/
void
Modified: subversion/branches/move-tracking-1/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/include/svn_version.h?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/include/svn_version.h (original)
+++ subversion/branches/move-tracking-1/subversion/include/svn_version.h Tue Jun 4 20:56:23 2013
@@ -116,10 +116,8 @@ extern "C" {
/** Revision number: The repository revision number of this release.
*
* This constant is used to generate the build number part of the Windows
- * file version. Its value remains 0 in the repository.
- *
- * When rolling a tarball, we automatically replace it with what we
- * guess to be the correct revision number.
+ * file version. Its value remains 0 in the repository except in release
+ * tags where it is the revision from which the tag was created.
*/
#define SVN_VER_REVISION 0
Modified: subversion/branches/move-tracking-1/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_client/merge.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_client/merge.c Tue Jun 4 20:56:23 2013
@@ -12307,6 +12307,12 @@ find_automatic_merge(svn_client__pathrev
SVN_ERR(svn_client__get_youngest_common_ancestor(
&s_t->yca, s_t->source, &s_t->target->loc, s_t->source_ra_session,
ctx, result_pool, result_pool));
+ if (! s_t->yca)
+ return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL,
+ _("'%s@%ld' must be ancestrally related to "
+ "'%s@%ld'"),
+ s_t->source->url, s_t->source->rev,
+ s_t->target->loc.url, s_t->target->loc.rev);
/* Find the latest revision of A synced to B and the latest
* revision of B synced to A.
@@ -12415,14 +12421,15 @@ client_find_automatic_merge(automatic_me
source_and_target_t *s_t = apr_palloc(result_pool, sizeof(*s_t));
automatic_merge_t *merge = apr_palloc(result_pool, sizeof(*merge));
- /* "Open" the target WC. We're not going to check the target WC for
- * mixed-rev, local mods or switched subtrees yet. After we find out
- * what kind of merge is required, then if a reintegrate-like merge is
- * required we'll do the stricter checks, in do_automatic_merge_locked(). */
+ /* "Open" the target WC. Check the target WC for mixed-rev, local mods and
+ * switched subtrees yet to faster exit and notify user before contacting
+ * with server. After we find out what kind of merge is required, then if a
+ * reintegrate-like merge is required we'll do the stricter checks, in
+ * do_automatic_merge_locked(). */
SVN_ERR(open_target_wc(&s_t->target, target_abspath,
- TRUE /*allow_mixed_rev*/,
- TRUE /*allow_local_mods*/,
- TRUE /*allow_switched_subtrees*/,
+ allow_mixed_rev,
+ allow_local_mods,
+ allow_switched_subtrees,
ctx, result_pool, scratch_pool));
/* Open RA sessions to the source and target trees. */
Modified: subversion/branches/move-tracking-1/subversion/libsvn_delta/text_delta.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_delta/text_delta.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_delta/text_delta.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_delta/text_delta.c Tue Jun 4 20:56:23 2013
@@ -669,7 +669,7 @@ patterning_copy(char *target, const char
#if SVN_UNALIGNED_ACCESS_IS_OK
- if (end + sizeof(apr_uint32_t) <= target)
+ if (source + sizeof(apr_uint32_t) <= target)
{
/* Source and target are at least 4 bytes apart, so we can copy in
* 4-byte chunks. */
Modified: subversion/branches/move-tracking-1/subversion/libsvn_diff/diff_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_diff/diff_file.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_diff/diff_file.c Tue Jun 4 20:56:23 2013
@@ -634,7 +634,7 @@ find_identical_suffix(apr_off_t *suffix_
min_curp[0] += suffix_min_offset0;
/* Scan quickly by reading with machine-word granularity. */
- for (i = 0, can_read_word = TRUE; i < file_len; i++)
+ for (i = 0, can_read_word = TRUE; can_read_word && i < file_len; i++)
can_read_word = can_read_word
&& ( (file_for_suffix[i].curp + 1
- sizeof(apr_uintptr_t))
@@ -652,7 +652,7 @@ find_identical_suffix(apr_off_t *suffix_
if (contains_eol(chunk))
break;
- for (i = 1, is_match = TRUE; i < file_len; i++)
+ for (i = 1, is_match = TRUE; is_match && i < file_len; i++)
is_match = is_match
&& ( chunk
== *(const apr_uintptr_t *)
@@ -957,7 +957,7 @@ datasource_get_next_token(apr_uint32_t *
function.
When changing things here, make sure the whitespace settings are
- applied, or we mught not reach the exact suffix boundary as token
+ applied, or we might not reach the exact suffix boundary as token
boundary. */
SVN_ERR(read_chunk(file->file, file->path,
curp, length,
Modified: subversion/branches/move-tracking-1/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_diff/parse-diff.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_diff/parse-diff.c Tue Jun 4 20:56:23 2013
@@ -1146,8 +1146,9 @@ svn_diff_open_patch_file(svn_patch_file_
svn_patch_file_t *p;
p = apr_palloc(result_pool, sizeof(*p));
- SVN_ERR(svn_io_file_open(&p->apr_file, local_abspath, APR_READ,
- APR_OS_DEFAULT, result_pool));
+ SVN_ERR(svn_io_file_open(&p->apr_file, local_abspath,
+ APR_READ | APR_BUFFERED, APR_OS_DEFAULT,
+ result_pool));
p->next_patch_offset = 0;
*patch_file = p;
Modified: subversion/branches/move-tracking-1/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_fs_fs/fs_fs.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_fs_fs/fs_fs.c Tue Jun 4 20:56:23 2013
@@ -3155,20 +3155,15 @@ write_revprop_generation_file(svn_fs_t *
apr_int64_t current,
apr_pool_t *pool)
{
- apr_file_t *file;
- const char *tmp_path;
-
char buf[SVN_INT64_BUFFER_SIZE];
apr_size_t len = svn__i64toa(buf, current);
buf[len] = '\n';
- SVN_ERR(svn_io_open_unique_file3(&file, &tmp_path, fs->path,
- svn_io_file_del_none, pool, pool));
- SVN_ERR(svn_io_file_write_full(file, buf, len + 1, NULL, pool));
- SVN_ERR(svn_io_file_close(file, pool));
+ SVN_ERR(svn_io_write_atomic(path_revprop_generation(fs, pool),
+ buf, len + 1,
+ NULL /* copy_perms */, pool));
- return move_into_place(tmp_path, path_revprop_generation(fs, pool),
- tmp_path, pool);
+ return SVN_NO_ERROR;
}
/* Make sure the revprop_namespace member in FS is set. */
@@ -9773,16 +9768,16 @@ write_revnum_file(const char *fs_path,
svn_revnum_t revnum,
apr_pool_t *scratch_pool)
{
- const char *final_path, *tmp_path;
- svn_stream_t *tmp_stream;
+ const char *final_path;
+ char buf[SVN_INT64_BUFFER_SIZE];
+ apr_size_t len = svn__i64toa(buf, revnum);
+ buf[len] = '\n';
final_path = svn_dirent_join(fs_path, filename, scratch_pool);
- SVN_ERR(svn_stream_open_unique(&tmp_stream, &tmp_path, fs_path,
- svn_io_file_del_none,
- scratch_pool, scratch_pool));
- SVN_ERR(svn_stream_printf(tmp_stream, scratch_pool, "%ld\n", revnum));
- SVN_ERR(svn_stream_close(tmp_stream));
- SVN_ERR(move_into_place(tmp_path, final_path, final_path, scratch_pool));
+
+ SVN_ERR(svn_io_write_atomic(final_path, buf, len + 1,
+ final_path /* copy_perms */, scratch_pool));
+
return SVN_NO_ERROR;
}
Modified: subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/commit.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/commit.c Tue Jun 4 20:56:23 2013
@@ -804,8 +804,18 @@ maybe_set_lock_token_header(serf_bucket_
if (token)
{
const char *token_header;
+ const char *token_uri;
+ apr_uri_t uri = commit_ctx->session->session_url;
- token_header = apr_pstrcat(pool, "(<", token, ">)", (char *)NULL);
+ /* Supplying the optional URI affects apache response when
+ the lock is broken, see issue 4369. When present any URI
+ must be absolute (RFC 2518 9.4). */
+ uri.path = (char *)svn_path_url_add_component2(uri.path, relpath,
+ pool);
+ token_uri = apr_uri_unparse(pool, &uri, 0);
+
+ token_header = apr_pstrcat(pool, "<", token_uri, "> (<", token, ">)",
+ (char *)NULL);
serf_bucket_headers_set(headers, "If", token_header);
}
}
Modified: subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/locks.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/locks.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/locks.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/locks.c Tue Jun 4 20:56:23 2013
@@ -214,29 +214,26 @@ static svn_error_t *
determine_error(svn_ra_serf__handler_t *handler,
svn_error_t *err)
{
- {
- apr_status_t errcode;
+ apr_status_t errcode;
- if (handler->sline.code == 423)
- errcode = SVN_ERR_FS_PATH_ALREADY_LOCKED;
- else if (handler->sline.code == 403)
- errcode = SVN_ERR_RA_DAV_FORBIDDEN;
- else
- return err;
-
- /* Client-side or server-side error already. Return it. */
- if (err != NULL)
- return err;
-
- /* The server did not send us a detailed human-readable error.
- Provide a generic error. */
- err = svn_error_createf(errcode, NULL,
- _("Lock request failed: %d %s"),
- handler->sline.code,
- handler->sline.reason);
- }
+ if (err)
+ return err;
- return err;
+ if (handler->sline.code == 200 || handler->sline.code == 207)
+ return SVN_NO_ERROR;
+ else if (handler->sline.code == 423)
+ errcode = SVN_ERR_FS_PATH_ALREADY_LOCKED;
+ else if (handler->sline.code == 403)
+ errcode = SVN_ERR_RA_DAV_FORBIDDEN;
+ else
+ errcode = SVN_ERR_RA_DAV_REQUEST_FAILED;
+
+ /* The server did not send us a detailed human-readable error.
+ Provide a generic error. */
+ return svn_error_createf(errcode, NULL,
+ _("Lock request failed: %d %s"),
+ handler->sline.code,
+ handler->sline.reason ? handler->sline.reason : "");
}
@@ -406,7 +403,7 @@ svn_ra_serf__get_lock(svn_ra_session_t *
lock_ctx->handler = handler;
err = svn_ra_serf__context_run_one(handler, pool);
- err = determine_error(handler, err);
+ err = svn_error_trace(determine_error(handler, err));
if (handler->sline.code == 404)
{
@@ -497,7 +494,7 @@ svn_ra_serf__lock(svn_ra_session_t *ra_s
lock_ctx->handler = handler;
err = svn_ra_serf__context_run_one(handler, iterpool);
- err = determine_error(handler, err);
+ err = svn_error_trace(determine_error(handler, err));
if (lock_func)
new_err = lock_func(lock_baton, lock_ctx->path, TRUE, lock_ctx->lock,
Modified: subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/ra_serf.h?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/ra_serf.h Tue Jun 4 20:56:23 2013
@@ -50,8 +50,8 @@ extern "C" {
/* Enforce the minimum version of serf. */
-#if !SERF_VERSION_AT_LEAST(0, 7, 1)
-#error Please update your version of serf to at least 0.7.1.
+#if !SERF_VERSION_AT_LEAST(1, 2, 1)
+#error Please update your version of serf to at least 1.2.1.
#endif
/** Use this to silence compiler warnings about unused parameters. */
Modified: subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/util.c?rev=1489602&r1=1489601&r2=1489602&view=diff
==============================================================================
--- subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/move-tracking-1/subversion/libsvn_ra_serf/util.c Tue Jun 4 20:56:23 2013
@@ -373,10 +373,8 @@ conn_setup(apr_socket_t *sock,
{
conn->ssl_context = serf_bucket_ssl_encrypt_context_get(*read_bkt);
-#if SERF_VERSION_AT_LEAST(1,0,0)
serf_ssl_set_hostname(conn->ssl_context,
conn->session->session_url.hostname);
-#endif
serf_ssl_client_cert_provider_set(conn->ssl_context,
svn_ra_serf__handle_client_cert,
@@ -642,7 +640,6 @@ setup_serf_req(serf_request_t *request,
{
serf_bucket_alloc_t *allocator = serf_request_get_alloc(request);
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
svn_spillbuf_t *buf;
if (session->http10 && body_bkt != NULL)
@@ -665,7 +662,6 @@ setup_serf_req(serf_request_t *request,
request_pool,
scratch_pool);
}
-#endif
/* Create a request bucket. Note that this sucker is kind enough to
add a "Host" header for us. */
@@ -674,7 +670,6 @@ setup_serf_req(serf_request_t *request,
/* Set the Content-Length value. This will also trigger an HTTP/1.0
request (rather than the default chunked request). */
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
if (session->http10)
{
if (body_bkt == NULL)
@@ -682,7 +677,6 @@ setup_serf_req(serf_request_t *request,
else
serf_bucket_request_set_CL(*req_bkt, svn_spillbuf__get_size(buf));
}
-#endif
*hdrs_bkt = serf_bucket_request_get_headers(*req_bkt);
@@ -696,10 +690,10 @@ setup_serf_req(serf_request_t *request,
serf_bucket_headers_setn(*hdrs_bkt, "Content-Type", content_type);
}
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
if (session->http10)
+ {
serf_bucket_headers_setn(*hdrs_bkt, "Connection", "keep-alive");
-#endif
+ }
if (accept_encoding)
{
@@ -776,6 +770,8 @@ svn_ra_serf__context_run_wait(svn_boolea
SVN_ERR(err);
if (status)
{
+ /* ### This omits SVN_WARNING, and possibly relies on the fact that
+ ### MAX(SERF_ERROR_*) < SVN_ERR_BAD_CATEGORY_START? */
if (status >= SVN_ERR_BAD_CATEGORY_START && status < SVN_ERR_LAST)
{
/* apr can't translate subversion errors to text */