Alexey Neyman <> (stilor)

Found Patch Suggested
r1765506, r1487987, r917640 r1742357, r1732669, r1646905, r1642813, r1627828, r1623683, r1623660, r1623659, r1623317, r1619338, r1619077, r1511353, r1443821, r1380697, r1239553, r984565, r927222 r1487842, r1442645, r1442640

r917640 | cmpilato | 2010-03-01 18:46:05 +0000 (Mon, 01 Mar 2010)

* subversion/svnlook/main.c
  (do_plist): Correctly handle invocations of 'svnlook plist --revprop' when
    used with '-t TXN_NAME' instead of '-r REV'.

Reported by: Alexey Neyman <stilor{_AT_}>

r927222 | rdonch | 2010-03-24 23:29:20 +0000 (Wed, 24 Mar 2010)

SWIG/Python: enable callback functions to return Subversion errors (by
throwing a SubversionException).

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c:
  (callback_exception_error): Extend to check for a SubversionException
   and attempt to translate it into an svn_error_t*.

* subversion/bindings/swig/python/tests/
  (SubversionRepositoryTestCase.test_cease_invocation): New test for
   the above functionality.

Patch by: Alexey Neyman <>
Review by: Jon Foster <>

r984565 | cmpilato | 2010-08-11 20:08:29 +0000 (Wed, 11 Aug 2010)

Fix the type of structures returned in bindings from svn_fs_paths_changed2().

* subversion/include/svn_fs.h
  (svn_fs_paths_changed2): Rename the argument from changed_paths_p to
    changed_paths2_p, so that it's different from argument to

* subversion/bindings/swig/svn_fs.i
  (changed_paths2_p): New %hash_argout_typemap, denotes apr_hash_t containing

Patch by: Alexey Neyman <stilor{_AT_}>
          (Tweaked by me.)

r1239553 | stsp | 2012-02-02 11:35:09 +0000 (Thu, 02 Feb 2012)

Add --no-diff-properties and --patch options to 'svn diff'.
The --patch option implies --no-diff-properties and --show-copies-as-adds.

These options are useful when creating patches for consumers that
do not understand or do not care about Subversion properties.

Patch by: Alexey Neyman <>

* subversion/svn/cl.h
* subversion/svn/main.c
  New options, --no-diff-properties and --patch for svn diff.

* subversion/include/svn_client.h
  (svn_client_diff6,svn_client_diff_peg6): New argument, ignore_prop_diff.
  (svn_client_diff5,svn_client_diff_peg5): Update comments.

* subversion/libsvn_client/deprecated.c
  (svn_client_diff5,svn_client_diff_peg5): Pass FALSE as ignore_prop_diff.

* subversion/libsvn_client/diff.c
  (diff_cmd_baton): New field, ignore_prop_diff.
  (diff_props_changed): Do nothing if diff_cmd_baton->ignore_prop_diff is set.
  (svn_client_diff6,svn_client_diff_peg6): Pass ignore_prop_diff downstream
   via diff_cmd_baton.

* subversion/svn/diff-cmd.c
  (svn_cl__diff): Handle --patch and --no-diff-properties.

* subversion/svn/log-cmd.c
  (log_entry_receiver): Request property changes from svn_client_diff6.

r1380697 | stsp | 2012-09-04 15:52:47 +0000 (Tue, 04 Sep 2012)

* subversion/libsvn_client/diff.c:
  (diff_content_changed): Mark path as visited if diffed by external tool.
   Fixes duplicate occurrences of Index: lines.

Patch by: Alexey Neyman <>

r1442640 | stsp | 2013-02-05 16:03:49 +0000 (Tue, 05 Feb 2013)

Make 'svn diff PATH URL' and 'svn diff URL PATH', where exactly two targets
are given and one target is a URL, a new shorthand invocation syntax for
'svn diff --old PATH --new URL' and 'svn diff --old URL --new PATH',

These invocations used to error out with a "cannot mix repository and working
copy targets" before. User may intuitively try to diff a working copy to a URL
in the manner allowed by these new shorthands, so this is a usability
enhancement (principle of least surprise).

Suggested by: Alexey Neyman

* subversion/svn/diff-cmd.c
  (svn_cl__diff): Map a 2-target diff invocation where one target is a URL and
   the other target is a path to 'svn diff --old TARGET1 --new TARGET2'.

* subversion/svn/svn.c
  (svn_cl__cmd_table): Update 'svn help diff' output accordingly.

r1442645 | stsp | 2013-02-05 16:21:33 +0000 (Tue, 05 Feb 2013)

Tell people who pass mixed target types to 'svn diff' synopsis 1 that they
are probably looking for one of the '--old X --new Y' invocations.

Suggested by: Alexey Neyman

* subversion/svn/diff-cmd.c
  (svn_cl__diff): Wrap the error from svn_cl__assert_homogeneous_target_type()
   with a somewhat verbose but informative message.

r1443821 | julianfoad | 2013-02-08 01:56:29 +0000 (Fri, 08 Feb 2013)

Make 'svn diff --old=FOO --new=BAR' default to WORKING revision rather than
BASE for the old target if the new target is explicitly specified, so that
it is the reverse of the diff from 'svn diff --old=BAR --new=FOO'.

Patch by: Alexey Neyman <stilor{_AT_}>

* subversion/svn/diff-cmd.c
  (svn_cl__diff): Change defaults as described and simplify the logic.

r1487842 | cmpilato | 2013-05-30 13:02:36 +0000 (Thu, 30 May 2013)

