Login | Register
My pages Projects Community openCollabNet

Project home

2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP

If you were registered and logged in, you could join this project.

Summary Utilities for Subversion
Category scm
License GNU General Public License
Owner(s) sunny256

The use of the Subversion version control system is a vital part of many projects, and along with this use follows commands and tasks you do maybe several times a day and would like to automate or combine. Wrappers around the svn executable to extend built-in svn features, or other utilities for tasks svn does not (yet) do.

Examples of this could be merge tracking, repository statistics and other information, diff tools and so on. In the world of the command line, even a one-liner of a script could provide interesting functionality.

svnutils is a collection of those utilities. Scripts or aliases which is ran maybe dozens of times a day, or heavier tools to make the daily use of Subversion a little easier. The svnutils project has room for anyone who want to use or contribute scripts they find useful, but isn’t big enough to have its own package. Please contribute to the project and let’s create a collection of nice utilities for day-to-day use, hook scripts, libraries or bigger programs for more complicated tasks. Instead of having lots of small projects and scripts that never gets out of people’s ~/bin directories, all these programs can be merged into a powerful collection of Subversion tools.

Project contents

At the moment, these scripts and programs are available:

UNIX-like environments

  • svndiff
    Script for looking at differences in a directory tree. Uses vimdiff(1) as default, but can also use other diff programs for viewing. Useful for viewing the changes in text files before commit or resolving conflicts. Can also be configured to work with binary tools if the right tools are available.
  • mergesvn
    Merge changes between files or directories and store the point of the last merge in a special "mergesvn" property. A master location (file or directory) is defined, and other elements in the same or another repository can be updated along with the development in the master element. Includes functionality to locate merge conflicts in a revision range and show differences between the source and destination of the merge.
  • asvn
    Archive SVN (asvn) will allow the recording of file types not normally handled by svn. Currently this includes devices, symlinks and file ownership/permissions.
  • svnbranchroot
    Find the root of a branch. Takes one parameter — the branch, and finds the root revision of the branch — the revision from which it was made. Especially good for investigating tags. What revision of the parent branch was this tag made from?
  • svnmimeset.sh
    This script runs through all files in a hierarchy and sets the Subversion MIME type on all recognized file extensions. It takes one or more "mime.types" files as input, which are in the format of Apache's "mime.types" file.
  • convkeyw
    Convert RCS/Subversion/CVS keywords in various ways, for example stripping dollars and keyword name directly from text files. Designed for use when releasing files and the keywords should not be changed by other programs.
  • sident
    A better (IMHO) ident(1). Does not abort on directories or other non-files, limits the output to known keywords by CVS and Subversion, and also lists compressed keywords.
  • svedit
    Shortcut for editing log messages. Can be run directly in the working copy or against a remote or local repository.
  • svnrevs
    One-liner when called instead of the svn executable will display all revisions as a comma-separated list. Can be used for log messages, scripts etc. Needs Perl.
  • nosvn
    The tiniest script of them all, but also quite useful in pipes and shell commands. Filters out .svn directories from a stream of file names.

MS Windows

  • SvnHotCopy.wsf
    Made to run as scheduled task from a directory you are free to choose. If you like to use it in a post-commit, use the files post-commit.bat and post-commit-wrapper.wsf together with SvnHotCopy.wsf and place them all in the hooks directory.
  • post-commit-wrapper.wsf
    A wrapper script that calls other scripts. In this version calls the SvnHotCopy.wsf
  • post-commit.bat
    To be placed in the repository hooks directory. This file is made to call the script post-commit-wrapper.wsf.

Internet Relay Chat

See you in #svnutils on irc.freenode.net .


GNU General Public License, see the COPYING file for details.

Related resources

$Id: index.html 207 2007-04-05 15:31:57Z sunny256 $