Tool collecting path entries across SVN history
Project description
About
svneverever helps you inspect the structure of a SVN repository and the changes made to it over time. Its most common use probably is in combination with svn-all-fast-export (or "KDE's svn2git" if you wish).
Example
In the following shell session I am first dumping the SVN history of
headphone effect library bs2b
using rsvndump.
(I could pass svn://svn.code.sf.net/p/bs2b/code/
to svneverever directly
but it would mean to download all history for each run to svneverever.)
# svnadmin create bs2b_svn_store
# time sh -c 'rsvndump svn://svn.code.sf.net/p/bs2b/code/ | svnadmin load bs2b_svn_store/'
[..]
real 2m54.403s
user 0m1.003s
sys 0m1.300s
After dumping the SVN history, I make svneverever show a tree of all directories in there ever ever.
# svneverever --no-progress bs2b_svn_store/
Analyzing 175 revisions...
( 1; 175) /branches
( 66; 76) /libbs2b-config-header
[..]
( 1; 175) /tags
(109; 175) /description
[..]
( 46; 175) /libbs2b
[..]
( 28; 46) /libbs2b-2.2.1
[..]
( 31; 175) /plugins
[..]
( 1; 175) /trunk
( 80; 175) /description
( 80; 175) /img
( 2; 175) /libbs2b
( 2; 175) /doc
( 2; 80) /img
( 2; 6) /src
( 4; 175) /m4
( 2; 175) /src
( 2; 175) /win32
( 2; 175) /bs2bconvert
( 2; 175) /bs2bstream
( 2; 175) /examples
( 2; 175) /sndfile
( 2; 175) /plugins
( 38; 175) /audacious
( 38; 175) /m4
( 38; 175) /src
( 24; 175) /foobar2000
(143; 175) /ladspa
(144; 175) /m4
(143; 175) /src
( 39; 175) /qmmp
( 2; 175) /vst
( 2; 175) /src
( 2; 175) /resources
( 2; 175) /win32
(117; 175) /winamp
( 2; 175) /xmms
( 12; 175) /m4
( 12; 175) /src
The ranges on the left indicate at what revision folders appeared first and got deleted latest. You can see a few things in this very output:
-
That a branch called "libbs2b-config-header" got deleted at revision 76.
-
In which order bs2b plug-ins appeared over time.
-
That tag "libbs2b-2.2.1" was deleted at the same revision that a tag folder "libbs2b" appeared.
Let's see if that tag was actually moved into that tag subfolder. Yes it was:
# svneverever --no-progress --tags --flatten bs2b_svn_store/ | grep '2.2.1$'
Analyzing 175 revisions...
(110; 175) /tags/description/2.2.1
( 47; 175) /tags/libbs2b/2.2.1
( 28; 46) /tags/libbs2b-2.2.1
Next I have a look at who the committers where, when they joined or left and how many commits the did (though that last number is of limited value).
# svneverever --no-progress --committers bs2b_svn_store/
Analyzing 175 revisions...
81 ( 1; 174) boris_mikhaylov
94 ( 4; 175) hartwork
Installation
If your Linux distribution of choice does not come with a package for svneverever yet, you can install svneverever using pip from PyPI
# pip install svneverever
or from a Git clone:
# git clone https://github.com/hartwork/svneverever.git
# cd svneverever
# python setup.py install --user
# echo 'export PATH="${HOME}/.local/bin:${PATH}"' >> ~/.bashrc
Besides Python 2.7/3.5/3.6, svneverever's only dependency is pysvn.
Usage
# svneverever --help
usage: svneverever [-h] [--version] [--committers] [--no-numbers]
[--no-progress] [--non-interactive] [--tags] [--branches]
[--no-dots] [--depth DEPTH] [--flatten]
[--unknown-committer NAME]
REPOSITORY
Collects path entries across SVN history
positional arguments:
REPOSITORY Path or URI to SVN repository
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
mode selection arguments:
--committers Collect committer names instead of path information
(default: disabled)
common arguments:
--no-numbers Hide numbers, e.g. revision ranges (default: disabled)
--no-progress Hide progress bar (default: disabled)
--non-interactive Will not ask for input (e.g. login credentials) if
required (default: ask if required)
path tree mode arguments:
--tags Show content of tag folders (default: disabled)
--branches Show content of branch folders (default: disabled)
--no-dots Hide "[..]" omission marker (default: disabled)
--depth DEPTH Maximum depth to print (starting at 1)
--flatten Flatten tree (default: disabled)
committer mode arguments:
--unknown-committer NAME
Committer name to use for commits without a proper
svn:author property (default: "<unknown>")
Please report bugs at https://github.com/hartwork/svneverever. Thank you!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for svneverever-1.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b1ce4ee9ff5cd40f0ae1a464ecdd310314126f69b582c1eee6b46fba49827fb |
|
MD5 | b325b67183adfb4e1852fe9f95ee3d74 |
|
BLAKE2b-256 | e553c83114878c8a62d64f45cb465ba883ea851d4b7b0f6c12e41e0b1331b86e |