Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

svneverever-1.5.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

svneverever-1.5.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file svneverever-1.5.0.tar.gz.

File metadata

  • Download URL: svneverever-1.5.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.10

File hashes

Hashes for svneverever-1.5.0.tar.gz
Algorithm Hash digest
SHA256 cf5dee9b65ef4683954fe34dd2f70327a27b84079abb38f70197ccf229a19acf
MD5 4867999cdd657ddaa9b671092124e429
BLAKE2b-256 80c711e348438ef0347455812c05c047c34e463b903f7ffb1d182b27f71ee9bc

See more details on using hashes here.

File details

Details for the file svneverever-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: svneverever-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.6.10

File hashes

Hashes for svneverever-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b1ce4ee9ff5cd40f0ae1a464ecdd310314126f69b582c1eee6b46fba49827fb
MD5 b325b67183adfb4e1852fe9f95ee3d74
BLAKE2b-256 e553c83114878c8a62d64f45cb465ba883ea851d4b7b0f6c12e41e0b1331b86e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page