Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/martinmoene/svn-churn
A simple Python script to determine file churn and fix count of a Subversion repository.
https://github.com/martinmoene/svn-churn
Last synced: 16 days ago
JSON representation
A simple Python script to determine file churn and fix count of a Subversion repository.
- Host: GitHub
- URL: https://github.com/martinmoene/svn-churn
- Owner: martinmoene
- License: mit
- Created: 2014-11-04T18:27:46.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2014-11-05T10:55:56.000Z (about 10 years ago)
- Last Synced: 2024-10-28T03:20:52.507Z (2 months ago)
- Language: Python
- Size: 129 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE.txt
Awesome Lists containing this project
README
svn-churn
=========
A simple Python script to determine file churn and fix count of a Subversion repository [1].Usage
-----Usage: svn-churn [options] [repos...]
Options
-h, --help this help screen
-- end options section
Other options upto -- are passed on to the 'svn log' command.
svn-churn mines the log of the given Subversion repository
and presents the number of changes and fixes for each file.
Repos can be specified as a working copy path or a URL.
Examples
Use repositories configured in script:
./svn-churn.py
Use repositories configured in script and limit log used to latest 200 items:
./svn-churn.py --limit 200 --
Report 50 most changed and fixed files (sort on changes*fixes):
./svn-churn.py |sort -n -t , +2 | tail -n 50 |sort -r -n -t , +2
Note
Among a few other things, you can configure the SVN repository in the script.Example
-------
`svn-churn` creates output as shown below.Title line:
Churn,Fixes,Churn*Fixes,File [repository...]
The above title line disappears from the output in the following command:
prompt>svn-churn.py --limit 200 -- https://svn.webkit.org/repository/webkit/trunk \
|sort -n -t , +2 |grep -v ChangeLog |tail -n 10 |sort -r -n -t , +2
14,3,42,/trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm
8,4,32,/trunk/Source/WebCore/WebCore.exp.in
5,5,25,/trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm
7,3,21,/trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
5,4,20,/trunk/Source/WebCore/css/CSSSelector.cpp
6,3,18,/trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
4,4,16,/trunk/Source/WebCore/loader/cache/CachedRawResource.cpp
5,3,15,/trunk/Source/WebKit2/CMakeLists.txt
5,3,15,/trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
5,3,15,/trunk/Source/WebCore/CMakeLists.txtConfiguration
-------------
At the top of the script you can configure the following items.### cfg_reposes
`cfg_reposes` contains the default repositories to use.
cfg_reposes = ['https://svn.webkit.org/repository/webkit/trunk']### cfg_fixed_issues
`cfg_fixed_issues` contains the patterns to recognise log message that concern a fix.cfg_fixed_issues = (
'[Ii]ssue[s]? #',
'[Ff]ix',
'[Cc]orrect'
)### cfg_edited_paths
`cfg_edited_paths` allows you to specify patterns for partial paths with a replacement. This can be used to map paths used in the past to currently used paths, or to strip a path prefix.cfg_edited_paths = (
( r'/trunk/Source/core/', '/trunk/Source/WebCore/' ),
( r'/trunk/Source/' , '' ),
)### cfg_svn
`cfg_svn` specifies the (path of the) Subversion svn command to use.cfg_svn = 'svn'
References
----------
[1] Michael Feathers. [Getting Empirical about Refactoring](http://www.stickyminds.com/article/getting-empirical-about-refactoring). February 15, 2011.