Skip to main content

Svnwrap - a wrapper script for Subversion

https://travis-ci.org/drmikehenry/svnwrap.svg https://img.shields.io/pypi/v/svnwrap.svg https://img.shields.io/pypi/status/svnwrap.svg https://img.shields.io/pypi/pyversions/svnwrap.svg

Svnwrap extends the functionality of svn, the command-line interface for the Subversion version control system. Typically, the user will define a shell alias for svn that invokes svnwrap. In this way, operations like svn status will be handled by svnwrap instead of svn. For the Bash shell, the following alias could be placed in ~/.bashrc to make the svn command invoke svnwrap:

alias svn='svnwrap'

Features

  • Suppression of noisy output from certain operations such as svn status (especially beneficial when using svn:externals).

  • Color highlighting of status, diff, and other outputs.

  • Extended “diff” operations (including integration with kdiff3).

  • Configurable URL aliases of the form //alias that map to arbitrary URL prefixes. Configuring the alias proj to be http://server/Project would make the following commands identical:

    svn checkout //proj/some/path
    svn checkout http://server/Project/some/path
  • URL mapping using keywords that takes advantage of context within a working copy. So, for example, in a working copy checked out from http://server/Project/trunk/some/path, creating a tag could be done via:

    svn copy tr: tag:tagname

    The working copy’s URL (http://server/Project/trunk/some/path) is used as context to allow the tr: keyword to extract everything before the “middle” part (/trunk in this case) and append /trunk. The tag: keyword behaves similarly, but appends /tags instead of /trunk. Thus, the above svn copy operation is equivalent to:

    svn copy http://server/Project/trunk http://server/Project/tags/tagname

    Switching or merging a tag is shortened as well:

    svn switch tag:tagname/some/path
    svn merge tag:tagname/some/path
  • URL adjustment for certain commands. URL suffixes like /some/path may often be omitted during a switch or merge operation because svnwrap can infer the suffix from the context of the current checkout. For example, when executed in a working copy checked out from http://server/Project/trunk/some/path, the following are pairs of equivalent commands:

    svn switch tag:tagname/some/path
    svn switch tag:tagname
    
    svn merge tag:tagname/some/path
    svn merge tag:tagname
  • Additional new subcommands such as:

    • svn branch for creating branches.

    • svn ee for editing svn:externals.

  • See built-in help for more details:

    svnwrap helpwrap

Configuration

Svnwrap is configured via a configuration file, typically at one of these locations:

# On Unix:
~/.config/svnwrap/config

# On Windows:
%APPDATA%\svnwrap\config

On first invocation of svnwrap, the config file will be created with a commented skeleton.

Caveats

  • On occasion, the svn client needs to invoke an editor (e.g., to provide a commit message). Without svnwrap, this works fine because the stdout and stderr of svn are connected to a terminal. But to created prettied output and to capture error messages, svnwrap uses pipes to capture stdout and stderr from svn, which makes some console-based editors unable to function correctly. To work around this problem, svnwrap tries to determine which editor svn would invoke, then it sets the SVN_EDITOR environment variable to run some Python code before invoking the original editor. When svn executes this code, stdout and stderr are first reconnected to the console, then the original editor is invoked. Svnwrap looks in most of the places where an editor might be configured, but it checks only per-user environment variables and config files. It will not check any registry settings on Windows, nor will it check any system-wide configuration files. To overcome this limitation, set the SVN_EDITOR environment variable to your preferred editor settings.

License

Svnwrap is available under the terms of the MIT license; see LICENSE.rst file for more details.

Changes

See the file CHANGES.rst for details on changes to svnwrap.

Metadata

Release files for svnwrap 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for svnwrap 0.8.2
File Size Uploaded Provenance Actions
svnwrap-0.8.2.tar.gz 26.4 kB Without provenance Details for svnwrap-0.8.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for svnwrap 0.8.2
File Interpreter ABI Platform Actions
svnwrap-0.8.2-py2.py3-none-any.whl Python 3, Python 2 none any Details for svnwrap-0.8.2-py2.py3-none-any.whl

Total release size: 46.9 kB

Release files / svnwrap-0.8.2.tar.gz

Download URL svnwrap-0.8.2.tar.gz
Size 26.4 kB
Tags Source
SHA-256 checksum
How to use checksums
908e9fe6539d75a8c9288fbf247fabfd95559d3a87825f02e375080a36c29552
BLAKE2b-256 checksum
How to use checksums
d4fed11dc4dfd88c3fa360acbb0b651363e4d2ff352b9040df6faf4c998721b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.9

Release files / svnwrap-0.8.2-py2.py3-none-any.whl

Download URL svnwrap-0.8.2-py2.py3-none-any.whl
Size 20.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
95c47f1df6c7907fabed6c4340431de657df05024fbff2fc991700ce302a4463
BLAKE2b-256 checksum
How to use checksums
8bc1687867189b4b860ce67accabdfceb09f7ab655ead563a59bc85978028454
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.9

Security for svnwrap 0.8.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page