You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pr...@apache.org on 2013/06/05 11:22:51 UTC
svn commit: r1489765 [2/22] - in /subversion/branches/verify-keep-going: ./
build/ build/ac-macros/ build/generator/ build/generator/templates/
contrib/hook-scripts/ contrib/server-side/fsfsfixer/
contrib/server-side/fsfsfixer/fixer/ notes/ subversion/...
Modified: subversion/branches/verify-keep-going/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/gen_make.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/gen_make.py (original)
+++ subversion/branches/verify-keep-going/build/generator/gen_make.py Wed Jun 5 09:22:43 2013
@@ -371,23 +371,26 @@ class Generator(gen_base.GeneratorBase):
# get the output files for these targets, sorted in dependency order
files = gen_base._sorted_files(self.graph, area)
- ezt_area = _eztdata(type=area, files=[ ], apache_files=[ ],
- extra_install=None)
+ ezt_area_type = (area == 'apache-mod' and 'mods-shared' or area)
+ ezt_area = _eztdata(type=ezt_area_type, files=[], extra_install=None)
+
+ def file_to_eztdata(file):
+ # cd to dirname before install to work around libtool 1.4.2 bug.
+ dirname, fname = build_path_splitfile(file.filename)
+ return _eztdata(mode=None,
+ dirname=dirname, fullname=file.filename,
+ filename=fname, when=file.when)
def apache_file_to_eztdata(file):
# cd to dirname before install to work around libtool 1.4.2 bug.
dirname, fname = build_path_splitfile(file.filename)
base, ext = os.path.splitext(fname)
name = base.replace('mod_', '')
- return _eztdata(fullname=file.filename, dirname=dirname,
+ return _eztdata(mode='apache-mod',
+ fullname=file.filename, dirname=dirname,
name=name, filename=fname, when=file.when)
- if area == 'apache-mod':
- data.areas.append(ezt_area)
- for file in files:
- ezt_area.files.append(apache_file_to_eztdata(file))
-
- elif area != 'test' and area != 'bdb-test':
+ if area != 'test' and area != 'bdb-test':
data.areas.append(ezt_area)
area_var = area.replace('-', '_')
@@ -395,31 +398,20 @@ class Generator(gen_base.GeneratorBase):
ezt_area.varname = area_var
ezt_area.uppervar = upper_var
- # ### TODO: This is a hack. See discussion here:
- # ### email to dev@, 2012-03-16, from Daniel Shahaf, subject
- # ### "[1.7.x] build.conf += install-tools of an apache-mod",
- # ### http://mid.gmane.org/20120316191639.GA28451@daniel3.local
- apache_files = [gen_base.FileInfo(t.filename, t.when)
- for t in inst_targets
- if isinstance(t, gen_base.TargetApacheMod)]
-
- files = [f for f in files if f not in apache_files]
- for file in apache_files:
- ezt_area.apache_files.append(apache_file_to_eztdata(file))
for file in files:
- # cd to dirname before install to work around libtool 1.4.2 bug.
- dirname, fname = build_path_splitfile(file.filename)
- ezt_file = _eztdata(dirname=dirname, fullname=file.filename,
- filename=fname, when=file.when)
- if area == 'locale':
- lang, objext = os.path.splitext(fname)
- installdir = '$(DESTDIR)$(%sdir)/%s/LC_MESSAGES' % (area_var, lang)
- ezt_file.installdir = installdir
- ezt_file.objext = objext
+ if isinstance(file.target, gen_base.TargetApacheMod):
+ ezt_file = apache_file_to_eztdata(file)
else:
- ezt_file.install_fname = build_path_join('$(%sdir)' % area_var,
- fname)
-
+ ezt_file = file_to_eztdata(file)
+ if area == 'locale':
+ lang, objext = os.path.splitext(ezt_file.filename)
+ installdir = ('$(DESTDIR)$(%sdir)/%s/LC_MESSAGES'
+ % (area_var, lang))
+ ezt_file.installdir = installdir
+ ezt_file.objext = objext
+ else:
+ ezt_file.install_fname = build_path_join('$(%sdir)' % area_var,
+ ezt_file.filename)
ezt_area.files.append(ezt_file)
# certain areas require hooks for extra install rules defined
Modified: subversion/branches/verify-keep-going/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/gen_win.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/gen_win.py (original)
+++ subversion/branches/verify-keep-going/build/generator/gen_win.py Wed Jun 5 09:22:43 2013
@@ -212,7 +212,8 @@ class GeneratorBase(gen_base.GeneratorBa
def _find_bdb(self):
"Find the Berkeley DB library and version"
- for ver in ("48", "47", "46", "45", "44", "43", "42", "41", "40"):
+ for ver in ("53", "52", "51", "50", "48", "47", "46",
+ "45", "44", "43", "42", "41", "40"):
lib = "libdb" + ver
path = os.path.join(self.bdb_path, "lib")
if os.path.exists(os.path.join(path, lib + ".lib")):
@@ -336,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) + "\\"
@@ -966,7 +972,7 @@ class WinGeneratorBase(GeneratorBase):
if target.name == "libsvnjavahl" and self.jdk_path:
fakeincludes.append(os.path.join(self.jdk_path, 'include'))
fakeincludes.append(os.path.join(self.jdk_path, 'include', 'win32'))
-
+
if target.name.find('cxxhl') != -1:
fakeincludes.append(self.path("subversion/bindings/cxxhl/include"))
@@ -1253,7 +1259,9 @@ class WinGeneratorBase(GeneratorBase):
self.ruby_version = None
self.ruby_major_version = None
self.ruby_minor_version = None
- proc = os.popen('ruby -rrbconfig -e ' + escape_shell_arg(
+ # Pass -W0 to stifle the "-e:1: Use RbConfig instead of obsolete
+ # and deprecated Config." warning if we are using Ruby 1.9.
+ proc = os.popen('ruby -rrbconfig -W0 -e ' + escape_shell_arg(
"puts Config::CONFIG['ruby_version'];"
"puts Config::CONFIG['LIBRUBY'];"
"puts Config::CONFIG['archdir'];"
@@ -1465,7 +1473,7 @@ class WinGeneratorBase(GeneratorBase):
def _find_apr(self):
"Find the APR library and version"
-
+
minimal_apr_version = (0, 9, 0)
version_file_path = os.path.join(self.apr_path, 'include',
@@ -1479,16 +1487,16 @@ class WinGeneratorBase(GeneratorBase):
fp = open(version_file_path)
txt = fp.read()
fp.close()
-
+
vermatch = re.search(r'^\s*#define\s+APR_MAJOR_VERSION\s+(\d+)', txt, re.M)
major = int(vermatch.group(1))
-
+
vermatch = re.search(r'^\s*#define\s+APR_MINOR_VERSION\s+(\d+)', txt, re.M)
minor = int(vermatch.group(1))
-
+
vermatch = re.search(r'^\s*#define\s+APR_PATCH_VERSION\s+(\d+)', txt, re.M)
patch = int(vermatch.group(1))
-
+
version = (major, minor, patch)
self.apr_version = '%d.%d.%d' % version
@@ -1500,7 +1508,7 @@ class WinGeneratorBase(GeneratorBase):
self.apr_lib = 'apr%s.lib' % suffix
else:
self.apr_lib = 'libapr%s.lib' % suffix
-
+
if version < minimal_apr_version:
sys.stderr.write("ERROR: apr %s or higher is required "
"(%s found)\n" % (
@@ -1525,16 +1533,16 @@ class WinGeneratorBase(GeneratorBase):
fp = open(version_file_path)
txt = fp.read()
fp.close()
-
+
vermatch = re.search(r'^\s*#define\s+APU_MAJOR_VERSION\s+(\d+)', txt, re.M)
major = int(vermatch.group(1))
-
+
vermatch = re.search(r'^\s*#define\s+APU_MINOR_VERSION\s+(\d+)', txt, re.M)
minor = int(vermatch.group(1))
-
+
vermatch = re.search(r'^\s*#define\s+APU_PATCH_VERSION\s+(\d+)', txt, re.M)
patch = int(vermatch.group(1))
-
+
version = (major, minor, patch)
self.aprutil_version = '%d.%d.%d' % version
@@ -1546,7 +1554,7 @@ class WinGeneratorBase(GeneratorBase):
self.aprutil_lib = 'aprutil%s.lib' % suffix
else:
self.aprutil_lib = 'libaprutil%s.lib' % suffix
-
+
if version < minimal_aprutil_version:
sys.stderr.write("ERROR: aprutil %s or higher is required "
"(%s found)\n" % (
@@ -1588,7 +1596,7 @@ class WinGeneratorBase(GeneratorBase):
vermatch = re.search(r'^\s*#define\s+SQLITE_VERSION\s+"(\d+)\.(\d+)\.(\d+)(?:\.(\d))?"', txt, re.M)
version = vermatch.groups()
-
+
# Sqlite doesn't add patch numbers for their ordinary releases
if not version[3]:
version = version[0:3]
Modified: subversion/branches/verify-keep-going/build/generator/templates/build-outputs.mk.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/templates/build-outputs.mk.ezt?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/templates/build-outputs.mk.ezt (original)
+++ subversion/branches/verify-keep-going/build/generator/templates/build-outputs.mk.ezt Wed Jun 5 09:22:43 2013
@@ -44,7 +44,9 @@ check-deps test-deps: [for test_helpers]
MANPAGES =[for manpages] [manpages][end]
CLEAN_FILES =[for cfiles] [cfiles][end]
-EXTRACLEAN_FILES =[for sql] [sql.header][end]
+EXTRACLEAN_FILES =[for sql] [sql.header][end] \
+ $(abs_builddir)/subversion/libsvn_subr/errorcode.inc \
+ $(abs_srcdir)/compile_commands.json
SWIG_INCLUDES = -I$(abs_builddir)/subversion \
-I$(abs_srcdir)/subversion/include \
@@ -127,16 +129,13 @@ $([target.varname]_OBJECTS): $([target.v
# Section 7: Install-Group install targets
########################################
[for areas]
-[is areas.type "apache-mod"]install-mods-shared:[for areas.files] [areas.files.fullname][end][for areas.files]
- [if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n [areas.files.name] [areas.files.filename][if-any areas.files.when] ; fi[else][end][end]
-[else]install-[areas.type]: [for areas.files][if-index areas.files first][else] [end][areas.files.fullname][end] [for areas.apache_files] [areas.apache_files.fullname][end]
- $(MKDIR) $(DESTDIR)$([areas.varname]dir)[for areas.files][is areas.type "locale"]
- $(MKDIR) [areas.files.installdir]
- [if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(INSTALL_[areas.uppervar]) [areas.files.filename] [areas.files.installdir]/$(PACKAGE_NAME)[areas.files.objext][if-any areas.files.when] ; fi[else][end][else]
- [if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(INSTALL_[areas.uppervar]) [areas.files.filename] $(DESTDIR)[areas.files.install_fname][if-any areas.files.when] ; fi[else][end][end][end][for areas.apache_files]
- [if-any areas.apache_files.when]if $([areas.apache_files.when]) ; then [else][end]cd [areas.apache_files.dirname] ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n [areas.apache_files.name] [areas.apache_files.filename][if-any areas.apache_files.when] ; fi[else][end][end]
-[if-any areas.extra_install] $(INSTALL_EXTRA_[areas.uppervar])
-[end][end][end]
+install-[areas.type]: [for areas.files][if-index areas.files first][else] [end][areas.files.fullname][end]
+[if-any areas.files][for areas.files] [is areas.files.mode "apache-mod"][if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n [areas.files.name] [areas.files.filename][if-any areas.files.when] ; fi[else][end][else][if-index areas.files first]$(MKDIR) $(DESTDIR)$([areas.varname]dir)
+ [else][end][is areas.type "locale"]$(MKDIR) [areas.files.installdir]
+ [if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(INSTALL_[areas.uppervar]) [areas.files.filename] [areas.files.installdir]/$(PACKAGE_NAME)[areas.files.objext][if-any areas.files.when] ; fi[else][end][else][if-any areas.files.when]if $([areas.files.when]) ; then [else][end]cd [areas.files.dirname] ; $(INSTALL_[areas.uppervar]) [areas.files.filename] $(DESTDIR)[areas.files.install_fname][if-any areas.files.when] ; fi[else][end][end][end]
+[end][else] $(MKDIR) $(DESTDIR)$([areas.varname]dir)
+[end][if-any areas.extra_install] $(INSTALL_EXTRA_[areas.uppervar])
+[end][end]
########################################
# Section 8: The install-include rule
Modified: subversion/branches/verify-keep-going/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/run_tests.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/run_tests.py (original)
+++ subversion/branches/verify-keep-going/build/run_tests.py Wed Jun 5 09:22:43 2013
@@ -43,7 +43,7 @@ separated list of test numbers; the defa
'''
# A few useful constants
-SVN_VER_MINOR = 8
+SVN_VER_MINOR = 9
import os, re, subprocess, sys, imp, threading
from datetime import datetime
Modified: subversion/branches/verify-keep-going/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/configure.ac?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/configure.ac (original)
+++ subversion/branches/verify-keep-going/configure.ac Wed Jun 5 09:22:43 2013
@@ -144,7 +144,9 @@ fi
dnl Find Apache with a recent-enough magic module number
SVN_FIND_APACHE(20020903)
-dnl Search for SQLite
+dnl Search for SQLite. If you change SQLITE_URL from a .zip to
+dnl something else also update build/ac-macros/sqlite.m4 to reflect
+dnl the correct command to unpack the downloaded file.
SQLITE_MINIMUM_VER="3.7.12"
SQLITE_RECOMMENDED_VER="3.7.15.1"
SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
@@ -1084,7 +1086,8 @@ if test "$enable_optimization" = "yes";
SVN_CFLAGS_ADD_IFELSE([-O2],[],[
SVN_CFLAGS_ADD_IFELSE([-O1],[],[
SVN_CFLAGS_ADD_IFELSE([-O])])])])
- SVN_CFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+ SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
+ SVN_CFLAGS_ADD_IFELSE([-flto])
SVN_CFLAGS_ADD_IFELSE([-fwhole-program])
fi
fi
@@ -1100,7 +1103,8 @@ if test "$enable_optimization" = "yes";
SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
- SVN_CXXFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+ SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
+ SVN_CXXFLAGS_ADD_IFELSE([-flto])
SVN_CXXFLAGS_ADD_IFELSE([-fwhole-program])
fi
fi
@@ -1113,6 +1117,13 @@ elif test "$enable_optimization" = "no";
# # do nothing
fi
+dnl Dump the current compiler options
+AC_MSG_NOTICE([C compiler flags: $CFLAGS])
+AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
+AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
+AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
+AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
+AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
AC_ARG_ENABLE(full-version-match,
AS_HELP_STRING([--disable-full-version-match],
Modified: subversion/branches/verify-keep-going/contrib/hook-scripts/check-mime-type.pl
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/hook-scripts/check-mime-type.pl?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/hook-scripts/check-mime-type.pl (original)
+++ subversion/branches/verify-keep-going/contrib/hook-scripts/check-mime-type.pl Wed Jun 5 09:22:43 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/verify-keep-going/contrib/hook-scripts/detect-merge-conflicts.sh
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/hook-scripts/detect-merge-conflicts.sh?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/hook-scripts/detect-merge-conflicts.sh (original)
+++ subversion/branches/verify-keep-going/contrib/hook-scripts/detect-merge-conflicts.sh Wed Jun 5 09:22:43 2013
@@ -1,8 +1,8 @@
#!/bin/sh
#
# A pre-commit hook to detect changes that look like forgotten
-# conflict markers. If any additions starting with '>>>>>>>',
-# '=======' or '<<<<<<<' are found, the commit is aborted with a nice
+# conflict markers. If any added line starting with '<<<<<<< .'
+# or '>>>>>>> .' is found, the commit is aborted with a nice
# error message.
#
# $HeadURL$
@@ -23,7 +23,10 @@ fi
# We scan through the transaction diff, looking for things that look
# like conflict markers. If we find one, we abort the commit.
-SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPOS" | grep -E '^\+(<{7} \.|={7}$|>{7} \.)' | wc -l)
+# (We only look for the conflict beginning and end markers, but not for
+# the separator line "=======" because that line occurs reasonably often
+# in normal text files.)
+SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPOS" | grep -E '^\+(<{7} \.|>{7} \.)' | wc -l)
if [ $SUSPICIOUS -ne 0 ]; then
echo "Some parts of your commit look suspiciously like merge" >&2
Modified: subversion/branches/verify-keep-going/contrib/hook-scripts/svn-keyword-check.pl
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/hook-scripts/svn-keyword-check.pl?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/hook-scripts/svn-keyword-check.pl (original)
+++ subversion/branches/verify-keep-going/contrib/hook-scripts/svn-keyword-check.pl Wed Jun 5 09:22:43 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/verify-keep-going/contrib/server-side/fsfsfixer/fix-repo
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fix-repo?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fix-repo (original)
+++ subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fix-repo Wed Jun 5 09:22:43 2013
@@ -1,6 +1,6 @@
#!/bin/sh
-USAGE="Fix some kinds of corruption in a Subversion repository
-by running './fixer/fix-rev.py' on each revision.
+USAGE="Fix some kinds of corruption in a Subversion FSFS repository.
+This script runs './fixer/fix-rev.py' on each revision.
Usage: $0 REPO-DIR START-REV
Backup your repository before running these scripts."
Modified: subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/find_good_id.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/find_good_id.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/find_good_id.py (original)
+++ subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/find_good_id.py Wed Jun 5 09:22:43 2013
@@ -1,12 +1,5 @@
#!/usr/bin/env python
-# PER-REPOSITORY CONFIGURATION
-#
-# The number of revs per shard of the repository being accessed, or None if
-# it is not sharded.
-# TODO: Read this from the db/format file.
-REVS_PER_SHARD=None
-
usage = """
Print the correct FSFS node-rev id, given one that is correct except for
its byte-offset part.
@@ -21,6 +14,7 @@ Example:
"""
import os, sys
+from fixer_config import *
class FixError(Exception):
"""An exception for any kind of inablility to repair the repository."""
Modified: subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fix-rev.py (original)
+++ subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fix-rev.py Wed Jun 5 09:22:43 2013
@@ -210,7 +210,7 @@ def fix_one_error(repo_dir, rev):
if handle_one_error(repo_dir, rev, svnlook_err):
return True
- raise FixError("unfixable error:\n " + "\n ".join(svnadmin_err))
+ raise FixError("unrecognized error message, and so unable to fix:\n " + "\n ".join(svnadmin_err))
def check_formats(repo_dir):
"""Check that REPO_DIR isn't newer than we know how to handle."""
Modified: subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fixer_config.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fixer_config.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fixer_config.py (original)
+++ subversion/branches/verify-keep-going/contrib/server-side/fsfsfixer/fixer/fixer_config.py Wed Jun 5 09:22:43 2013
@@ -8,3 +8,17 @@ SVNLOOK = 'svnlook'
# Verbosity: True for verbose, or False for quiet
VERBOSE = True
+
+# PER-REPOSITORY CONFIGURATION
+
+# The number of revs per shard of the repository being accessed, or 'None'
+# for a linear (that is, non-sharded) layout. This is 1000 for almost all
+# repositories in practice.
+#
+# The correct value can be found in the 'db/format' file in the repository.
+# The second line of that file will say something like 'layout sharded 1000'
+# or 'layout linear'.
+#
+# TODO: Read this value automatically from the db/format file.
+REVS_PER_SHARD=1000
+
Modified: subversion/branches/verify-keep-going/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/gen-make.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/gen-make.py (original)
+++ subversion/branches/verify-keep-going/gen-make.py Wed Jun 5 09:22:43 2013
@@ -64,6 +64,7 @@ def main(fname, gentype, verfname=None,
generator.write()
generator.write_sqlite_headers()
+ generator.write_errno_table()
if ('--debug', '') in other_options:
for dep_type, target_dict in generator.graph.deps.items():
Modified: subversion/branches/verify-keep-going/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/get-deps.sh?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/get-deps.sh (original)
+++ subversion/branches/verify-keep-going/get-deps.sh Wed Jun 5 09:22:43 2013
@@ -23,19 +23,34 @@
# get-deps.sh -- download the dependencies useful for building Subversion
#
-APR=apr-1.4.6
-APR_UTIL=apr-util-1.5.1
-SERF=serf-1.2.0
-ZLIB=zlib-1.2.7
-SQLITE_VERSION=3.7.15.1
+# If changing this file please take care to try to make your changes as
+# portable as possible. That means at a minimum only use POSIX supported
+# features and functions. However, it may be desirable to use an even
+# more narrow set of features than POSIX, e.g. Solaris /bin/sh only has
+# a subset of the POSIX shell features. If in doubt, limit yourself to
+# features already used in the file. Reviewing the history of changes
+# may be useful as well.
+
+APR_VERSION=${APR_VERSION:-"1.4.6"}
+APU_VERSION=${APU_VERSION:-"1.5.1"}
+SERF_VERSION=${SERF_VERSION:-"1.2.0"}
+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
@@ -86,10 +101,10 @@ get_zlib() {
test -d $BASEDIR/zlib && return
cd $TEMPDIR
- $HTTP_FETCH http://www.zlib.net/$ZLIB.tar.bz2
+ $HTTP_FETCH http://www.zlib.net/$ZLIB.tar.gz
cd $BASEDIR
- bzip2 -dc $TEMPDIR/$ZLIB.tar.bz2 | tar -xf -
+ gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf -
mv $ZLIB zlib
}
Propchange: subversion/branches/verify-keep-going/get-deps.sh
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/notes/dump-load-format.txt
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/notes/dump-load-format.txt?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/notes/dump-load-format.txt (original)
+++ subversion/branches/verify-keep-going/notes/dump-load-format.txt Wed Jun 5 09:22:43 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/verify-keep-going/subversion/bindings/ctypes-python/setup.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/setup.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/setup.py (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/setup.py Wed Jun 5 09:22:43 2013
@@ -58,7 +58,7 @@ class clean(_clean):
if not self.dry_run:
os.remove(f)
else:
- log.warn("'%s' does not exist -- can't clean it", os.path.normpath(f))
+ log.debug("'%s' does not exist -- can't clean it", os.path.normpath(f))
# Run standard clean command
_clean.run(self)
Modified: subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/test/svntypes.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/test/svntypes.py?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/test/svntypes.py (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/ctypes-python/test/svntypes.py Wed Jun 5 09:22:43 2013
@@ -35,7 +35,8 @@ class SvnDateTestCase(unittest.TestCase)
def test_as_human_string(self):
d1 = SvnDate('1999-12-31T23:59:59.000000Z')
s1 = d1.as_human_string()
- self.assertEqual(s1[:27], '1999-12-31 23:59:59 +0000 (')
+ self.assertRegexpMatches(s1[:27],
+ r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [+-]\d{4} \(')
class HashTestCase(unittest.TestCase):
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/CreateJ.cpp?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/CreateJ.cpp Wed Jun 5 09:22:43 2013
@@ -151,7 +151,8 @@ CreateJ::ConflictVersion(const svn_wc_co
static jmethodID ctor = 0;
if (ctor == 0)
{
- ctor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;J"
+ ctor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;"
+ "Ljava/lang/String;J"
"Ljava/lang/String;"
"L"JAVA_PACKAGE"/types/NodeKind;"
")V");
@@ -162,6 +163,9 @@ CreateJ::ConflictVersion(const svn_wc_co
jstring jreposURL = JNIUtil::makeJString(version->repos_url);
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
+ jstring jreposUUID = JNIUtil::makeJString(version->repos_uuid);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
jstring jpathInRepos = JNIUtil::makeJString(version->path_in_repos);
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
@@ -169,7 +173,7 @@ CreateJ::ConflictVersion(const svn_wc_co
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
- jobject jversion = env->NewObject(clazz, ctor, jreposURL,
+ jobject jversion = env->NewObject(clazz, ctor, jreposURL, jreposUUID,
(jlong)version->peg_rev, jpathInRepos,
jnodeKind);
if (JNIUtil::isJavaExceptionThrown())
@@ -835,7 +839,8 @@ CreateJ::CommitItem(svn_client_commit_it
"(Ljava/lang/String;"
"L"JAVA_PACKAGE"/types/NodeKind;"
"ILjava/lang/String;"
- "Ljava/lang/String;J)V");
+ "Ljava/lang/String;J"
+ "Ljava/lang/String;)V");
if (JNIUtil::isExceptionThrown())
POP_AND_RETURN_NULL;
}
@@ -862,6 +867,12 @@ CreateJ::CommitItem(svn_client_commit_it
if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_IS_COPY)
jstateFlags |=
org_apache_subversion_javahl_CommitItemStateFlags_IsCopy;
+ if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN)
+ jstateFlags |=
+ org_apache_subversion_javahl_CommitItemStateFlags_LockToken;
+ if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_MOVED_HERE)
+ jstateFlags |=
+ org_apache_subversion_javahl_CommitItemStateFlags_MovedHere;
jstring jurl = JNIUtil::makeJString(item->url);
if (JNIUtil::isJavaExceptionThrown())
@@ -871,12 +882,16 @@ CreateJ::CommitItem(svn_client_commit_it
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
+ jstring jmovedFromPath = JNIUtil::makeJString(item->moved_from_abspath);
+ if (JNIUtil::isJavaExceptionThrown())
+ POP_AND_RETURN_NULL;
+
jlong jcopyRevision = item->revision;
// create the Java object
jobject jitem = env->NewObject(clazz, midConstructor, jpath,
jnodeKind, jstateFlags, jurl,
- jcopyUrl, jcopyRevision);
+ jcopyUrl, jcopyRevision, jmovedFromPath);
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN_NULL;
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/JNIUtil.cpp Wed Jun 5 09:22:43 2013
@@ -179,7 +179,7 @@ bool JNIUtil::JNIGlobalInit(JNIEnv *env)
apr_allocator_max_free_set(allocator, 1);
}
- svn_utf_initialize(g_pool); /* Optimize character conversions */
+ svn_utf_initialize2(FALSE, g_pool); /* Optimize character conversions */
svn_fs_initialize(g_pool); /* Avoid some theoretical issues */
svn_ra_initialize(g_pool);
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp Wed Jun 5 09:22:43 2013
@@ -113,12 +113,12 @@ getLinkedLib(JNIEnv *env, jobject jthis)
{
fid = env->GetFieldID(env->GetObjectClass(jthis), "index", "I");
if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ return NULL;
}
const int index = env->GetIntField(jthis, fid);
if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ return NULL;
const VersionExtended *const vx =
VersionExtended::getCppObjectFromLinkedLib(jthis);
@@ -173,12 +173,12 @@ getLoadedLib(JNIEnv *env, jobject jthis)
{
fid = env->GetFieldID(env->GetObjectClass(jthis), "index", "I");
if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ return NULL;
}
const int index = env->GetIntField(jthis, fid);
if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ return NULL;
const VersionExtended *const vx =
VersionExtended::getCppObjectFromLoadedLib(jthis);
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java Wed Jun 5 09:22:43 2013
@@ -559,7 +559,15 @@ public class ClientNotifyInformation ext
conflict_resolver_done ("conflict resolver done"),
/** Operation left local modifications. */
- left_local_modifications ("left local modifications");
+ left_local_modifications ("left local modifications"),
+
+ /** A copy from a foreign repository has started
+ * @since New in 1.8. */
+ foreign_copy_begin ("foreign copy begin"),
+
+ /** A move in the working copy has been broken
+ * @since New in 1.8. */
+ move_broken ("move broken");
/**
* The description of the action.
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java Wed Jun 5 09:22:43 2013
@@ -70,6 +70,11 @@ public class CommitItem implements java.
long revision;
/**
+ * the source of the move
+ */
+ String movedFromPath;
+
+ /**
* This constructor will be only called from the jni code.
* @param p path to the commit item
* @param nk kind of node (see NodeKind)
@@ -77,8 +82,9 @@ public class CommitItem implements java.
* @param u url of the item
* @param cu copy source url
* @param r revision number
+ * @param mf move source abspath
*/
- public CommitItem(String p, NodeKind nk, int sf, String u, String cu, long r)
+ CommitItem(String p, NodeKind nk, int sf, String u, String cu, long r, String mf)
{
path = p;
nodeKind = nk;
@@ -86,6 +92,7 @@ public class CommitItem implements java.
url = u;
copyUrl = cu;
revision = r;
+ movedFromPath = mf;
}
/**
@@ -149,4 +156,13 @@ public class CommitItem implements java.
{
return revision;
}
+
+ /**
+ * @return the absolute path of the source of a move.
+ * @since 1.8
+ */
+ public String getMovedFromPath()
+ {
+ return movedFromPath;
+ }
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java Wed Jun 5 09:22:43 2013
@@ -53,4 +53,15 @@ public interface CommitItemStateFlags
* the item has been copied
*/
public static final int IsCopy=16;
+
+ /**
+ * the item has a lock token
+ */
+ public static final int LockToken = 32;
+
+ /**
+ * the item was moved to this location
+ * @since 1.8
+ */
+ public static int MovedHere = 64;
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Wed Jun 5 09:22:43 2013
@@ -592,6 +592,7 @@ public interface ISVNClient
* @param localPath target local path
* @param dryRun do not change anything
* @throws ClientException
+ * @deprecated Will be removed in a future release
*/
void mergeReintegrate(String path, Revision pegRevision,
String localPath, boolean dryRun)
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java Wed Jun 5 09:22:43 2013
@@ -131,10 +131,10 @@ public class NativeResources
{
initNativeLibrary();
version = new Version();
- if (!version.isAtLeast(1, 7, 0))
+ if (!version.isAtLeast(1, 9, 0))
{
throw new LinkageError("Native library version must be at least " +
- "1.7.0, but is only " + version);
+ "1.9.0, but is only " + version);
}
}
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Jun 5 09:22:43 2013
@@ -309,6 +309,7 @@ public class SVNClient implements ISVNCl
}
+ /** @deprecated */
public native void mergeReintegrate(String path, Revision pegRevision,
String localPath, boolean dryRun)
throws ClientException;
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java Wed Jun 5 09:22:43 2013
@@ -31,16 +31,19 @@ package org.apache.subversion.javahl.typ
public class ConflictVersion
{
private String reposURL;
+ private String reposUUID;
private long pegRevision;
private String pathInRepos;
private NodeKind nodeKind;
/** This constructor should only be called from JNI code. */
- public ConflictVersion(String reposURL, long pegRevision, String pathInRepos,
+ ConflictVersion(String reposURL, String reposUUID,
+ long pegRevision, String pathInRepos,
NodeKind nodeKind)
{
this.reposURL = reposURL;
+ this.reposUUID = reposUUID;
this.pegRevision = pegRevision;
this.pathInRepos = pathInRepos;
this.nodeKind = nodeKind;
@@ -51,6 +54,12 @@ public class ConflictVersion
return reposURL;
}
+ /** @since 1.8 */
+ public String getReposUUID()
+ {
+ return reposUUID;
+ }
+
public long getPegRevision()
{
return pegRevision;
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java Wed Jun 5 09:22:43 2013
@@ -51,7 +51,11 @@ public class LogDate implements java.io.
{
throw new ParseException("String is not a valid Subversion date", 0);
}
- Date date = formatter.parse(datestr.substring(0, 23) + " UTC");
+ Date date;
+ synchronized(formatter)
+ {
+ date = formatter.parse(datestr.substring(0, 23) + " UTC");
+ }
this.cachedString = datestr;
cachedDate = Calendar.getInstance(UTC);
cachedDate.setTime(date);
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java Wed Jun 5 09:22:43 2013
@@ -53,7 +53,11 @@ public class LogDate implements java.io.
{
throw new ParseException("String is not a valid Subversion date", 0);
}
- Date date = formatter.parse(datestr.substring(0, 23) + " UTC");
+ Date date;
+ synchronized(formatter)
+ {
+ date = formatter.parse(datestr.substring(0, 23) + " UTC");
+ }
this.cachedString = datestr;
cachedDate = Calendar.getInstance(UTC);
cachedDate.setTime(date);
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Jun 5 09:22:43 2013
@@ -3408,6 +3408,7 @@ public class BasicTests extends SVNTests
ConflictDescriptor conflict = conflicts.iterator().next();
assertNotNull("Conflict should not be null", conflict);
+ assertNotNull("Repository UUID must be set", conflict.getSrcLeftVersion().getReposUUID());
assertEquals(conflict.getSrcLeftVersion().getNodeKind(), NodeKind.file);
assertEquals(conflict.getSrcLeftVersion().getReposURL() + "/" +
@@ -3416,6 +3417,8 @@ public class BasicTests extends SVNTests
if (conflict.getSrcRightVersion() != null)
{
+ assertEquals(conflict.getSrcLeftVersion().getReposUUID(),
+ conflict.getSrcRightVersion().getReposUUID());
assertEquals(conflict.getSrcRightVersion().getNodeKind(), NodeKind.none);
assertEquals(conflict.getSrcRightVersion().getReposURL(), tcTest.getUrl().toString());
assertEquals(conflict.getSrcRightVersion().getPegRevision(), 2L);
Modified: subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Wed Jun 5 09:22:43 2013
@@ -148,12 +148,12 @@ class SVNTests extends TestCase
* Username to use in tests
*/
protected final static String USERNAME = "jrandom";
-
+
/**
* Password to use in tests
*/
protected final static String PASSWORD = "rayjandom";
-
+
/**
* Create a JUnit <code>TestCase</code> instance.
*/
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/core.i
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/core.i?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/core.i (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/core.i Wed Jun 5 09:22:43 2013
@@ -251,6 +251,30 @@
%ignore svn_opt_args_to_target_array;
+/* svn_cmdline.h */
+%ignore svn_cmdline_auth_plaintext_passphrase_prompt;
+%ignore svn_cmdline_auth_plaintext_prompt;
+%ignore svn_cmdline_auth_simple_prompt;
+%ignore svn_cmdline_auth_ssl_client_cert_prompt;
+%ignore svn_cmdline_auth_ssl_client_cert_pw_prompt;
+%ignore svn_cmdline_auth_ssl_server_trust_prompt;
+%ignore svn_cmdline_auth_username_prompt;
+%ignore svn_cmdline_cstring_from_utf8;
+%ignore svn_cmdline_cstring_from_utf8_fuzzy;
+%ignore svn_cmdline_cstring_to_utf8;
+%ignore svn_cmdline_fflush;
+%ignore svn_cmdline_fprintf;
+%ignore svn_cmdline_fputs;
+%ignore svn_cmdline_handle_exit_error;
+%ignore svn_cmdline_output_encoding;
+%ignore svn_cmdline_path_local_style_from_utf8;
+%ignore svn_cmdline_printf;
+%ignore svn_cmdline_prompt_baton2_t;
+%ignore svn_cmdline_prompt_baton_t;
+%ignore svn_cmdline_prompt_user2;
+%ignore svn_cmdline_prompt_user;
+%ignore svn_cmdline_setup_auth_baton;
+
/* Ugliness because the constants are typedefed and SWIG ignores them
as a result. */
%constant svn_revnum_t SWIG_SVN_INVALID_REVNUM = -1;
@@ -331,19 +355,22 @@
};
#endif
-
/* -----------------------------------------------------------------------
- handle the default value of svn_config_get().and the
- config directory of svn_config_read_auth_data() and
- svn_config_write_auth_data().
+ allowable null values
*/
%apply const char *MAY_BE_NULL {
+ /* svn_config_get */
const char *default_value,
- const char *config_dir,
+ /* svn_config_read_auth_data */
+ const char *config_dir,
+ /* svn_diff_file_output_merge */
const char *conflict_original,
const char *conflict_modified,
const char *conflict_latest,
- const char *conflict_separator
+ const char *conflict_separator,
+ /* svn_cmdline_create_auth_baton */
+ const char *username,
+ const char *password
};
/* -----------------------------------------------------------------------
@@ -707,11 +734,11 @@ svn_swig_pl_set_current_pool (apr_pool_t
#ifdef SWIGPYTHON
/* pl and rb aren't yet implemented */
-%callback_typemap_maybenull(svn_auth_cleanup_func_t cleanup_func,
- void *cleanup_baton,
- svn_swig_py_auth_cleanup_func,
- svn_swig_pl_auth_cleanup_func,
- svn_swig_rb_auth_cleanup_func)
+%callback_typemap_maybenull(svn_config_auth_walk_func_t walk_func,
+ void *walk_baton,
+ svn_swig_py_config_auth_walk_func,
+ svn_swig_pl_config_auth_walk_func,
+ svn_swig_rb_config_auth_walk_func)
#endif
/* -----------------------------------------------------------------------
@@ -787,6 +814,7 @@ svn_swig_pl_set_current_pool (apr_pool_t
#pragma SWIG nowarn=+305
%include svn_opt_h.swg
+%include svn_cmdline_h.swg
%include svn_auth_h.swg
%include svn_config_h.swg
%include svn_utf_h.swg
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_containers.swg Wed Jun 5 09:22:43 2013
@@ -265,6 +265,27 @@
#endif
+#ifdef SWIGPERL
+%typemap(in) apr_hash_t *PROPHASH
+ (apr_pool_t *_global_pool = NULL)
+{
+ if (_global_pool == NULL)
+ _global_pool = svn_swig_pl_make_pool((SV *)NULL);
+ $1 = svn_swig_pl_hash_to_prophash($input, _global_pool);
+}
+%typemap(out) apr_hash_t *PROPHASH
+{
+ %append_output(svn_swig_pl_prophash_to_hash($1));
+}
+
+%typemap(out) apr_hash_t *changed_paths2
+{
+ %append_output(
+ ($1) ? svn_swig_pl_convert_hash($1, $descriptor(svn_log_changed_path2_t *))
+ : &PL_sv_undef);
+}
+#endif
+
#ifdef SWIGRUBY
%typemap(in) apr_hash_t *PROPHASH
{
@@ -291,7 +312,6 @@
}
#endif
-#if defined(SWIGPYTHON) || defined(SWIGRUBY)
%apply apr_hash_t *PROPHASH {
apr_hash_t *target_props,
apr_hash_t *source_props,
@@ -300,7 +320,6 @@
apr_hash_t *revprop_table,
apr_hash_t *revprops
};
-#endif
#ifdef SWIGRUBY
%typemap(out) apr_hash_t *CHANGED_PATH_HASH
@@ -581,9 +600,13 @@
#endif
#ifdef SWIGPERL
%typemap(in) const apr_array_header_t *STRINGLIST {
- $1 = (apr_array_header_t *) svn_swig_pl_strings_to_array($input,
+ $1 = svn_swig_pl_strings_to_array($input,
_global_pool);
}
+%typemap(in) const apr_array_header_t *STRINGLIST_MAY_BE_NULL {
+ $1 = SvOK($input) ? svn_swig_pl_strings_to_array(
+ $input, _global_pool) : NULL;
+}
#endif
#ifdef SWIGRUBY
%typemap(in) const apr_array_header_t *STRINGLIST {
@@ -612,7 +635,7 @@
apr_array_header_t *preserved_exts
};
-#ifdef SWIGRUBY
+#if defined(SWIGPERL) || defined(SWIGRUBY)
%apply const apr_array_header_t *STRINGLIST_MAY_BE_NULL {
apr_array_header_t *revprops
};
@@ -623,7 +646,7 @@
*/
#ifdef SWIGPERL
%typemap(in) apr_array_header_t *providers {
- $1 = (apr_array_header_t *) svn_swig_pl_objs_to_array($input,
+ $1 = svn_swig_pl_objs_to_array($input,
$descriptor(svn_auth_provider_object_t *), _global_pool);
}
#endif
@@ -761,6 +784,12 @@
}
#endif
+#ifdef SWIGPERL
+%typemap(in) apr_array_header_t *REVISION_RANGE_LIST {
+ $1 = svn_swig_pl_array_to_apr_array_revision_range($input, _global_pool);
+}
+#endif
+
#ifdef SWIGRUBY
%typemap(in) apr_array_header_t *REVISION_RANGE_LIST {
$1 = svn_swig_rb_array_to_apr_array_revision_range($input, _global_pool);
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/include/svn_types.swg Wed Jun 5 09:22:43 2013
@@ -708,28 +708,10 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
svn_repos_get_logs()
*/
-#ifdef SWIGPYTHON
-%typemap(in) (svn_log_message_receiver_t receiver,
- void *receiver_baton) {
- $1 = svn_swig_py_log_receiver;
- $2 = (void *)$input;
-}
-#endif
-#ifdef SWIGPERL
-%typemap(in) (svn_log_message_receiver_t receiver,
- void *receiver_baton) {
- $1 = svn_swig_pl_thunk_log_receiver;
- $2 = (void *)$input;
-}
-#endif
-
-#ifdef SWIGRUBY
-%typemap(in) (svn_log_message_receiver_t receiver,
- void *receiver_baton) {
- $1 = svn_swig_rb_log_receiver;
- $2 = (void *)svn_swig_rb_make_baton($input, _global_svn_swig_rb_pool);
-}
-#endif
+%callback_typemap(svn_log_message_receiver_t receiver, void *receiver_baton,
+ svn_swig_py_log_receiver,
+ svn_swig_pl_thunk_log_receiver,
+ svn_swig_rb_log_receiver)
/* -----------------------------------------------------------------------
Callback: svn_log_entry_receiver_t
@@ -738,21 +720,10 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
svn_repos_get_logs4()
*/
-#ifdef SWIGPYTHON
-%typemap(in) (svn_log_entry_receiver_t receiver,
- void *receiver_baton) {
- $1 = svn_swig_py_log_entry_receiver;
- $2 = (void *)$input;
-}
-#endif
-
-#ifdef SWIGRUBY
-%typemap(in) (svn_log_entry_receiver_t receiver, void *receiver_baton)
-{
- $1 = svn_swig_rb_log_entry_receiver;
- $2 = (void *)svn_swig_rb_make_baton($input, _global_svn_swig_rb_pool);
-}
-#endif
+%callback_typemap(svn_log_entry_receiver_t receiver, void *receiver_baton,
+ svn_swig_py_log_entry_receiver,
+ svn_swig_pl_thunk_log_entry_receiver,
+ svn_swig_rb_log_entry_receiver)
/* -----------------------------------------------------------------------
Callback: svn_commit_callback_t
@@ -909,7 +880,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
Callback: svn_repos_freeze_func_t
*/
#ifdef SWIGPYTHON
-%typemap(in) (svn_repos_freeze_func_t freeze_body, void *baton)
+%typemap(in) (svn_repos_freeze_func_t freeze_func, void *freeze_baton)
{
$1 = svn_swig_py_repos_freeze_func;
$2 = (void *)$input;
@@ -917,6 +888,17 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
#endif
/* -----------------------------------------------------------------------
+ Callback: svn_fs_freeze_func_t
+*/
+#ifdef SWIGPYTHON
+%typemap(in) (svn_fs_freeze_func_t freeze_func, void *freeze_baton)
+{
+ $1 = svn_swig_py_fs_freeze_func;
+ $2 = (void *)$input;
+}
+#endif
+
+/* -----------------------------------------------------------------------
Callback: svn_proplist_receiver2_t
*/
#ifdef SWIGPYTHON
@@ -1191,7 +1173,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
*/
#ifdef SWIGPERL
%typemap(in) svn_opt_revision_t * (svn_opt_revision_t rev) {
- $1 = svn_swig_pl_set_revision(&rev, $input);
+ $1 = svn_swig_pl_set_revision(&rev, $input, TRUE);
}
#endif
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Wed Jun 5 09:22:43 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>
@@ -98,6 +102,71 @@ static void *convert_pl_revnum_t(SV *val
return (void *)result;
}
+static void *convert_pl_svn_string_t(SV *value, void *dummy, apr_pool_t *pool)
+{
+ svn_string_t *result = apr_palloc(pool, sizeof(svn_string_t));
+ /* just the in typemap for svn_string_t */
+ result->data = SvPV(value, result->len);
+ return (void *)result;
+}
+
+/* Convert a revision range and return a svn_opt_revision_range_t*.
+ * Value can be:
+ * - a _p_svn_opt_revision_range_t object
+ * - a reference to a two-element array, [start, end],
+ * where start and end is anything accepted by svn_swig_pl_set_revision
+ * If value is not acceptable and *(svn_boolean_t *)ctx is FALSE,
+ * convert_pl_revision_range returns NULL, otherwise it croak()s.
+ */
+static void *convert_pl_revision_range(SV *value, void *ctx, apr_pool_t *pool)
+{
+ svn_boolean_t croak_on_error = *(svn_boolean_t *)ctx;
+
+ if (sv_isobject(value) && sv_derived_from(value, "_p_svn_opt_revision_range_t")) {
+ svn_opt_revision_range_t *range;
+ /* this will assign to range */
+ SWIG_ConvertPtr(value, (void **)&range, _SWIG_TYPE("svn_opt_revision_range_t *"), 0);
+ return range;
+ }
+
+ if (SvROK(value)
+ && SvTYPE(SvRV(value)) == SVt_PVAV
+ && av_len((AV *)SvRV(value)) == 1) {
+ /* value is a two-element ARRAY */
+ AV* array = (AV *)SvRV(value);
+ svn_opt_revision_t temp_start, temp_end;
+ svn_opt_revision_t *start, *end;
+ svn_opt_revision_range_t *range;
+
+ /* Note: Due to how svn_swig_pl_set_revision works,
+ * either the passed in svn_opt_revision_t is modified
+ * (and the original pointer returned) or a different pointer
+ * is returned. svn_swig_pl_set_revision may return NULL
+ * only if croak_on_error is FALSE.
+ */
+ start = svn_swig_pl_set_revision(&temp_start,
+ *av_fetch(array, 0, 0), croak_on_error);
+ if (start == NULL)
+ return NULL;
+ end = svn_swig_pl_set_revision(&temp_end,
+ *av_fetch(array, 1, 0), croak_on_error);
+ if (end == NULL)
+ return NULL;
+
+ /* allocate a new range and copy in start and end fields */
+ range = apr_palloc(pool, sizeof(*range));
+ range->start = *start;
+ range->end = *end;
+ return range;
+ }
+
+ if (croak_on_error)
+ croak("unknown revision range: "
+ "must be an array of length 2 whose elements are acceptable "
+ "as opt_revision_t or a _p_svn_opt_revision_range_t object");
+ return NULL;
+}
+
/* perl -> c hash convertors */
static apr_hash_t *svn_swig_pl_to_hash(SV *source,
pl_element_converter_t cv,
@@ -156,11 +225,15 @@ apr_hash_t *svn_swig_pl_objs_to_hash_of_
NULL, pool);
}
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool)
+{
+ return svn_swig_pl_to_hash(source, convert_pl_svn_string_t, NULL, pool);
+}
+
/* perl -> c array convertors */
-static const
-apr_array_header_t *svn_swig_pl_to_array(SV *source,
- pl_element_converter_t cv,
- void *ctx, apr_pool_t *pool)
+static apr_array_header_t *svn_swig_pl_to_array(SV *source,
+ pl_element_converter_t cv,
+ void *ctx, apr_pool_t *pool)
{
int targlen;
apr_array_header_t *temp;
@@ -189,21 +262,57 @@ apr_array_header_t *svn_swig_pl_to_array
return temp;
}
-const apr_array_header_t *svn_swig_pl_strings_to_array(SV *source,
+apr_array_header_t *svn_swig_pl_strings_to_array(SV *source,
apr_pool_t *pool)
{
return svn_swig_pl_to_array(source, convert_pl_string, NULL, pool);
}
-const apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
- swig_type_info *tinfo,
- apr_pool_t *pool)
+apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
+ swig_type_info *tinfo,
+ apr_pool_t *pool)
{
return svn_swig_pl_to_array(source,
(pl_element_converter_t)convert_pl_obj,
tinfo, pool);
}
+/* Convert a single revision range or an array of revisions ranges
+ * Note: We can't simply use svn_swig_pl_to_array() as is, since
+ * it immediatley checks whether source is an array reference and then
+ * proceeds to treat this as the "array of ..." case. But a revision range
+ * may be specified as a (two-element) array. Hence we first try to
+ * convert source as a single revision range. Failing that and if it's
+ * an array we then call svn_swig_pl_to_array(). Otherwise we croak().
+ */
+apr_array_header_t *svn_swig_pl_array_to_apr_array_revision_range(
+ SV *source, apr_pool_t *pool)
+{
+ svn_boolean_t croak_on_error = FALSE;
+ svn_opt_revision_range_t *range;
+
+ if (range = convert_pl_revision_range(source, &croak_on_error, pool)) {
+ apr_array_header_t *temp = apr_array_make(pool, 1,
+ sizeof(svn_opt_revision_range_t *));
+ temp->nelts = 1;
+ APR_ARRAY_IDX(temp, 0, svn_opt_revision_range_t *) = range;
+ return temp;
+ }
+
+ if (SvROK(source) && SvTYPE(SvRV(source)) == SVt_PVAV) {
+ croak_on_error = TRUE;
+ return svn_swig_pl_to_array(source, convert_pl_revision_range,
+ &croak_on_error, pool);
+ }
+
+ croak("must pass a single revision range or a reference to an array of revision ranges");
+
+ /* This return is actually unreachable because of the croak above,
+ * however, Visual Studio's compiler doesn't like if all paths don't have
+ * a return and errors out otherwise. */
+ return NULL;
+}
+
/* element convertors for c -> perl */
typedef SV *(*element_converter_t)(void *value, void *ctx);
@@ -313,11 +422,16 @@ SV *svn_swig_pl_revnums_to_list(const ap
{
return convert_array(array, (element_converter_t)convert_svn_revnum_t,
NULL);
-}
+}
/* perl -> c svn_opt_revision_t conversion */
-svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source)
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev,
+ SV *source,
+ svn_boolean_t croak_on_error)
{
+#define maybe_croak(argv) do { if (croak_on_error) croak argv; \
+ else return NULL; } while (0)
+
if (source == NULL || source == &PL_sv_undef || !SvOK(source)) {
rev->kind = svn_opt_revision_unspecified;
}
@@ -348,33 +462,34 @@ svn_opt_revision_t *svn_swig_pl_set_revi
char *end = strchr(input,'}');
if (!end)
- croak("unknown opt_revision_t string \"%s\": "
- "missing closing brace for \"{DATE}\"", input);
+ maybe_croak(("unknown opt_revision_t string \"%s\": "
+ "missing closing brace for \"{DATE}\"", input));
*end = '\0';
err = svn_parse_date (&matched, &tm, input + 1, apr_time_now(),
svn_swig_pl_make_pool ((SV *)NULL));
if (err) {
svn_error_clear (err);
- croak("unknown opt_revision_t string \"{%s}\": "
- "internal svn_parse_date error", input + 1);
+ maybe_croak(("unknown opt_revision_t string \"{%s}\": "
+ "internal svn_parse_date error", input + 1));
}
if (!matched)
- croak("unknown opt_revision_t string \"{%s}\": "
- "svn_parse_date failed to parse it", input + 1);
+ maybe_croak(("unknown opt_revision_t string \"{%s}\": "
+ "svn_parse_date failed to parse it", input + 1));
rev->kind = svn_opt_revision_date;
rev->value.date = tm;
} else
- croak("unknown opt_revision_t string \"%s\": must be one of "
- "\"BASE\", \"HEAD\", \"WORKING\", \"COMMITTED\", "
- "\"PREV\" or a \"{DATE}\"", input);
+ maybe_croak(("unknown opt_revision_t string \"%s\": must be one of "
+ "\"BASE\", \"HEAD\", \"WORKING\", \"COMMITTED\", "
+ "\"PREV\" or a \"{DATE}\"", input));
} else
- croak("unknown opt_revision_t type: must be undef, a number, "
- "a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
- "\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
- "or a _p_svn_opt_revision_t object");
+ maybe_croak(("unknown opt_revision_t type: must be undef, a number, "
+ "a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
+ "\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
+ "or a _p_svn_opt_revision_t object"));
return rev;
+#undef maybe_croak
}
/* put the va_arg in stack and invoke caller_func with func.
@@ -911,6 +1026,24 @@ svn_error_t *svn_swig_pl_thunk_log_recei
return SVN_NO_ERROR;
}
+svn_error_t *svn_swig_pl_thunk_log_entry_receiver(void *baton,
+ svn_log_entry_t *log_entry,
+ apr_pool_t *pool)
+{
+ SV *receiver = baton;
+
+ if (!SvOK(receiver))
+ return SVN_NO_ERROR;
+
+ svn_swig_pl_callback_thunk(CALL_SV,
+ receiver, NULL,
+ "SS",
+ log_entry, _SWIG_TYPE("svn_log_entry_t *"),
+ pool, POOLINFO);
+
+ return SVN_NO_ERROR;
+}
+
svn_error_t * svn_swig_pl_thunk_client_diff_summarize_func(
const svn_client_diff_summarize_t *diff,
void *baton,
@@ -983,7 +1116,7 @@ svn_error_t *svn_swig_pl_thunk_commit_ca
return SVN_NO_ERROR;
}
-svn_error_t *svn_swig_pl_thunk_commit_callback2(const svn_commit_info_t *commit_info,
+svn_error_t *svn_swig_pl_thunk_commit_callback2(const svn_commit_info_t *commit_info,
void *baton,
apr_pool_t *pool)
{
Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1489765&r1=1489764&r2=1489765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Wed Jun 5 09:22:43 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>
@@ -81,7 +85,7 @@ SV *svn_swig_pl_convert_hash(apr_hash_t
SV *svn_swig_pl_convert_hash_of_revnum_t(apr_hash_t *hash);
-const apr_array_header_t *svn_swig_pl_strings_to_array(SV *source,
+apr_array_header_t *svn_swig_pl_strings_to_array(SV *source,
apr_pool_t *pool);
apr_hash_t *svn_swig_pl_strings_to_hash(SV *source,
@@ -93,9 +97,12 @@ apr_hash_t *svn_swig_pl_objs_to_hash_by_
apr_pool_t *pool);
apr_hash_t *svn_swig_pl_objs_to_hash_of_revnum_t(SV *source,
apr_pool_t *pool);
-const apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool);
+apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
swig_type_info *tinfo,
apr_pool_t *pool);
+apr_array_header_t *svn_swig_pl_array_to_apr_array_revision_range(
+ SV *source, apr_pool_t *pool);
SV *svn_swig_pl_array_to_list(const apr_array_header_t *array);
/* Formerly used by pre-1.0 APIs. Now unused
@@ -106,10 +113,12 @@ SV *svn_swig_pl_convert_array(const apr_
SV *svn_swig_pl_revnums_to_list(const apr_array_header_t *array);
-svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source);
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev,
+ SV *source,
+ svn_boolean_t croak_on_error);
-/* thunked log receiver function. */
-svn_error_t * svn_swig_pl_thunk_log_receiver(void *py_receiver,
+/* thunked log_message receiver function. */
+svn_error_t * svn_swig_pl_thunk_log_receiver(void *baton,
apr_hash_t *changed_paths,
svn_revnum_t rev,
const char *author,
@@ -117,6 +126,11 @@ svn_error_t * svn_swig_pl_thunk_log_rece
const char *msg,
apr_pool_t *pool);
+/* thunked log_entry receiver function. */
+svn_error_t * svn_swig_pl_thunk_log_entry_receiver(void *baton,
+ svn_log_entry_t *log_entry,
+ apr_pool_t *pool);
+
/* thunked diff summarize callback. */
svn_error_t * svn_swig_pl_thunk_client_diff_summarize_func(
const svn_client_diff_summarize_t *diff,