Modified: subversion/branches/ra-git/contrib/client-side/svn_apply_autoprops.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svn_apply_autoprops.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svn_apply_autoprops.py 
(original)
+++ subversion/branches/ra-git/contrib/client-side/svn_apply_autoprops.py Tue 
Oct 11 09:11:50 2016
@@ -152,7 +152,7 @@ def filter_walk(autoprop_lines, dirname,
 def main():
   try:
     opts, args = getopt.getopt(sys.argv[1:], 'h', ['help', 'config='])
-  except getopt.GetoptError, e:
+  except getopt.GetoptError as e:
     usage()
     return 1
 

Modified: 
subversion/branches/ra-git/contrib/client-side/svn_export_empty_files.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svn_export_empty_files.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svn_export_empty_files.py 
(original)
+++ subversion/branches/ra-git/contrib/client-side/svn_export_empty_files.py 
Tue Oct 11 09:11:50 2016
@@ -71,7 +71,7 @@ def check_url_for_export(ctx, url, revis
     # is something wrong with the given URL.
     try:
         if ctx.verbose:
-            print "Trying to list '%s'" % url
+            print("Trying to list '%s'" % url)
         svn.client.ls(url, revision, 0, client_ctx)
 
         # Given a URL, the ls command does not tell you if
@@ -82,7 +82,7 @@ def check_url_for_export(ctx, url, revis
         try:
             last_slash_index = url.rindex('/')
         except ValueError:
-            print "Cannot find a / in the URL '%s'" % url
+            print("Cannot find a / in the URL '%s'" % url)
             return False
 
         parent_url = url[:last_slash_index]
@@ -90,31 +90,31 @@ def check_url_for_export(ctx, url, revis
 
         try:
             if ctx.verbose:
-                print "Trying to list '%s'" % parent_url
+                print("Trying to list '%s'" % parent_url)
             remote_ls = svn.client.ls(parent_url,
                                       revision,
                                       0,
                                       client_ctx)
         except svn.core.SubversionException:
             if ctx.verbose:
-                print "Listing of '%s' failed, assuming URL is top of repos" \
-                      % parent_url
+                print("Listing of '%s' failed, assuming URL is top of repos" \
+                      % parent_url)
             return True
 
         try:
             path_info = remote_ls[path_name]
         except ValueError:
-            print "Able to ls '%s' but '%s' not in ls of '%s'" \
-                  % (url, path_name, parent_url)
+            print("Able to ls '%s' but '%s' not in ls of '%s'" \
+                  % (url, path_name, parent_url))
             return False
 
         if svn.core.svn_node_dir != path_info.kind:
             if ctx.verbose:
-                print "The URL '%s' is not a directory" % url
+                print("The URL '%s' is not a directory" % url)
             return False
         else:
             if ctx.verbose:
-                print "The URL '%s' is a directory" % url
+                print("The URL '%s' is a directory" % url)
             return True
     finally:
         pass
@@ -154,16 +154,16 @@ def synchronize_dir(ctx, url, dir_name,
         msg = ("'%s' which is a local non-directory but remotely a " +
                "directory") % dir_name
         if ctx.delete_local_paths:
-            print "Removing", msg
+            print("Removing", msg)
             os.unlink(dir_name)
             local_path_kind = LOCAL_PATH_NONE
         else:
-            print "Need to remove", msg
+            print("Need to remove", msg)
             ctx.delete_needed = True
             return False
 
     if LOCAL_PATH_NONE == local_path_kind:
-        print "Creating directory '%s'" % dir_name
+        print("Creating directory '%s'" % dir_name)
         os.mkdir(dir_name)
 
     remote_ls = svn.client.ls(url,
@@ -172,7 +172,7 @@ def synchronize_dir(ctx, url, dir_name,
                               client_ctx)
 
     if ctx.verbose:
-        print "Syncing '%s' to '%s'" % (url, dir_name)
+        print("Syncing '%s' to '%s'" % (url, dir_name))
 
     remote_pathnames = remote_ls.keys()
     remote_pathnames.sort()
@@ -191,7 +191,7 @@ def synchronize_dir(ctx, url, dir_name,
 
         if remote_pathname in ctx.ignore_names or \
                full_remote_pathname in ctx.ignore_paths:
-            print "Skipping '%s'" % full_remote_pathname
+            print("Skipping '%s'" % full_remote_pathname)
             continue
 
         # Get the remote path kind.
@@ -221,16 +221,16 @@ def synchronize_dir(ctx, url, dir_name,
                 msg = ("'%s' which is a local directory but remotely a " +
                        "non-directory") % full_remote_pathname
                 if ctx.delete_local_paths:
-                    print "Removing", msg
+                    print("Removing", msg)
                     recursive_delete(full_remote_pathname)
                     local_path_kind = LOCAL_PATH_NONE
                 else:
-                    print "Need to remove", msg
+                    print("Need to remove", msg)
                     ctx.delete_needed = True
                     continue
 
             if LOCAL_PATH_NONE == local_path_kind:
-                print "Creating file '%s'" % full_remote_pathname
+                print("Creating file '%s'" % full_remote_pathname)
                 f = file(full_remote_pathname, 'w')
                 f.close()
 
@@ -240,17 +240,17 @@ def synchronize_dir(ctx, url, dir_name,
         full_local_pathname = os.path.join(dir_name, local_pathname)
         if os.path.isdir(full_local_pathname):
             if ctx.delete_local_paths:
-                print "Removing directory '%s'" % full_local_pathname
+                print("Removing directory '%s'" % full_local_pathname)
                 recursive_delete(full_local_pathname)
             else:
-                print "Need to remove directory '%s'" % full_local_pathname
+                print("Need to remove directory '%s'" % full_local_pathname)
                 ctx.delete_needed = True
         else:
             if ctx.delete_local_paths:
-                print "Removing file '%s'" % full_local_pathname
+                print("Removing file '%s'" % full_local_pathname)
                 os.unlink(full_local_pathname)
             else:
-                print "Need to remove file '%s'" % full_local_pathname
+                print("Need to remove file '%s'" % full_local_pathname)
                 ctx.delete_needed = True
 
     return status
@@ -293,14 +293,14 @@ def main(ctx, url, export_pathname):
                              client_ctx)
 
     if ctx.delete_needed:
-        print "There are files and directories in the local filesystem"
-        print "that do not exist in the Subversion repository that were"
-        print "not deleted.  ",
+        print("There are files and directories in the local filesystem")
+        print("that do not exist in the Subversion repository that were")
+        sys.stdout.write("not deleted.   ")
         if ctx.delete_needed:
-            print "Please pass the --delete command line option"
-            print "to have this script delete those files and directories."
+            print("Please pass the --delete command line option")
+            print("to have this script delete those files and directories.")
         else:
-            print ""
+            print("")
 
     if status:
         return 0
@@ -334,9 +334,10 @@ what you are looking for.  This script w
 non-working working copy that can be crawled with find or find's
 locate utility to make it easier to find files."""
 
-    print >>sys.stderr, message1 % sys.argv[0]
+    sys.stderr.write(message1 % sys.argv[0])
+    sys.stderr.write("\n")
     if verbose_usage:
-        print >>sys.stderr, message2
+        sys.stderr.write(message2 + "\n")
     sys.exit(1)
 
 if __name__ == '__main__':
@@ -363,7 +364,7 @@ if __name__ == '__main__':
     except getopt.GetoptError:
         usage(False)
     if len(args) < 1 or len(args) > 2:
-        print >>sys.stderr, "Incorrect number of arguments"
+        sys.stderr.write("Incorrect number of arguments\n")
         usage(False)
 
     for o, a in opts:
@@ -397,7 +398,7 @@ if __name__ == '__main__':
         try:
             last_slash_index = url.rindex('/')
         except ValueError:
-            print >>sys.stderr, "Cannot find a / in the URL '%s'" % url
+            sys.stderr.write("Cannot find a / in the URL '%s'\n" % url)
             usage(False)
         export_pathname = url[last_slash_index+1:]
 

Modified: 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py
 (original)
+++ 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history-remotely.py
 Tue Oct 11 09:11:50 2016
@@ -366,7 +366,7 @@ class SvnmergeHistoryMigrator:
                             sys.stdout.write("   new sanitized chunk:\n")
                             pretty_print_mergeinfo(history, 6)
                         new_mergeinfo = mergeinfo_merge(new_mergeinfo, history)
-                    except core.SubversionException, e:
+                    except core.SubversionException as e:
                         if not (e.apr_err == core.SVN_ERR_FS_NOT_FOUND
                                 or e.apr_err == 
core.SVN_ERR_FS_NO_SUCH_REVISION):
                             raise

Modified: 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py
 (original)
+++ 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge-migrate-history.py
 Tue Oct 11 09:11:50 2016
@@ -39,12 +39,12 @@ try:
   import svn.core
   import svn.fs
   import svn.repos
-except ImportError, e:
-  print >> sys.stderr, \
+except ImportError as e:
+  sys.stderr.write(\
         "ERROR: Unable to import Subversion's Python bindings: '%s'\n" \
         "Hint: Set your PYTHONPATH environment variable, or adjust your " \
         "PYTHONSTARTUP\nfile to point to your Subversion install " \
-        "location's svn-python directory." % e
+        "location's svn-python directory.\n" % e)
   sys.exit(1)
 
 # Convenience shortcut.
@@ -67,8 +67,8 @@ def usage_and_exit(error_msg=None):
 
   stream = error_msg and sys.stderr or sys.stdout
   if error_msg:
-    print >> stream, "ERROR: %s\n" % error_msg
-  print >> stream, """Usage: %s REPOS_PATH [PATH_PREFIX...] [OPTIONS]
+    stream.write("ERROR: %s\n\n" % error_msg)
+  stream.write("""Usage: %s REPOS_PATH [PATH_PREFIX...] [OPTIONS]
        %s --help
 
 Migrate merge history from svnmerge.py's format to Subversion 1.5's
@@ -88,7 +88,7 @@ Options:
 Example:
 
    %s /path/to/repos trunk branches tags
-""" % (progname, progname, progname)
+""" % (progname, progname, progname))
   sys.exit(error_msg and 1 or 0)
 
 class Migrator:
@@ -105,7 +105,7 @@ class Migrator:
   def log(self, message, only_when_verbose=True):
     if only_when_verbose and not self.verbose:
       return
-    print message
+    print(message)
 
   def run(self):
     self.repos = svn.repos.open(self.repos_path)
@@ -230,7 +230,7 @@ class Migrator:
             filtered_mergeinfo = \
                 svn.core.svn_mergeinfo_merge(filtered_mergeinfo,
                                              source_history)
-          except svn.core.SubversionException, e:
+          except svn.core.SubversionException as e:
             if not (e.apr_err == svn.core.SVN_ERR_FS_NOT_FOUND
                     or e.apr_err == svn.core.SVN_ERR_FS_NO_SUCH_REVISION):
               raise

Modified: subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py 
(original)
+++ subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge.py Tue Oct 
11 09:11:50 2016
@@ -206,13 +206,13 @@ def console_width():
 
 def error(s):
     """Subroutine to output an error and bail."""
-    print >> sys.stderr, "%s: %s" % (NAME, s)
+    sys.stderr.write("%s: %s\n" % (NAME, s))
     sys.exit(1)
 
 def report(s):
     """Subroutine to output progress message, unless in quiet mode."""
     if opts["verbose"]:
-        print "%s: %s" % (NAME, s)
+        print("%s: %s" % (NAME, s))
 
 def prefix_lines(prefix, lines):
     """Given a string representing one or more lines of text, insert the
@@ -263,7 +263,7 @@ try:
             stdoutAndErr = p.communicate()
             stdout = stdoutAndErr[0]
             stderr = stdoutAndErr[1]
-        except OSError, inst:
+        except OSError as inst:
             # Using 1 as failure code; should get actual number somehow? For
             # examples see svnmerge_test.py's TestCase_launch.test_failure and
             # TestCase_launch.test_failurecode.
@@ -319,7 +319,7 @@ def launchsvn(s, show=False, pretend=Fal
     cmd = ' '.join(filter(None, [opts["svn"], "--non-interactive",
                                  username, password, configdir, s]))
     if show or opts["verbose"] >= 2:
-        print cmd
+        print(cmd)
     if pretend:
         return None
     return launch(cmd, **kwargs)
@@ -330,7 +330,7 @@ def svn_command(s):
                     pretend=opts["dry-run"],
                     split_lines=False)
     if not opts["dry-run"]:
-        print out
+        print(out)
 
 def check_dir_clean(dir):
     """Check the current status of dir for local mods."""
@@ -1298,7 +1298,7 @@ def display_revisions(revs, display_styl
     if display_style == "revisions":
         if revs:
             report(revisions_msg)
-            print revs
+            print(revs)
     elif display_style == "logs":
         for start,end in revs.normalized():
             svn_command('log --incremental -v -r %d:%d %s' % \
@@ -1312,10 +1312,10 @@ def display_revisions(revs, display_styl
         for start, end in revs.normalized():
             print
             if start == end:
-                print "%s: changes in revision %d follow" % (NAME, start)
+                print("%s: changes in revision %d follow" % (NAME, start))
             else:
-                print "%s: changes in revisions %d-%d follow" % (NAME,
-                                                                 start, end)
+                print("%s: changes in revisions %d-%d follow" % (NAME,
+                                                                 start, end))
             print
 
             # Note: the starting revision number to 'svn diff' is
@@ -1412,9 +1412,9 @@ def action_init(target_dir, target_props
     # Write out commit message if desired
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
-        print >>f, 'Initialized merge tracking via "%s" with revisions "%s" 
from ' \
-            % (NAME, revs)
-        print >>f, '%s' % source_url
+        f.write('Initialized merge tracking via "%s" with revisions "%s" from 
\n' \
+            % (NAME, revs))
+        f.write('%s\n' % source_url)
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
 
@@ -1555,15 +1555,15 @@ def action_merge(branch_dir, branch_prop
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
         if record_only:
-            print >>f, 'Recorded merge of revisions %s via %s from ' % \
-                  (revs, NAME)
+            f.write('Recorded merge of revisions %s via %s from \n' % \
+                    (revs, NAME))
         else:
-            print >>f, 'Merged revisions %s via %s from ' % \
-                  (revs, NAME)
-        print >>f, '%s' % opts["source-url"]
+            f.write('Merged revisions %s via %s from \n' % \
+                    (revs, NAME))
+        f.write('%s\n' % opts["source-url"])
         if opts["commit-verbose"]:
-            print >>f
-            print >>f, construct_merged_log_message(opts["source-url"], revs),
+            f.write("\n")
+            f.write(construct_merged_log_message(opts["source-url"], revs))
 
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
@@ -1592,11 +1592,11 @@ def action_block(branch_dir, branch_prop
     # Write out commit message if desired
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
-        print >>f, 'Blocked revisions %s via %s' % (revs_to_block, NAME)
+        f.write('Blocked revisions %s via %s\n' % (revs_to_block, NAME))
         if opts["commit-verbose"]:
-            print >>f
-            print >>f, construct_merged_log_message(opts["source-url"],
-                                                    revs_to_block),
+            f.write("\n")
+            f.write(construct_merged_log_message(opts["source-url"],
+                                                 revs_to_block))
 
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
@@ -1623,11 +1623,11 @@ def action_unblock(branch_dir, branch_pr
     # Write out commit message if desired
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
-        print >>f, 'Unblocked revisions %s via %s' % (revs_to_unblock, NAME)
+        f.write('Unblocked revisions %s via %s\n' % (revs_to_unblock, NAME))
         if opts["commit-verbose"]:
-            print >>f
-            print >>f, construct_merged_log_message(opts["source-url"],
-                                                    revs_to_unblock),
+            f.write("\n")
+            f.write(construct_merged_log_message(opts["source-url"],
+                                                 revs_to_unblock))
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
 
@@ -1694,12 +1694,12 @@ def action_rollback(branch_dir, branch_p
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
         if record_only:
-            print >>f, 'Recorded rollback of revisions %s via %s from ' % \
-                  (revs , NAME)
+            f.write('Recorded rollback of revisions %s via %s from \n' % \
+                    (revs , NAME))
         else:
-            print >>f, 'Rolled back revisions %s via %s from ' % \
-                  (revs , NAME)
-        print >>f, '%s' % opts["source-url"]
+            f.write('Rolled back revisions %s via %s from \n' % \
+                    (revs , NAME))
+        f.write('%s\n' % opts["source-url"])
 
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
@@ -1732,8 +1732,8 @@ def action_uninit(branch_dir, branch_pro
     # Write out commit message if desired
     if opts["commit-file"]:
         f = open(opts["commit-file"], "w")
-        print >>f, 'Removed merge tracking for "%s" for ' % NAME
-        print >>f, '%s' % opts["source-url"]
+        f.write('Removed merge tracking for "%s" for \n' % NAME)
+        f.write('%s\n' % opts["source-url"])
         f.close()
         report('wrote commit message to "%s"' % opts["commit-file"])
 
@@ -1876,9 +1876,9 @@ class CommandOpts:
 
     def _print_wrapped(self, text, indent=0):
         text = self._paragraphs(text, self.cwidth - indent)
-        print text.pop(0)
+        print(text.pop(0))
         for t in text:
-            print " " * indent + t
+            print(" " * indent + t)
 
     def _find_common(self, fl):
         for o in self.copts:
@@ -1960,7 +1960,7 @@ class CommandOpts:
                 opts.extend(cmd.opts)
                 args.remove(cmd.name)
             state, args = self._fancy_getopt(args, opts)
-        except getopt.GetoptError, e:
+        except getopt.GetoptError as e:
             self.error(e, cmd)
 
         # Handle builtins
@@ -1981,44 +1981,44 @@ class CommandOpts:
         return cmd, args, state
 
     def error(self, s, cmd=None):
-        print >>sys.stderr, "%s: %s" % (self.progname, s)
+        sys.stderr.write("%s: %s\n" % (self.progname, s))
         if cmd is not None:
             self.print_command_help(cmd)
         else:
             self.print_small_help()
         sys.exit(1)
     def print_small_help(self):
-        print "Type '%s help' for usage" % self.progname
+        print("Type '%s help' for usage" % self.progname)
     def print_usage_line(self):
-        print "usage: %s <subcommand> [options...] [args...]\n" % self.progname
+        print("usage: %s <subcommand> [options...] [args...]\n" % 
self.progname)
     def print_command_list(self):
-        print "Available commands (use '%s help COMMAND' for more details):\n" 
\
-              % self.progname
+        print("Available commands (use '%s help COMMAND' for more details):\n" 
\
+              % self.progname)
         cmds = self.ctable.keys()
         cmds.sort()
         indent = max(map(len, cmds))
         for c in cmds:
             h = self.ctable[c].short_help()
-            print "  %-*s   " % (indent, c),
+            sys.stdout.write("  %-*s    " % (indent, c))
             self._print_wrapped(h, indent+6)
     def print_command_help(self, cmd):
         cmd = self.ctable[str(cmd)]
-        print 'usage: %s %s\n' % (self.progname, cmd.usage)
+        print('usage: %s %s\n' % (self.progname, cmd.usage))
         self._print_wrapped(cmd.help)
         def print_opts(opts, self=self):
             if not opts: return
             flags = [o.repr_flags() for o in opts]
             indent = max(map(len, flags))
             for f,o in zip(flags, opts):
-                print "  %-*s :" % (indent, f),
+                sys.stdout.write("  %-*s : " % (indent, f))
                 self._print_wrapped(o.help, indent+5)
-        print '\nCommand options:'
+        print('\nCommand options:')
         print_opts(cmd.opts)
-        print '\nGlobal options:'
+        print('\nGlobal options:')
         print_opts(self.gopts)
 
     def print_version(self):
-        print self.version
+        print(self.version)
 
 ###############################################################################
 # Options and Commands description
@@ -2367,12 +2367,12 @@ def main(args):
 if __name__ == "__main__":
     try:
         main(sys.argv[1:])
-    except LaunchError, (ret, cmd, out):
+    except LaunchError as (ret, cmd, out):
         err_msg = "command execution failed (exit code: %d)\n" % ret
         err_msg += cmd + "\n"
         err_msg += "".join(out)
         error(err_msg)
     except KeyboardInterrupt:
         # Avoid traceback on CTRL+C
-        print "aborted by user"
+        print("aborted by user")
         sys.exit(1)

Modified: 
subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge_test.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge_test.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge_test.py 
(original)
+++ subversion/branches/ra-git/contrib/client-side/svnmerge/svnmerge_test.py 
Tue Oct 11 09:11:50 2016
@@ -89,7 +89,7 @@ class TestCase_launch(unittest.TestCase)
     def test_failurecode(self):
         try:
             svnmerge.launch(self.cmd*10)
-        except svnmerge.LaunchError, (ret, cmd, out):
+        except svnmerge.LaunchError as (ret, cmd, out):
             self.assertNotEqual(ret, 0)
             self.assertNotEqual(ret, None)
             self.assert_(out)
@@ -254,7 +254,7 @@ class TestCase_SvnMerge(unittest.TestCas
                 reset_svnmerge()
 
                 ret = svnmerge.main(args)
-            except SystemExit, e:
+            except SystemExit as e:
                 ret = e.code
         finally:
             sys.stdout = sys.__stdout__
@@ -302,7 +302,7 @@ class TestCase_SvnMerge(unittest.TestCas
     def launch(self, cmd, **kwargs):
         try:
             out = svnmerge.launch(cmd, split_lines=False)
-        except svnmerge.LaunchError, (ret, cmd, out):
+        except svnmerge.LaunchError as (ret, cmd, out):
             return self._parseoutput(ret, out, **kwargs)
         return self._parseoutput(0, out, **kwargs)
 

Modified: subversion/branches/ra-git/contrib/hook-scripts/hook_toolbox.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/hook-scripts/hook_toolbox.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/hook-scripts/hook_toolbox.py (original)
+++ subversion/branches/ra-git/contrib/hook-scripts/hook_toolbox.py Tue Oct 11 
09:11:50 2016
@@ -99,7 +99,7 @@ def read_config(repos, filename, expecte
   '''
   path = os.path.join(repos, 'conf', filename)
   if not os.path.exists(path):
-    print 'Not present:', path
+    print('Not present:', path)
     return []
 
   config_lines = open(path).readlines()
@@ -114,16 +114,16 @@ def read_config(repos, filename, expecte
                      if len(tokens) == expected_tokens_per_line ]
 
   if len(matching_lines) < len(tokenized_lines):
-    print '*** %d syntax errors in %s' % (
+    print('*** %d syntax errors in %s' % (
              len(tokenized_lines) - len(matching_lines),
-             path)
+             path))
 
   return matching_lines
 
 
 def update_working_copy(wc_path):
   if not os.path.exists(wc_path):
-    print '--> *** Cannot find working copy', wc_path
+    print('--> *** Cannot find working copy', wc_path)
     return None
   return run(os.path.join(BIN_PATH, 'svn'), 'update', wc_path)
 
@@ -131,8 +131,8 @@ def update_working_copy(wc_path):
 def run(*cmd):
   '''Call the given command & args and return what it printed to stdout.
      e.g. result = run('/usr/bin/svn', 'info', wc_dir_path) '''
-  print '-->', ' '.join(cmd)
+  print('-->', ' '.join(cmd))
   stdout = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
-  print stdout.strip()
+  print(stdout.strip())
   return stdout
 

Modified: subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py 
(original)
+++ subversion/branches/ra-git/contrib/hook-scripts/remove-zombie-locks.py Tue 
Oct 11 09:11:50 2016
@@ -84,7 +84,7 @@ assert (svn.core.SVN_VER_MAJOR, svn.core
        + str(svn.core.SVN_VER_MAJOR) + "." + str(svn.core.SVN_VER_MINOR)
 
 def usage_and_exit():
-  print >> sys.stderr, __doc__
+  sys.stderr.write(__doc__ + "\n")
   sys.exit(1)
 
 class RepositoryZombieLockRemover:
@@ -112,7 +112,7 @@ class RepositoryZombieLockRemover:
     """check if the file still exists in HEAD, removing the lock if not"""
     if svn.fs.svn_fs_check_path(self.rev_root, lock.path, callback_pool) \
            == svn.core.svn_node_none:
-      print lock.path
+      print(lock.path)
       svn.repos.svn_repos_fs_unlock(self.repos_ptr, lock.path, lock.token,
                                     True, callback_pool)
 
@@ -120,8 +120,8 @@ class RepositoryZombieLockRemover:
     """iterate over every locked file in repo_path/repo_subpath,
        calling unlock_nonexistent_files for each"""
 
-    print "Removing all zombie locks from repository at %s\n" \
-          "This may take several minutes..." % self.repos_path
+    print("Removing all zombie locks from repository at %s\n" \
+          "This may take several minutes..." % self.repos_path)
 
     # Try to use svn_fs_get_locks2() if it's present, as it's believed
     # to be problem-free.
@@ -151,7 +151,7 @@ class RepositoryZombieLockRemover:
       else:
         svn.fs.svn_fs_get_locks(self.fs_ptr, self.repos_subpath,
                                 self.unlock_nonexistent_files, self.pool)
-    print "Done."
+    print("Done.")
 
 
 class RevisionZombieLockRemover:

Modified: subversion/branches/ra-git/contrib/server-side/add-needs-lock.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/add-needs-lock.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/add-needs-lock.py (original)
+++ subversion/branches/ra-git/contrib/server-side/add-needs-lock.py Tue Oct 11 
09:11:50 2016
@@ -46,8 +46,8 @@ try:
   import svn.core
   import svn.fs
   import svn.repos
-except ImportError, e:
-  print >> sys.stderr, "ERROR: Unable to import Subversion's Python bindings: 
'%s'" % e
+except ImportError as e:
+  sys.stderr.write("ERROR: Unable to import Subversion's Python bindings: 
'%s'\n" % e)
   sys.exit(1)
 
 # Walk a tree returning file paths
@@ -121,7 +121,7 @@ def addneedslock(repos_path, uname='', c
 
   interesting_files = []
 
-  print 'Searching ' + str(len(files)) + ' file(s)...'
+  print('Searching ' + str(len(files)) + ' file(s)...')
 
   for path in files:
     locked_val = svn.fs.get_lock(fsob, path)
@@ -135,7 +135,7 @@ def addneedslock(repos_path, uname='', c
   if interesting_files:
     if dryrun:
       for path in interesting_files:
-        print "Need to add svn:needs-lock to '" + path + "'"
+        print("Need to add svn:needs-lock to '" + path + "'")
     else:
       # open a transaction against HEAD
       headrev = svn.fs.youngest_rev(fsob)
@@ -143,21 +143,21 @@ def addneedslock(repos_path, uname='', c
       root = svn.fs.txn_root(txn)
 
       for path in interesting_files:
-        print "Adding svn:needs-lock to '" + path + "'..."
+        print("Adding svn:needs-lock to '" + path + "'...")
         svn.fs.change_node_prop(root, path, svn.core.SVN_PROP_NEEDS_LOCK, '*')
 
       conflict, newrev = svn.fs.commit_txn(txn)
       if conflict:
         raise Exception("Conflict encountered (%s)" % conflict)
 
-      print 'Created revision: ', newrev
+      print('Created revision: ', newrev)
   else:
-    print 'Nothing changed.  Current Revision: ', headrev
+    print('Nothing changed.  Current Revision: ', headrev)
 
 
 
################################################################################
 def usage():
-  print "USAGE: add-needs-lock.py [-u username] [-m commitmsg] [-i 
includeregexp] [-e excluderegexp] [-r REV] [-d] REPOS-PATH"
+  print("USAGE: add-needs-lock.py [-u username] [-m commitmsg] [-i 
includeregexp] [-e excluderegexp] [-r REV] [-d] REPOS-PATH")
   sys.exit(1)
 
 
@@ -184,12 +184,12 @@ def main():
     if name == '-r':
       rev = int(value)
     if name == '-d':
-      print 'Performing dry run...'
+      print('Performing dry run...')
       dryrun = 1
   if rev is None:
-    print 'Searching all files...'
+    print('Searching all files...')
   else:
-    print 'Searching revision: ' + str(rev) + '...'
+    print('Searching revision: ' + str(rev) + '...')
   if len(args) == 1:
     addneedslock(args[0], uname, commitmsg, included, excluded, rev, dryrun)
   else:

Modified: 
subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/find_good_id.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/find_good_id.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/find_good_id.py 
(original)
+++ 
subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/find_good_id.py 
Tue Oct 11 09:11:50 2016
@@ -101,11 +101,11 @@ if __name__ == '__main__':
     repo_dir = sys.argv[1]
     rev = sys.argv[2]
     size = sys.argv[3]
-    print "Good offset:", find_good_rep_header(repo_dir, rev, size)
+    print("Good offset:", find_good_rep_header(repo_dir, rev, size))
     sys.exit(0)
 
   if len(sys.argv) != 3:
-    print >>sys.stderr, usage
+    sys.stderr.write(usage + "\n")
     sys.exit(1)
 
   repo_dir = sys.argv[1]
@@ -117,7 +117,7 @@ if __name__ == '__main__':
   # reconstruct the file so as to preserve all offsets.
   # ### TODO: This check should be in the caller rather than here.
   if len(good_id) != len(bad_id):
-    print >>sys.stderr, "warning: the good ID has a different length: " + \
-                        "bad id '" + bad_id + "', good id '" + good_id + "'"
+    sys.stderr.write("warning: the good ID has a different length: " + \
+                     "bad id '" + bad_id + "', good id '" + good_id + "'\n")
 
-  print good_id
+  print(good_id)

Modified: 
subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py 
(original)
+++ subversion/branches/ra-git/contrib/server-side/fsfsfixer/fixer/fix-rev.py 
Tue Oct 11 09:11:50 2016
@@ -38,7 +38,7 @@ MAX_FSFS_FORMAT = 5
 # Print a message, only if 'verbose' mode is enabled.
 def verbose_print(str):
   if VERBOSE:
-    print str
+    print(str)
 
 # Echo the arguments to a log file, and also (if verbose) to standard output.
 def log(str):
@@ -101,7 +101,7 @@ def fix_id(repo_dir, rev, bad_id):
                    "good id '" + good_id + "'")
 
   replace_in_rev_file(repo_dir, rev, bad_id, good_id)
-  print "Fixed id: " + bad_id + " -> " + good_id
+  print("Fixed id: " + bad_id + " -> " + good_id)
   fixed_ids[bad_id] = good_id
 
 def fix_checksum(repo_dir, rev, old_checksum, new_checksum):
@@ -112,7 +112,7 @@ def fix_checksum(repo_dir, rev, old_chec
   assert old_checksum != new_checksum
 
   replace_in_rev_file(repo_dir, rev, old_checksum, new_checksum)
-  print "Fixed checksum: " + old_checksum + " -> " + new_checksum
+  print("Fixed checksum: " + old_checksum + " -> " + new_checksum)
   fixed_checksums[old_checksum] = new_checksum
 
 def fix_rep_ref(repo_dir, rev, prefix, rep_rev, bad_offset, rep_size):
@@ -127,7 +127,7 @@ def fix_rep_ref(repo_dir, rev, prefix, r
   if good_offset == bad_offset:
     raise FixError("Attempting to fix a rep ref that appears to be correct: " 
+ old_line)
   replace_in_rev_file(repo_dir, rev, old_line, new_line)
-  print "Fixed rep ref:", old_line, "->", new_line
+  print("Fixed rep ref:", old_line, "->", new_line)
 
 
 def handle_one_error(repo_dir, rev, error_lines):
@@ -226,8 +226,8 @@ def fix_one_error(repo_dir, rev):
       return True
     else:
       verbose_print("Unrecognized error message; trying 'svnlook' instead.")
-  except FixError, e:
-    print 'warning:', e
+  except FixError as e:
+    print('warning:', e)
     verbose_print("Trying 'svnlook' instead.")
 
   # At this point, we've got an 'svnadmin' error that we don't know how to
@@ -238,7 +238,7 @@ def fix_one_error(repo_dir, rev):
   svnlook_err = grab_stderr([SVNLOOK, 'tree', '-r'+rev, repo_dir])
 
   if svnlook_err == []:
-    print 'warning: svnlook did not find an error'
+    print('warning: svnlook did not find an error')
   else:
     if handle_one_error(repo_dir, rev, svnlook_err):
       return True
@@ -281,13 +281,13 @@ def fix_rev(repo_dir, rev):
   # Keep looking for verification errors in r$REV and fixing them while we can.
   while fix_one_error(repo_dir, rev):
     pass
-  print "Revision " + rev + " verifies OK."
+  print("Revision " + rev + " verifies OK.")
 
 
 if __name__ == '__main__':
 
   if len(sys.argv) != 3:
-    print >>sys.stderr, usage
+    sys.stderr.write(usage + "\n")
     sys.exit(1)
 
   repo_dir = sys.argv[1]
@@ -295,6 +295,6 @@ if __name__ == '__main__':
 
   try:
     fix_rev(repo_dir, rev)
-  except FixError, e:
-    print 'error:', e
+  except FixError as e:
+    print('error:', e)
     sys.exit(1)

Modified: subversion/branches/ra-git/contrib/server-side/fsfsverify.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/fsfsverify.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/fsfsverify.py (original)
+++ subversion/branches/ra-git/contrib/server-side/fsfsverify.py Tue Oct 11 
09:11:50 2016
@@ -93,7 +93,7 @@ def log(type, indent, format, *args):
     indentStr = ' ' * indent
     str = format % args
     str = '\n'.join([indentStr + x for x in str.split('\n')])
-    print str
+    print(str)
 
 
 class ByteStream(object):
@@ -344,7 +344,7 @@ class Window(object):
           self.instrByteStream = ZlibByteStream(self.origInstrStream,
                                                 self.compressedInstrLength)
           self.isInstrCompressed = True
-      except Exception, e:
+      except Exception as e:
         new_e = InvalidCompressedStream(
           "Invalid compressed instr stream at offset %d (%s)" % (offset,
                                                                  str(e)),
@@ -359,7 +359,7 @@ class Window(object):
           self.dataByteStream = ZlibByteStream(self.origDataStream,
                                                self.compressedDataLength)
           self.isDataCompressed = True
-      except Exception, e:
+      except Exception as e:
         new_e = InvalidCompressedStream(
           "Invalid compressed data stream at offset %d (%s, %s)\n" % (
               offset, str(e), repr(self)),
@@ -388,7 +388,7 @@ class Window(object):
     while computedInstrLength < expectedInstrLength:
       try:
         instr = SvndiffInstruction(self.instrByteStream)
-      except PotentiallyFixableException, e:
+      except PotentiallyFixableException as e:
         e.window = self
         e.windowOffset = self.windowOffset
         raise
@@ -492,7 +492,7 @@ class Svndiff(object):
         log(LOG_WINDOWS, 3, repr(w))
         w.verify()
         remaining -= w.windowLength
-    except PotentiallyFixableException, e:
+    except PotentiallyFixableException as e:
       e.svndiffStart = self.startingOffset
       raise
 
@@ -561,7 +561,7 @@ class Rep(object):
       raise e
 
     if self.rev != currentRev:
-      print >>sys.stderr, "Skipping text rep since it isn't present in the 
current rev"
+      sys.stderr.write("Skipping text rep since it isn't present in the 
current rev\n")
       return
 
     f.seek(self.offset)
@@ -580,7 +580,7 @@ class Rep(object):
       try:
         svndiff = Svndiff(f, self.length)
         svndiff.verify()
-      except Exception, e:
+      except Exception as e:
         e.rep = self
         e.noderev = self.noderev
         raise
@@ -765,7 +765,7 @@ class NodeRev(object):
 
               if nodeId.rev != self.id.rev:
                   if not os.path.exists(str(nodeId.rev)):
-                      print "Can't check %s" % repr(nodeId)
+                      print("Can't check %s" % repr(nodeId))
                       continue
                   tmp = open(str(nodeId.rev),'rb')
                   tmp.seek(nodeId.offset)
@@ -785,8 +785,8 @@ class NodeRev(object):
           f.seek(offset)
         else:
           # The directory entries are stored in another file.
-          print "Warning: dir entries are stored in rev %d for noderev %s" % (
-            self.text.rev, repr(self.id))
+          print("Warning: dir entries are stored in rev %d for noderev %s" % (
+            self.text.rev, repr(self.id)))
 
   def __repr__(self):
     str = 'NodeRev Id: %s\n type: %s\n' % (repr(self.id), repr(self.type))
@@ -858,18 +858,18 @@ def getRootAndChangedPaths(revFile):
 
 
 def dumpChangedPaths(changedPaths):
-  print "Changed Path Information:"
+  print("Changed Path Information:")
   for (path,
        (id, action, textMod, propMod,
         copyfromRev, copyfromPath)) in changedPaths:
-    print " %s:" % path
-    print "  id: %s" % id
-    print "  action: %s" % action
-    print "  text mod: %s" % textMod
-    print "  prop mod: %s" % propMod
+    print(" %s:" % path)
+    print("  id: %s" % id)
+    print("  action: %s" % action)
+    print("  text mod: %s" % textMod)
+    print("  prop mod: %s" % propMod)
     if copyfromRev != -1:
-      print "  copyfrom path: %s" % copyfromPath
-      print "  copyfrom rev: %s" % copyfromRev
+      print("  copyfrom path: %s" % copyfromPath)
+      print("  copyfrom rev: %s" % copyfromRev)
     print
 
 
@@ -926,7 +926,7 @@ class RegexpStrategy(WalkStrategy):
 
 
 def verify(noderev, revFile, dumpInstructions, dumpWindows):
-  print noderev
+  print(noderev)
 
   if noderev.text:
     noderev.text.verify(revFile,
@@ -944,7 +944,7 @@ def verify(noderev, revFile, dumpInstruc
 def truncate(noderev, revFile):
   txnId = noderev.id
 
-  print "Truncating node %s (%s)" % (txnId, noderev.cpath)
+  print("Truncating node %s (%s)" % (txnId, noderev.cpath))
 
   # Grab the text rep
   textRep = noderev.text
@@ -980,7 +980,7 @@ def truncate(noderev, revFile):
   newTextRep = ' '.join(fields) + '\x0a'
   assert(len(newTextRep) == overallLength)
   revFile.write(newTextRep)
-  print "Done."
+  print("Done.")
   sys.exit(0)
 
 
@@ -1003,7 +1003,7 @@ def fixHeader(e, revFile):
         headerLen = len(line)
     offset = offset + len(line)
 
-  print "Original text rep located at", originalOffset
+  print("Original text rep located at", originalOffset)
 
   # Okay, now we have the original offset of the text rep that was
   # in the process of being written out.  The header portion of the
@@ -1014,14 +1014,14 @@ def fixHeader(e, revFile):
 
   revFile.seek(originalOffset)
   block = revFile.read(copyLen)
-  print "Copy %d bytes from offset %d" % (copyLen, originalOffset)
+  print("Copy %d bytes from offset %d" % (copyLen, originalOffset))
 
-  print "Write %d bytes at offset %d" % (copyLen, e.offset)
+  print("Write %d bytes at offset %d" % (copyLen, e.offset))
   revFile.seek(e.offset)
   revFile.write(block)
   revFile.flush()
 
-  print "Fixed? :-)  Re-run fsfsverify without the -f option"
+  print("Fixed? :-)  Re-run fsfsverify without the -f option")
 
 
 def fixStream(e, revFile):
@@ -1050,8 +1050,8 @@ def fixStream(e, revFile):
   srcOffset = errorOffset
   destOffset = repeatedBlockOffset
 
-  print "Copy %d bytes from offset %d" % (srcLength, srcOffset)
-  print "Write %d bytes at offset %d" % (srcLength, destOffset)
+  print("Copy %d bytes from offset %d" % (srcLength, srcOffset))
+  print("Write %d bytes at offset %d" % (srcLength, destOffset))
 
   while srcOffset < finalOffset:
     blen = 64*1024
@@ -1068,7 +1068,7 @@ def fixStream(e, revFile):
   revFile.flush()
   revFile.close()
 
-  print "Fixed? :-)  Re-run fsfsverify without the -f option"
+  print("Fixed? :-)  Re-run fsfsverify without the -f option")
 
 
 def checkOptions(options):
@@ -1078,16 +1078,16 @@ def checkOptions(options):
       count = count + 1
 
   if count > 1:
-    print >>sys.stderr, "Please use only one of -c, -f, and -t."
+    sys.stderr.write("Please use only one of -c, -f, and -t.\n")
     sys.exit(1)
 
   if options.dumpChanged and (options.dumpWindows or options.dumpInstructions):
-    print >>sys.stderr, \
-      "-c is incompatible with -w and -i.  Dropping -w and/or -i."
+    sys.stderr.write(\
+      "-c is incompatible with -w and -i.  Dropping -w and/or -i.\n")
 
   if options.noVerify and (options.dumpWindows or options.dumpInstructions):
-    print >>sys.stderr, \
-      "--no-verify is incompatible with -w and -i.  Dropping -w and/or -i."
+    sys.stderr.write(\
+      "--no-verify is incompatible with -w and -i.  Dropping -w and/or -i.\n")
 
 
 def handleError(error, withTraceback=False):
@@ -1096,8 +1096,8 @@ def handleError(error, withTraceback=Fal
     import traceback
     traceback.print_exc()
 
-  print >>sys.stderr,"Error %s: %s" % (error.__class__.__name__, str(e))
-  print >>sys.stderr,"Try running with -f to fix the revision"
+  sys.stderr.write("Error %s: %s\n" % (error.__class__.__name__, str(e)))
+  sys.stderr.write("Try running with -f to fix the revision\n")
   sys.exit(1)
 
 
@@ -1136,7 +1136,7 @@ if __name__ == '__main__':
   (options, args) = parser.parse_args()
 
   if len(args) != 1:
-    print >>sys.stderr, "Please specify exactly one rev file."
+    sys.stderr.write("Please specify exactly one rev file.\n")
     parser.print_help()
     sys.exit(1)
 
@@ -1192,7 +1192,7 @@ if __name__ == '__main__':
             truncate(noderev, revFile)
 
         else:
-          print noderev
+          print(noderev)
 
           if not options.noVerify:
             if noderev.text:
@@ -1209,13 +1209,13 @@ if __name__ == '__main__':
       except:
         sys.stdout.flush()
         raise
-  except InvalidRepHeader, e:
+  except InvalidRepHeader as e:
     if not options.fixRlle:
       handleError(e, options.showTraceback)
 
     fixHeader(e, revFile)
 
-  except PotentiallyFixableException, e:
+  except PotentiallyFixableException as e:
     if not options.fixRlle:
       handleError(e, options.showTraceback)
 

Modified: subversion/branches/ra-git/contrib/server-side/svn-tweak-author.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/svn-tweak-author.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/svn-tweak-author.py 
(original)
+++ subversion/branches/ra-git/contrib/server-side/svn-tweak-author.py Tue Oct 
11 09:11:50 2016
@@ -67,16 +67,16 @@ def tweak_rev_author(fs_obj, revision, a
     """Change the value of the svn:author property for REVISION in
     repository filesystem FS_OBJ in AUTHOR."""
     if author is None:
-        print "Deleting author for revision %d..." % (revision),
+        sys.stdout.write("Deleting author for revision %d... " % (revision))
     else:
-        print "Tweaking author for revision %d..." % (revision),
+        sys.stdout.write("Tweaking author for revision %d... " % (revision))
     try:
         fs.svn_fs_change_rev_prop(fs_obj, revision,
                                   core.SVN_PROP_REVISION_AUTHOR, author)
     except:
-        print ""
+        print("")
         raise
-    print "done."
+    print("done.")
 
 def get_fs_obj(repos_path):
     """Return a repository filesystem object for the repository
@@ -117,7 +117,7 @@ def main():
             usage_and_exit("Invalid mode (%s) provided." % (mode))
     except SystemExit:
         raise
-    except Exception, e:
+    except Exception as e:
         error_and_exit(str(e))
 
 if __name__ == "__main__":

Modified: subversion/branches/ra-git/contrib/server-side/svncutter/README
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/contrib/server-side/svncutter/README?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/contrib/server-side/svncutter/README (original)
+++ subversion/branches/ra-git/contrib/server-side/svncutter/README Tue Oct 11 
09:11:50 2016
@@ -1,5 +1,6 @@
-svncutter is a tool for performing various surgical operations on
-Subversion dump files.
+DEPRECATED
 
-This directory exists to hold svncutter and some unit tests that don't exist
-yet.
+The (deprecated) svncutter functionality is now part of "repocutter"
+in the reposurgeon distribution. Please see:
+
+    http://www.catb.org/esr/reposurgeon/

Modified: subversion/branches/ra-git/get-deps.sh
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/get-deps.sh?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/get-deps.sh (original)
+++ subversion/branches/ra-git/get-deps.sh Tue Oct 11 09:11:50 2016
@@ -36,7 +36,8 @@ APU_VERSION=${APU_VERSION:-"1.5.1"}
 SERF_VERSION=${SERF_VERSION:-"1.3.8"}
 ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
 SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
-GMOCK_VERSION=${GMOCK_VERSION:-"1.6.0"}
+GTEST_VERSION=${GMOCK_VERSION:-"1.7.0"}
+GMOCK_VERSION=${GMOCK_VERSION:-"1.7.0"}
 HTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"}
 APR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"}
 
@@ -46,8 +47,10 @@ 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`
-GMOCK=gmock-${GMOCK_VERSION}
-GMOCK_URL=https://googlemock.googlecode.com/files/
+GTEST=release-${GTEST_VERSION}
+GTEST_URL=https://github.com/google/googletest/archive
+GMOCK=release-${GMOCK_VERSION}
+GMOCK_URL=https://github.com/google/googlemock/archive
 
 HTTPD=httpd-${HTTPD_VERSION}
 APR_ICONV=apr-iconv-${APR_ICONV_VERSION}
@@ -67,7 +70,7 @@ APACHE_MIRROR=http://archive.apache.org/
 # helpers
 usage() {
     echo "Usage: $0"
-    echo "Usage: $0 [ apr | serf | zlib | sqlite | gmock ] ..."
+    echo "Usage: $0 [ apr | serf | zlib | sqlite | googlemock ] ..."
     exit $1
 }
 
@@ -89,7 +92,7 @@ get_serf() {
     test -d $BASEDIR/serf && return
 
     cd $TEMPDIR
-    $HTTP_FETCH http://serf.googlecode.com/svn/src_releases/$SERF.tar.bz2
+    $HTTP_FETCH https://archive.apache.org/dist/serf/$SERF.tar.bz2
     cd $BASEDIR
 
     bzip2 -dc $TEMPDIR/$SERF.tar.bz2 | tar -xf -
@@ -122,17 +125,22 @@ get_sqlite() {
 
 }
 
-get_gmock() {
-    test -d $BASEDIR/gmock-fused && return
+get_googlemock() {
+    test -d $BASEDIR/googlemock && return
 
     cd $TEMPDIR
-    $HTTP_FETCH ${GMOCK_URL}/${GMOCK}.zip
-    cd $BASEDIR
+    $HTTP_FETCH ${GTEST_URL}/${GTEST}.zip
+    unzip -q ${GTEST}.zip
+    rm -f ${GTEST}.zip
 
-    unzip -q $TEMPDIR/$GMOCK.zip
+    $HTTP_FETCH ${GMOCK_URL}/${GMOCK}.zip
+    unzip -q ${GMOCK}.zip
+    rm -f ${GMOCK}.zip
 
-    mv $GMOCK/fused-src gmock-fused
-    rm -fr $GMOCK
+    cd $BASEDIR
+    mkdir googlemock
+    mv $TEMPDIR/googletest-release-${GTEST_VERSION} googlemock/googletest
+    mv $TEMPDIR/googlemock-release-${GMOCK_VERSION} googlemock/googlemock
 }
 
 # main()

Modified: subversion/branches/ra-git/notes/directory-index/dirindex.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/directory-index/dirindex.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/directory-index/dirindex.py (original)
+++ subversion/branches/ra-git/notes/directory-index/dirindex.py Tue Oct 11 
09:11:50 2016
@@ -754,13 +754,13 @@ __greek_tree = {
     }
 def greektree(ix, tx):
     def populate(track, items):
-        print 'Populating', track
+        print('Populating', track)
         for name, kind in items.iteritems():
             if kind == 'file':
                 node = ix.add(tx, track, name, NodeRev.FILE)
             else:
                 node = ix.add(tx, track, name, NodeRev.DIR)
-            print 'Added', node, 'node:', node.noderev
+            print('Added', node, 'node:', node.noderev)
             if isinstance(kind, dict):
                 populate(node, kind)
 
@@ -773,16 +773,16 @@ def simpletest(database):
     ix.initialize()
 
     try:
-        print "Lookup root"
+        print("Lookup root")
         tx = ix.get_txn()
-        print "transaction:", tx
+        print("transaction:", tx)
         root = ix.lookup(tx)
-        print "root track:", root
-        print "root noderev", root.noderev
+        print("root track:", root)
+        print("root noderev", root.noderev)
 
-        print 'Create greek tree'
+        print('Create greek tree')
         tx = ix.new_txn(0)
-        print "transaction:", tx
+        print("transaction:", tx)
         greektree(ix, tx)
         ix.commit_txn(tx, 1)
         ix.commit()
@@ -790,24 +790,24 @@ def simpletest(database):
 
         def listdir(noderev, prefix):
             for n in ix.listdir(tx, noderev):
-                print prefix, str(n)
+                print(prefix, str(n))
                 if n._isdir:
                     listdir(n, prefix + "  ")
 
-        print "List contents"
+        print("List contents")
         tx = ix.get_txn()
-        print "transaction:", tx
+        print("transaction:", tx)
         root = ix.lookup(tx)
-        print str(root.noderev)
+        print(str(root.noderev))
         listdir(root.noderev, " ")
 
-        print "Lookup iota"
+        print("Lookup iota")
         track = ix.lookup(tx, None, "iota")
-        print str(track), str(track.noderev)
+        print(str(track), str(track.noderev))
 
-        print "Lookup A/D/H/psi"
+        print("Lookup A/D/H/psi")
         track = ix.lookup(tx, None, "A/D/H/psi")
-        print str(track), str(track.noderev)
+        print(str(track), str(track.noderev))
     finally:
         ix.close()
 

Modified: subversion/branches/ra-git/notes/knobs
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/knobs?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/knobs (original)
+++ subversion/branches/ra-git/notes/knobs Tue Oct 11 09:11:50 2016
@@ -73,7 +73,8 @@ SSL_VERBOSE
 SVN_DEPRECATED
 SVN_FS__TRAIL_DEBUG
 SVN_FS_FS__LOG_ACCESS
-SVN_UTF_NO_UNINITIALISED_ACCESS
+SVN_FS_EMULATE_PATHS_CHANGED
+SVN_FS_EMULATE_REPORT_CHANGES
 
 2.4 Test-only
 
@@ -437,14 +438,26 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Default:   not defined
   Suggested: defined, not defined
 
-5.15 SVN_UTF_NO_UNINITIALISED_ACCESS
+5.15 SVN_FS_EMULATE_PATHS_CHANGED
+  
+  Scope:     libsvn_fs/fs-loader.c
+  Purpose:   Force svn_fs_paths_changed2 to be emulated through
+             svn_fs_paths_changed3 even if the FS provides an implementation
+             of the former.
+  Range:     TRUE, FALSE
+  Default:   TRUE (local default if macro has not been defined)
+  Suggested: FALSE
+
+5.16 SVN_FS_EMULATE_REPORT_CHANGES
+  
+  Scope:     libsvn_fs/fs-loader.c
+  Purpose:   Force svn_fs_paths_changed3 to be emulated through
+             svn_fs_paths_changed2 even if the FS provides an implementation
+             of the former.
+  Range:     TRUE, FALSE
+  Default:   TRUE (local default if macro has not been defined)
+  Suggested: FALSE
 
-  Scope:     libsvn_subr
-  Purpose:   Disables some code that triggers warnings in memory tools
-             such as valgrind and address sanitizer.
-  Range:     definedness
-  Default:   not defined
-  Suggested: defined, not defined
 
 6 Defines that affect unit tests
 ================================

Modified: subversion/branches/ra-git/notes/svnsync.txt
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/svnsync.txt?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/svnsync.txt (original)
+++ subversion/branches/ra-git/notes/svnsync.txt Tue Oct 11 09:11:50 2016
@@ -152,9 +152,6 @@ $ svnsync sync file://`pwd`/dest
    was secretproject, only the changes starting from the revision in which the
    rename to project1 was committed will be synced.
 
-   If you need any of these abilities right now, you may want to look into SVK
-   (http://svk.bestpractical.com/).
-
 Q: What happens when I change a revprop on the master server?
 
 A: That depends, did you change it on a revision that had already been

Modified: subversion/branches/ra-git/subversion/bindings/ctypes-python/README
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/ctypes-python/README?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/ctypes-python/README 
(original)
+++ subversion/branches/ra-git/subversion/bindings/ctypes-python/README Tue Oct 
11 09:11:50 2016
@@ -12,11 +12,13 @@ installed:
                       apr-1-config / apr-config script)
 
 Next, checkout the latest version of ctypesgen from
-http://code.google.com/p/ctypesgen/ to a "ctypesgen" subdirectory under
+https://github.com/davidjamesca/ctypesgen to a "ctypesgen" subdirectory under
 the ctypes python bindings.
 
 For example:
-   $ svn co http://ctypesgen.googlecode.com/svn/trunk ctypesgen
+   $ svn co https://github.com/davidjamesca/ctypesgen/trunk ctypesgen
+or
+   $ git clone https://github.com/davidjamesca/ctypesgen
 
 Once you have all of the above software installed, you can build the
 ctypes Python bindings by running the following:

Modified: 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
 (original)
+++ 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
 Tue Oct 11 09:11:50 2016
@@ -97,7 +97,7 @@ public interface ISVNClient
      * @since 1.9
      */
     void status(String path, Depth depth,
-                boolean onServer, boolean ignoreLocal,
+                boolean onServer, boolean onDisk,
                 boolean getAll, boolean noIgnore,
                 boolean ignoreExternals, boolean depthAsSticky,
                 Collection<String> changelists, StatusCallback callback)

Modified: 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
 (original)
+++ 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
 Tue Oct 11 09:11:50 2016
@@ -507,11 +507,11 @@ public interface ISVNRemote
         private static final long serialVersionUID = 1L;
 
         /**
-         * Private constructor called by the native implementation.
+         * Constructor called by the native implementation.
          */
-        private LocationSegment(String path,
-                                long startRevision,
-                                long endRevision)
+        LocationSegment(String path,
+                        long startRevision,
+                        long endRevision)
         {
             this.path = path;
             this.startRevision = startRevision;
@@ -594,13 +594,13 @@ public interface ISVNRemote
         private static final long serialVersionUID = 1L;
 
         /**
-         * Private constructor called by the native implementation.
+         * Constructor called by the native implementation.
          */
-        private FileRevision(String path, long revision,
-                             boolean resultOfMerge,
-                             Map<String, byte[]> revisionProperties,
-                             Map<String, byte[]> propertiesDelta,
-                             boolean textDelta)
+        FileRevision(String path, long revision,
+                     boolean resultOfMerge,
+                     Map<String, byte[]> revisionProperties,
+                     Map<String, byte[]> propertiesDelta,
+                     boolean textDelta)
         {
             this.path = path;
             this.revision = revision;

Modified: 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java
 (original)
+++ 
subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java
 Tue Oct 11 09:11:50 2016
@@ -107,7 +107,7 @@ class StatusEditor implements ISVNEditor
     {
         //DEBUG:System.err.println("  [J] StatusEditor.addAbsent");
         checkState();
-        throw new RuntimeException("Not implemented: StatusEditor.addAbsent");
+        // ignore this callback, as svn status -u does
     }
 
     public void alterDirectory(String relativePath,

Modified: subversion/branches/ra-git/subversion/bindings/swig/INSTALL
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/INSTALL?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/INSTALL (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/INSTALL Tue Oct 11 
09:11:50 2016
@@ -65,7 +65,7 @@ BUILDING SWIG BINDINGS FOR SVN ON UNIX
 
 
 Step 1:  Install a suitable version of SWIG (which is
-         currently SWIG version 1.3.24 or later, but not SWIG 3.0.0 or newer).
+         currently SWIG version 1.3.24 or later).
 
     * Perhaps your distribution packages a suitable version - if it does
       install it, and skip to the last bullet point in this section.

Modified: subversion/branches/ra-git/subversion/bindings/swig/include/proxy.swg
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/include/proxy.swg?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/include/proxy.swg 
(original)
+++ subversion/branches/ra-git/subversion/bindings/swig/include/proxy.swg Tue 
Oct 11 09:11:50 2016
@@ -60,51 +60,11 @@
         value.assert_valid()
 %}
 
-/* Default code for all wrapped proxy classes in Python */
+/* Default code for all wrapped proxy classes in Python.
+ * Inline the code from a separate file to avoid issues with
+ * SWIG mis-parsing the comments as preprocessor directives. */
 %define %proxy_pythoncode(TYPE)
-%pythoncode {
-  def set_parent_pool(self, parent_pool=None):
-    """Create a new proxy object for TYPE"""
-    import libsvn.core, weakref
-    self.__dict__["_parent_pool"] = \
-      parent_pool or libsvn.core.application_pool;
-    if self.__dict__["_parent_pool"]:
-      self.__dict__["_is_valid"] = weakref.ref(
-        self.__dict__["_parent_pool"]._is_valid)
-
-  def assert_valid(self):
-    """Assert that this object is using valid pool memory"""
-    if "_is_valid" in self.__dict__:
-      assert self.__dict__["_is_valid"](), "Variable has already been deleted"
-
-  def __getattr__(self, name):
-    """Get an attribute from this object"""
-    self.assert_valid()
-
-    value = _swig_getattr(self, self.__class__, name)
-
-    # If we got back a different object than we have, we need to copy all our
-    # metadata into it, so that it looks identical
-    members = self.__dict__.get("_members")
-    if members is not None:
-      _copy_metadata_deep(value, members.get(name))
-        
-    # Verify that the new object is good
-    _assert_valid_deep(value)
-
-    return value
-
-  def __setattr__(self, name, value):
-    """Set an attribute on this object"""
-    self.assert_valid()
-
-    # Save a copy of the object, so that the garbage
-    # collector won't kill the object while it's in
-    # SWIG-land
-    self.__dict__.setdefault("_members",{})[name] = value
-
-    return _swig_setattr(self, self.__class__, name, value)
-}
+%pythoncode "proxy.py"
 %enddef
 
 /* Define a proxy for wrapping an existing struct */

Modified: 
subversion/branches/ra-git/subversion/bindings/swig/perl/native/Base.pm
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/perl/native/Base.pm?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/perl/native/Base.pm 
(original)
+++ subversion/branches/ra-git/subversion/bindings/swig/perl/native/Base.pm Tue 
Oct 11 09:11:50 2016
@@ -28,7 +28,7 @@ C<$data-E<gt>field($new_value)>.
 Once you understand the convention of subversion functions in perl
 bindings, you could look at the subversion api and write them in perl.
 The API is available in the source header files or online at
-http://svn.collab.net/svn-doxygen/.
+L<https://subversion.apache.org/docs/api/latest/>.
 
 =head1 INTERNALS
 

Modified: 
subversion/branches/ra-git/subversion/bindings/swig/python/tests/core.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/python/tests/core.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/python/tests/core.py 
(original)
+++ subversion/branches/ra-git/subversion/bindings/swig/python/tests/core.py 
Tue Oct 11 09:11:50 2016
@@ -80,7 +80,7 @@ class SubversionCoreTestCase(unittest.Te
       # It must remain unchanged through the process.
       try:
         svn.client.info2(*args)
-      except svn.core.SubversionException, exc:
+      except svn.core.SubversionException as exc:
         # find the original exception
         while exc.file != rec.e.file: exc = exc.child
 

Modified: 
subversion/branches/ra-git/subversion/bindings/swig/python/tests/repository.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/python/tests/repository.py?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- 
subversion/branches/ra-git/subversion/bindings/swig/python/tests/repository.py 
(original)
+++ 
subversion/branches/ra-git/subversion/bindings/swig/python/tests/repository.py 
Tue Oct 11 09:11:50 2016
@@ -319,7 +319,7 @@ class SubversionRepositoryTestCase(unitt
     fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, False)
     try:
       fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, False)
-    except core.SubversionException, exc:
+    except core.SubversionException as exc:
       self.assertEqual(exc.apr_err, core.SVN_ERR_FS_PATH_ALREADY_LOCKED)
     fs.lock(self.fs, '/trunk/README.txt', None, None, 0, 0, self.rev, True)
 

Modified: subversion/branches/ra-git/subversion/include/private/ra_svn_sasl.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/ra_svn_sasl.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/ra_svn_sasl.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/ra_svn_sasl.h Tue Oct 
11 09:11:50 2016
@@ -27,14 +27,8 @@
 #ifndef RA_SVN_SASL_H
 #define RA_SVN_SASL_H
 
-#ifdef WIN32
-/* This prevents sasl.h from redefining iovec, which is always defined by APR
-   on win32. */
-#define STRUCT_IOVEC_DEFINED
-#include <sasl.h>
-#else
-#include <sasl/sasl.h>
-#endif
+/* Keep this include statement at the top of this file. */
+#include "private/ra_svn_wrapped_sasl.h"
 
 #include <apr_errno.h>
 #include <apr_pools.h>

Modified: subversion/branches/ra-git/subversion/include/private/svn_branch.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_branch.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_branch.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_branch.h Tue Oct 
11 09:11:50 2016
@@ -166,6 +166,11 @@ svn_branch__txn_create(const svn_branch_
 
 /* Return all the branches in TXN.
  *
+ * These branches are available for reading. (Some of them may also be
+ * mutable.)
+ *
+ * ### Rename to 'list_branches' & return only their ids?
+ *
  * Return an empty array if there are none.
  */
 apr_array_header_t *
@@ -199,11 +204,21 @@ svn_branch__txn_new_eid(svn_branch__txn_
                         int *new_eid_p,
                         apr_pool_t *scratch_pool);
 
-/** Create a new branch or access an existing branch.
+/** Open for writing, either a new branch or an existing branch.
  *
- * When creating a branch, declare its root element id to be ROOT_EID. Do
+ * When creating a new branch, declare its root element id to be ROOT_EID. Do
  * not instantiate the root element, nor any other elements.
  *
+ * TREE_REF specifies the initial tree content, by reference to a committed
+ * tree. It overwrites any existing tree, even if the branch was already
+ * mutable in the txn.
+ *
+ * If TREE_REF is null, then the initial tree is empty for a new branch
+ * (not already present in the txn), or the branch's current tree if the
+ * branch was already present (readable or mutable) in the txn.
+ *
+ * ### TODO: Take a 'history' parameter; 'none' is a valid option.
+ *
  * We use a common 'open subbranch' method for both 'find' and 'add'
  * cases, according to the principle that 'editing' a txn should dictate
  * the new state without reference to the old state.
@@ -211,27 +226,18 @@ svn_branch__txn_new_eid(svn_branch__txn_
  * This method returns a mutable 'branch state' object which is a part of
  * the txn.
  *
- * When adding a new branch, ROOT_EID is used.
- *
  * ### When opening ('finding') an existing branch, ROOT_EID should match
  *     it. (Should we check, and throw an error if not?)
  */
 svn_error_t *
 svn_branch__txn_open_branch(svn_branch__txn_t *txn,
                             svn_branch__state_t **new_branch_p,
-                            const char *new_branch_id,
+                            const char *branch_id,
                             int root_eid,
+                            svn_branch__rev_bid_eid_t *tree_ref,
                             apr_pool_t *result_pool,
                             apr_pool_t *scratch_pool);
 
-svn_error_t *
-svn_branch__txn_branch(svn_branch__txn_t *txn,
-                       svn_branch__state_t **new_branch_p,
-                       svn_branch__rev_bid_eid_t *from,
-                       const char *new_branch_id,
-                       apr_pool_t *result_pool,
-                       apr_pool_t *scratch_pool);
-
 /** Register a sequence point.
  *
  * At a sequence point, elements are arranged in a tree hierarchy: each
@@ -323,6 +329,8 @@ struct svn_branch__state_t
   const char *bid;
 
   /* The revision to which this branch state belongs */
+  /* ### Later we should remove this and let a single state be sharable
+     by multiple txns. */
   svn_branch__txn_t *txn;
 
 };
@@ -385,26 +393,6 @@ svn_branch__id_unnest(const char **outer
                       const char *bid,
                       apr_pool_t *result_pool);
 
-/* Register the existence of BRANCH in TXN.
- */
-svn_error_t *
-svn_branch__txn_add_branch(svn_branch__txn_t *txn,
-                           svn_branch__state_t *branch,
-                           apr_pool_t *scratch_pool);
-
-/* Create a new branch with branch id BID, with no elements
- * (not even a root element).
- *
- * Create and return a new branch object. Register its existence in TXN.
- *
- * Set the root element to ROOT_EID.
- */
-svn_branch__state_t *
-svn_branch__txn_add_new_branch(svn_branch__txn_t *txn,
-                               const char *bid,
-                               int root_eid,
-                               apr_pool_t *scratch_pool);
-
 /* Remove the branch with id BID from the list of branches in TXN.
  */
 svn_error_t *

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_branch_impl.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_branch_impl.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_branch_impl.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_branch_impl.h Tue 
Oct 11 09:11:50 2016
@@ -59,17 +59,6 @@ typedef apr_array_header_t *(*svn_branch
   const svn_branch__txn_t *txn,
   apr_pool_t *result_pool);
 
-typedef svn_error_t *(*svn_branch__txn_v_add_branch_t)(
-  svn_branch__txn_t *txn,
-  svn_branch__state_t *branch,
-  apr_pool_t *scratch_pool);
-
-typedef svn_branch__state_t *(*svn_branch__txn_v_add_new_branch_t)(
-  svn_branch__txn_t *txn,
-  const char *bid,
-  int root_eid,
-  apr_pool_t *scratch_pool);
-
 typedef svn_error_t *(*svn_branch__txn_v_delete_branch_t)(
   svn_branch__txn_t *txn,
   const char *bid,
@@ -90,14 +79,7 @@ typedef svn_error_t *(*svn_branch__txn_v
   svn_branch__state_t **new_branch_p,
   const char *new_branch_id,
   int root_eid,
-  apr_pool_t *result_pool,
-  apr_pool_t *scratch_pool);
-
-typedef svn_error_t *(*svn_branch__txn_v_branch_t)(
-  svn_branch__txn_t *txn,
-  svn_branch__state_t **new_branch_p,
   svn_branch__rev_bid_eid_t *from,
-  const char *new_branch_id,
   apr_pool_t *result_pool,
   apr_pool_t *scratch_pool);
 
@@ -128,13 +110,10 @@ struct svn_branch__txn_vtable_t
 
   /* Methods. */
   svn_branch__txn_v_get_branches_t get_branches;
-  svn_branch__txn_v_add_branch_t add_branch;
-  svn_branch__txn_v_add_new_branch_t add_new_branch;
   svn_branch__txn_v_delete_branch_t delete_branch;
   svn_branch__txn_v_get_num_new_eids_t get_num_new_eids;
   svn_branch__txn_v_new_eid_t new_eid;
   svn_branch__txn_v_open_branch_t open_branch;
-  svn_branch__txn_v_branch_t branch;
   svn_branch__txn_v_finalize_eids_t finalize_eids;
   svn_branch__txn_v_serialize_t serialize;
   svn_branch__txn_v_sequence_point_t sequence_point;

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h 
Tue Oct 11 09:11:50 2016
@@ -251,6 +251,23 @@ svn_cmdline__parse_trust_options(
                         const char *opt_arg,
                         apr_pool_t *scratch_pool);
 
+/* Setup signal handlers for signals such as SIGINT and return a
+   cancellation handler function.  This also sets some other signals
+   to be ignored. */
+svn_cancel_func_t
+svn_cmdline__setup_cancellation_handler(void);
+
+/* Set the handlers for signals such as SIGINT back to default. */
+void
+svn_cmdline__disable_cancellation_handler(void);
+
+/* Exit this process with a status that indicates the cancellation
+   signal, or return without exiting if there is no signal.  This
+   allows the shell to use WIFSIGNALED and WTERMSIG to detect the
+   signal.  See http://www.cons.org/cracauer/sigint.html */
+void
+svn_cmdline__cancellation_exit(void);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_diff_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_diff_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_diff_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_diff_private.h 
Tue Oct 11 09:11:50 2016
@@ -141,6 +141,13 @@ svn_diff_hunk__create_deletes_single_lin
                                           apr_pool_t *result_pool,
                                           apr_pool_t *scratch_pool);
 
+/** Fetches the penalty fuzz of the diff hunk. The patch file parser applies
+ * an additional penalty on some cases of bad patch files. These cases may
+ * include errors as headers that aren't consistent with bodies, etc.
+ */
+svn_linenum_t
+svn_diff_hunk__get_fuzz_penalty(const svn_diff_hunk_t *hunk);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/ra-git/subversion/include/private/svn_fs_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_fs_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_fs_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_fs_private.h Tue 
Oct 11 09:11:50 2016
@@ -195,6 +195,22 @@ svn_fs__get_mergeinfo_for_path(svn_merge
                                apr_pool_t *result_pool,
                                apr_pool_t *scratch_pool);
 
+/** Determine the previous location of @a path under @a root and return it
+ * as @a *node_path under @a *node_root.  This may be called for arbitrary
+ * nodes but is intended for nodes that got deleted in @a root, i.e. when
+ * standard navigation fails.  It also works if @a root is transaction root.
+ *
+ * Allocate @a *node_path and @a *node_root in @a result_pool while using
+ * @a scratch_pool for temporaries.
+ */
+svn_error_t *
+svn_fs__get_deleted_node(svn_fs_root_t **node_root,
+                         const char **node_path,
+                         svn_fs_root_t *root,
+                         const char *path,
+                         apr_pool_t *result_pool,
+                         apr_pool_t *scratch_pool);
+
 
 /** @} */
 

Modified: subversion/branches/ra-git/subversion/include/private/svn_fs_util.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_fs_util.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_fs_util.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_fs_util.h Tue Oct 
11 09:11:50 2016
@@ -206,6 +206,15 @@ svn_fs__path_change_create_internal(cons
                                     svn_fs_path_change_kind_t change_kind,
                                     apr_pool_t *pool);
 
+/* Allocate an svn_fs_path_change3_t structure in RESULT_POOL, initialize
+   and return it.
+
+   Set the change_kind to CHANGE_KIND.  Set all other fields to their
+   _unknown, NULL or invalid value, respectively. */
+svn_fs_path_change3_t *
+svn_fs__path_change_create_internal2(svn_fs_path_change_kind_t change_kind,
+                                     apr_pool_t *result_pool);
+
 /* Append REL_PATH (which may contain slashes) to each path that exists in
    the mergeinfo INPUT, and return a new mergeinfo in *OUTPUT.  Deep
    copies the values.  Perform all allocations in POOL. */

Modified: subversion/branches/ra-git/subversion/include/private/svn_io_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_io_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_io_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_io_private.h Tue 
Oct 11 09:11:50 2016
@@ -85,32 +85,6 @@ svn_io__file_lock_autocreate(const char
                              apr_pool_t *pool);
 
 
-/** Buffer test handler function for a generic stream. @see svn_stream_t
- * and svn_stream__is_buffered().
- *
- * @since New in 1.7.
- */
-typedef svn_boolean_t (*svn_stream__is_buffered_fn_t)(void *baton);
-
-/** Set @a stream's buffer test function to @a is_buffered_fn
- *
- * @since New in 1.7.
- */
-void
-svn_stream__set_is_buffered(svn_stream_t *stream,
-                            svn_stream__is_buffered_fn_t is_buffered_fn);
-
-/** Return whether this generic @a stream uses internal buffering.
- * This may be used to work around subtle differences between buffered
- * and non-buffered APR files.  A lazy-open stream cannot report the
- * true buffering state until after the lazy open: a stream that
- * initially reports as non-buffered may report as buffered later.
- *
- * @since New in 1.7.
- */
-svn_boolean_t
-svn_stream__is_buffered(svn_stream_t *stream);
-
 /** Return the underlying file, if any, associated with the stream, or
  * NULL if not available.  Accessing the file bypasses the stream.
  */

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_packed_data.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_packed_data.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_packed_data.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_packed_data.h Tue 
Oct 11 09:11:50 2016
@@ -218,6 +218,11 @@ svn_packed__int_count(svn_packed__int_st
 apr_size_t
 svn_packed__byte_count(svn_packed__byte_stream_t *stream);
 
+/* Return the number of entries left to read from STREAM.
+ */
+apr_size_t
+svn_packed__byte_block_count(svn_packed__byte_stream_t *stream);
+
 /* Return the next number from STREAM as unsigned integer.  Returns 0 when
  * reading beyond the end of the stream.
  */

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_ra_svn_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_ra_svn_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_ra_svn_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_ra_svn_private.h 
Tue Oct 11 09:11:50 2016
@@ -978,7 +978,7 @@ svn_ra_svn__write_cmd_finish_replay(svn_
 svn_error_t *
 svn_ra_svn__write_data_log_changed_path(svn_ra_svn_conn_t *conn,
                                         apr_pool_t *pool,
-                                        const char *path,
+                                        const svn_string_t *path,
                                         char action,
                                         const char *copyfrom_path,
                                         svn_revnum_t copyfrom_rev,

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_repos_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_repos_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_repos_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_repos_private.h 
Tue Oct 11 09:11:50 2016
@@ -150,6 +150,29 @@ svn_repos__retrieve_config(svn_config_t
                            apr_pool_t *pool);
 
 /**
+ * Non-deprecated alias for svn_repos_get_logs4.
+ *
+ * Since the mapping of log5 to ra_get_log is would basically duplicate the
+ * log5->log4 adapter, we provide this log4 wrapper that does not create a
+ * deprecation warning.
+ */
+svn_error_t *
+svn_repos__get_logs_compat(svn_repos_t *repos,
+                           const apr_array_header_t *paths,
+                           svn_revnum_t start,
+                           svn_revnum_t end,
+                           int limit,
+                           svn_boolean_t discover_changed_paths,
+                           svn_boolean_t strict_node_history,
+                           svn_boolean_t include_merged_revisions,
+                           const apr_array_header_t *revprops,
+                           svn_repos_authz_func_t authz_read_func,
+                           void *authz_read_baton,
+                           svn_log_entry_receiver_t receiver,
+                           void *receiver_baton,
+                           apr_pool_t *pool);
+
+/**
  * @defgroup svn_config_pool Configuration object pool API
  * @{
  */

Modified: subversion/branches/ra-git/subversion/include/private/svn_sqlite.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_sqlite.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_sqlite.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_sqlite.h Tue Oct 
11 09:11:50 2016
@@ -555,6 +555,15 @@ svn_sqlite__hotcopy(const char *src_path
                     const char *dst_path,
                     apr_pool_t *scratch_pool);
 
+/* Evaluate the expression EXPR.  If any error is returned, close
+ * the connection in DB. */
+#define SVN_SQLITE__ERR_CLOSE(expr, db) do                            \
+{                                                                     \
+  svn_error_t *svn__err = (expr);                                     \
+  if (svn__err)                                                       \
+    return svn_error_compose_create(svn__err, svn_sqlite__close(db)); \
+} while (0)
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: 
subversion/branches/ra-git/subversion/include/private/svn_utf_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_utf_private.h?rev=1764214&r1=1764213&r2=1764214&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_utf_private.h 
(original)
+++ subversion/branches/ra-git/subversion/include/private/svn_utf_private.h Tue 
Oct 11 09:11:50 2016
@@ -150,6 +150,28 @@ svn_utf__normalize(const char **result,
                    const char *str, apr_size_t len,
                    svn_membuf_t *buf);
 
+/* Transform the UTF-8 string to a shape suitable for comparison with
+ * strcmp(). The tranformation is defined by CASE_INSENSITIVE and
+ * ACCENT_INSENSITIVE arguments. If CASE_INSENSITIVE is non-zero,
+ * remove case distinctions from the string. If ACCENT_INSENSITIVE
+ * is non-zero, remove diacritical marks from the string.
+ *
+ * Use BUF as a temporary storage. If LEN is SVN_UTF__UNKNOWN_LENGTH,
+ * assume STR is null-terminated; otherwise, consider the string only
+ * up to the given length. Place the tranformed string in *RESULT, which
+ * shares storage with BUF and is valid only until the next time BUF is
+ * modified.
+ *
+ * A returned error may indicate that STRING contains invalid UTF-8 or
+ * invalid Unicode codepoints.
+ */
+svn_error_t *
+svn_utf__xfrm(const char **result,
+              const char *str, apr_size_t len,
+              svn_boolean_t case_insensitive,
+              svn_boolean_t accent_insensitive,
+              svn_membuf_t *buf);
+
 /* Check if STRING is a valid, NFC-normalized UTF-8 string.  Note that
  * a FALSE return value may indicate that STRING is not valid UTF-8 at
  * all.



Reply via email to