* site/publish/roadmap.html
  Add link to issue #1973 for the "log message templates" feature.

Suggested by: Alexey Neyman <stilor{_AT_}>

r1487987 | cmpilato | 2013-05-30 19:38:51 +0000 (Thu, 30 May 2013)

* site/publish/index.html,
* site/publish/news.html
  Fix timestamps of Hackathon news item(s).

Reported by: Alexey Neyman <stilor{_AT_}>

r1511353 | danielsh | 2013-08-07 15:11:04 +0000 (Wed, 07 Aug 2013)

svnmucc: Fix an assertion failure.

* subversion/svnmucc/svnmucc.c
  (main): Check for URLs not having a common ancestor and emit an error
    message instead of failing an assertion later.

Patch by: Alexey Neyman <>
(tweaked by me)

r1619077 | breser | 2014-08-20 11:39:29 +0000 (Wed, 20 Aug 2014)

swig-py: Add close to the core.Stream class.

* subversion/bindings/swig/python/svn/
  (, Stream.write): Raise a ValueError when the stream isn't open.
  (Stream.close): New function.

Patch by: Alexey Neyman <stilor{_at_}>

r1619338 | breser | 2014-08-21 10:05:59 +0000 (Thu, 21 Aug 2014)

Follow-up to r1619122, unbreak the Python bindings.

* subversion/bindings/swig/svn_wc.i
  (svn_wc_conflict_description2_t): Ignore from SWIG binding wrapping.

Patch by: Alexey Neyman <stilor{_at_}>

r1623317 | stilor | 2014-09-08 08:03:03 +0000 (Mon, 08 Sep 2014)

Report transaction name rather than revision number in error message from 'pget'
if it was run with -t option.

Obvious fix.

* subversion/svnlook/svnlook.c
  (do_pget): Report c->txn_name if the revision number is invalid.

r1623659 | stilor | 2014-09-09 05:50:55 +0000 (Tue, 09 Sep 2014)

* committers
  Introduce myself.

r1623660 | stilor | 2014-09-09 05:57:36 +0000 (Tue, 09 Sep 2014)

* tools/client-side/
  New script, an alternative to that can auto-detect
  renames and copies.

r1623683 | stilor | 2014-09-09 08:08:29 +0000 (Tue, 09 Sep 2014)

* build.conf
  (fs-fs-fuzzy-test) Add libsvn_repos as a dependency.

Approved by: julianfoad

r1627828 | stilor | 2014-09-26 17:08:46 +0000 (Fri, 26 Sep 2014)

* tools/client-side/
  Remove stale references to (original name under which this
  script was submitted); reformat to <79 characters/line.

r1642813 | stilor | 2014-12-02 07:53:53 +0000 (Tue, 02 Dec 2014)

Implement Python bindings for dump stream parser.

* subversion/bindings/swig/include/svn_types.swg
  (): Fix a typo in svn_repos_parser_fns2_t type name, add
  svn_repos_parser_fns2_t type to the argout typemap.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
  (item_baton): Add pool; needed for certain methods in dump
  stream parser that do not take pool argument.
  (make_baton): Increment refcount on `editor'; remove incorrect
  the comment stating the current usage is safe. Save pool pointer.
  (close_baton): Decrement refcount on `editor'.
  (svn_swig_py_make_parse_fns3): New function; creates vtable/baton
  to be used in a later call to repos.parse_dumpstream3()

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h:
  (svn_swig_py_make_parse_fns3): New function.

* subversion/bindings/swig/python/svn/
  (Stream.close): Guard against double-close.

* subversion/bindings/swig/python/svn/
  (ParseFns3): New class; vtable for dump stream parser.

* subversion/bindings/swig/python/tests/
  (test_parse_fns3): Test for dump stream parser bindings.
  (test_unnamed_editor): Test for make_baton/close_baton fix.

* subversion/bindings/swig/svn_repos.i
  (svn_swig_py_make_parse_fns3): Wrap it.

r1646905 | stilor | 2014-12-20 00:20:00 +0000 (Sat, 20 Dec 2014)

* Use assertEqual() instead of assertListEqual
  (which is only available in Python 2.7+)

r1732669 | stilor | 2016-02-27 21:37:42 +0000 (Sat, 27 Feb 2016)

Minor enhancements, mostly in treating symlinks.

  (ConfigOpt) Allow for multiline option descriptions.
  (SvnVndImport) New option, 'symlink-handling' - how symlinks
    are treated in imported version. Working copy is always treated
  (SvnVndImport.get_lists) If dereferencing symlinks, verify the
    symlink target is sane.
  (SvnVndImport.run_svn) Add trailing empty peg revision if the
    arguments contain '@'.
  (SvnVndImport.do_apply) Handle symlinks.

r1742357 | stilor | 2016-05-05 05:18:15 +0000 (Thu, 05 May 2016)

  (SvnVndImport) New option, exec-permission, to specify handling of
  executable bit. 'clear' matches old behavior (where imported sources
  relied on auto-props to set it), 'preserve' matches it to setting in
  the imported sources
  (SvnVndImport) Fix a bug where a directory is replaced by a symlink
  would cause an error in a later SVN command: need to purge the directory
  contents from the list of WC files.

r1765506 | stsp | 2016-10-18 21:00:57 +0000 (Tue, 18 Oct 2016)

* subversion/libsvn_client/conflicts.c
  (resolve_incoming_delete_accept): Lock the parent of the node we're deleting,
   or the resolver will error out erroneously if accepting an incoming deletion.

Found by: stilor