Josh's SVN wrapper script This wrapper script to Subversion supplements normal svn behavior by adding additional functionality or modifying the output of the default svn subcommands. Much of the functionality implemented here was inspired by the way that git works. It is recommended to put this script in your $PATH as 'jsvn' or something other than 'svn' and to make an alias svn='jsvn'. For example, this .bash_aliases stanza will check if 'jsvn' is in your path and automatically alias 'svn' to it if so: if [[ "$(which jsvn 2>/dev/null)" != "" ]]; then alias svn='jsvn' fi Implemented subcommands: add <file>... - add files as usual; add recursive contents of directories branch[es] [[-d] <branch_name>] - with no arguments, list branches with '*' by the current one - with -d, delete <branch> - otherwise, create a new branch from the current one tag[s] [[-d] <tag_name>] | [-m <old_tag_name> <new_tag_name>] - with no arguments, list tags - with -d, delete <tag> - with -m, rename <old_tag_name> to <new_tag_name> - otherwise, create a new tag from the current branch switch <short_name> - switch to 'trunk', branch name, or tag name without having to specify the full URL - falls back to Subversion "switch" if <short_name> doesn't exist merge <branch> - merge branch <branch> into the current WC path - falls back to Subversion "merge" if <branch> doesn't exist root - output root URL (for use on shell such as "svn log $(svn root)/tags") url - output repository URL of current working directory watch-lock - block until the lock on a file/URL is released users - show a list of contributing users to a SVN path binaries [--set-lock] - show a list of versioned binary files under the current path, with a prepended '*' for those with svn:needs-lock set - with --set-lock, set svn:needs-lock to '*' for binaries lockable [--remove] | [--status] <file[s]> - with no switches, set svn:needs-lock to '*' for file[s] - with --remove, remove svn:needs-lock' for file[s] - with --status, prepended '*' for those with svn:needs-lock set externals - print a list of the externals in the repository The following subcommands are executed using their native handler, but have their output simplified and/or colorized: - diff - log - status - update If the subcommand name begins with two leading underscores ("__"), the underscores will be stripped and the command will be handled by native Subversion without any jsvn processing. Configuration: jsvn will execute the file ~/.jsvn, if it exists, as a Python script. Variables written to will be used as configuration directives. Available configuration directives: use_color: True or False to enable/disable colorization of svn output use_pager: True or False to enable/disable automatic piping of svn output to a pager program pager: A string specifying the pager program (and args) to execute aliases['XXX']: A string or list defining the alias 'XXX'. A string can be used if the alias expands to a single argument. A list must be used to pass multiple arguments to svn. Configuration Examples: pager = 'less -FRXi' # enable case-insensitive searching in less aliases['revert'] = ['revert', '-R'] # default to recursive reverts aliases['s'] = ['status', '--ignore-externals'] aliases['status'] = '__status' # ignore jsvn processing of status command Author: Josh Holtrop History: v1.0 - functional release on github
Description
Languages
Python
100%