CVSps project news 3.13 @ 2013-12-11 Terminal release of this code - the branch and tag analysis is just not good enough on anything other than a linear repository. Use cvs-fast-export instead. 3.12 @ 2013-12-10 Warning: execute permissions on CVS files are not reported! The command-line argument can now be a CVS URL. The --summary-first option was removed to simplify the code's control flow. The -g and --diff-opts options have been removed to simplify dependencies. Deprecation warning for -s, -a, -f, -l, -n, -p, --root, --diff-opts, and -t. 3.11 @ 2013-12-09 Eliminate dodgy tmpnam() use. Make the documentation truthful about --convert-ignores. 3.10 @ 2013-01-20 Make the behavior of a second -d option match the documentation. 3.9 @ 2013-01-20 Added -i option for generating incremental fast exports. 3.8 @ 2013-01-13 Fix buggy generation of the revision-map file (thanks to Chris Rorvick). Don't convert .cvsignores by default, we have field reports of collisions. 3.7 @ 2013-01-08 Bug fix in timezone handling (thanks to Chris Rorvick). Major performance gain in the CVS client code (thanks to Sergei Trofimovich). 3.6 @ 2013-01-06 The third field in an author entry is now interpreted as if it were TZ. 3.5 @ 2013-01-02 Remove the --test-log option now that cvsps has its own test suite. New --reposurgeon option for passing reference-lifting hints to reposurgeon. 3.4 @ 2013-01-01 Incorporate Heiko Voight's patch solving some time-skew cases. The git-tree tests for cvsps are now completely merged into the test suite. Code passes Coverity auditing. 3.3 @ 2012-12-30 There's a new -A option that does author-name mapping in the expected way. There's a new -R option that writes out a revision map. cvsps run from within a repository directory will do the right thing. A bug that could garble translations of branchy repositories has been fixed. 3.2 @ 2012-12-24 DEPRECATION WARNING: non-fast-export reporting may be removed in the future. The tool now always runs in cvs_direct client mode for better performance. Multiple tags per revision will be reported (previously only the latest was). Local CVS commands are no longer used. Caching and -x are gone. The ever-malfunctioning -A option has been removed. 3.1 @ 2012-12-22 If the CVS version is new enough to do commitids, they are used. Removed the --bkcvs option, as bitkeeper's kernel CVS export is gone. Can now handle versions that use CVSACL. 3.0 @ 2012-12-20 New maintainer is Eric S. Raymond. The --fast-export option allows dumping the history as a git import stream. 2.2b1 - add a new line item in the PatchSet output which indicates which branches fork off from after this PatchSet. This is actually the only way to correctly indicate the branching. The 'Ancestor Branch' thing is actually broken by design, and is now deprecated. - sometimes cvs log has a timezone in it (from Ludwig Nussel) - better buffer size handling 2.1 - lots of fixes to get the thing working sufficienly for cvs2git - main features - optionally detect and display ancestor branch information for new detected branches - never allow more than one revision of a file to be in a single patchset (this may disturb the patchset numbers for historical data :-( - use file revisions to help sort, so that initial imports won't be listed as patchset 1, with patchset 2 as the actual creation of the files. - reports log times in localtime (use TZ to override) - many downstream patches from Debian, special thanks to Marcus Crafter for maintaining. From the Debian changelog: - patch from Kim Hansen to fix time calculation bug - documentation patch from J. Bruce Fields - directory name handling patch from David Kilzer - others I'm not sure of, I'd happily update the credit here 2.0rc1 - resolve -r symbols during global symbol resolution - using two -r arguments implicitly sets -b with branch from second -r (if you can speak cvsps arguments, you'll understand this) - fix using cvsps against sourceforge where the actual server repository path has many instances of the project name in it and the 'strstr' was finding the wrong one. instead use the equiv. of 'strrstr' 2.0b10 - fix bug where filenames with 'bad' characters (such as ' ') were being sent unescaped to a shell - add --no-cvs-direct and -Z 0 to disable cvs-direct and compression - extend the 'fuzz-factor' concept by keeping a min/max date encountered for each patchset and fuzz on this interval, rather than fuzzing on the date of the first encountered member only, helps for handling REALLY slow commits where a HUGE number of individual files were modified at a slow trickle. - it turns out that old versions of cvs have two problems 1) they don't support 'rlog' (handled) 2) they don't support 'version', which caused the workaround for 1) to fail. Now cvsps detects cvs versions too old to support version and/or rlog. Additionally, if server is too old, cvs-direct is simply disabled. - parse the rc file first so that the command line will override - add -q to shut-up the warnings 2.0b9 - remove Mbinary from valid-response list - can't handle it - much more (pedantic?) clean-up/close path in cvs_direct to fix all of the lost data and hanging problems at close - added rlog capability to cvs_direct, switched main code to use it. - added version capability to cvs_direct, now cvsps is completely independant of cvs binary for all operations! - added --root and repository command-line arguments, now cvsps is completely indepentant of having working directory! 2.0b8 - fix the cvs_rupdate calls to use the real repository instead of the mangled use_rep_path. This broke cvs_direct generation of add/remove diffs - fix the sed expression to account for the difference between +++ and --- in the first and second lines. This broke remove diffs for direct and external. - attempt to fix a hang-at-flush bug in cvs-direct compression handling 2.0b7 - implement compression in cvs_direct - add command line -Z to specify compression level. applies to cvs-direct and external cvs - implement 'cvs_diff' in cvs-direct - use cvs_diff instead of cvs_rdiff because it allows us to specify all of the lovely diff options - change system to my_system so ctrl-c will get through. indirectly, this is necessary because cvs has loused up the exit codes with the 'cvs diff' command, making it impossible to determine whether the program exited abnormally - add parsing of ~/.cvsps/cvspsrc file at startup where command line arguments can be listed, one per line (parameters to arguments on the same line as the argument). --norc prevents this 2.0b6 - fix bug where if -r was specified along with other filter options, the other filter options were applied first, and the start/end tags were never found. - change -f from strstr to regex - change regex to EXTENDED regex - add the --cvs-direct option 2.0b5 - add a cvs_check_cap for capability checking. - use cvs_check_cap to check whether rlog is supported. it's not supported in 1.11 and before. warn if non-supported version is detected - add --no-rcmds to manually disable rlog and rdiff - add a fix for some bizarre inconsistencies found in some random repositories, such as tagged revisions that don't exist. - remove the adaptive crap filter and bk_log_border logic now that Larry has cleaned up the exported BK->CVS trees. 2.0b4 - add the bk_log_border parsing logic to handle the case where 'cvs log' text was committed into the log - add 'adaptive crap filter' logic to handle all of the different corruptions of the cvs log file - switch to rdiff instead of diff to not require working files to be checked out. Note: when --diff-opts are specified, diff must be used (not rdiff) because rdiff doesn't support options(?!!) 2.0b3 - add the --diff-opts for explicitly setting the diff options. important for setting increased context for example. - use 'cvs rlog' instead of 'cvs log'. important if there are empty directory pruned with cvs update -P for getting consistent patchset numbering - clean up patch_set_affects_branch for handling INVALID tags and the -r especially around a branch point - add the bkcvs proof-of-concept hack 2.0b2 - change the way INVALID tags are reported - show the exact patchsets and revisions that conflict, and don't print anything for 'funky' tags/revisions - add psid to the patchset structure and pass through tree once just to assign the numbers. this allows reporting psid when problems are found (above) - more code restructuring - move stats to own module - commenting cleanups - include the very rudimentary merge_utils.sh functions I use to assist merging stuff - change the way diffs are generated, handle individual members that are before/after the -r tag restrictions - change the semantics of the -s argument. it now only restricts the patch sets the same as the other filtration arguments. new argument -g turns on diff generation - add manpage section discussing tag handling semantics 2.0b1 - major restructuring of source code. single cvsps.c split into a few modules - major rework of the data structures in order to support the most frequently requested, and most desired feature: -r. cvsps can now associated symbolic tags with specific patchsets, branches are now associated with the patchset instead of the individual revision. you can view patchsets committed after a given symbolic tag, or between two tags. - changed the handling of same author, same log message commits on different branches. this now creates multiple patchsets - changed the handling of 'file xyz initially added on branch xyz' log messages, they now create hidden patchsets. - these last two items have made the patchset numbering scheme incompatible with the old scheme. patchsets are going to change numbers. 1.99.1 (not released) - redid the data structures a bit to 'normalize' the references to a file revision. this allows the program to detect the case when a file is added on a branch, and generate the right output for 'cvsps -s' in this case (frequent bug report) - added the '-l' option to restrict patchsets based on log descr content. (patch from Geoff Soutter). added man page for it. - added the --summary-first option suggested by Andi Kleen to have the PatchSet summary information for all patchsets at the head of the output, when multiple patchsets are given to the -s option. - added the all: target to Makefile. (patch from Ben Elliston) - use a single centralized cvsps.cache file per root/repository this obviates the need to 'cvsps -u' in multiple checked out trees of the same repository (patch adopted from Baruch Even) - change the magic name TRUNK (for -b option) to HEAD to be consistent with cvs. (patch from Henrik Nordstrom) - when parsing 'cvs log' output, look for the exact strings that separate the log entries and the files, instead of just the first 8 characters. this allows a wider variety of stuff to be in the log format (including actual patchsets). Inspired by Andy Isaacson. - added the -p option allowing patchset output to go into individual files in a named directory. Based on a patch by Henrik Nordstrom. This is a great idea. Thanks Henrik. 1.3.3 (why isn't this 1.4 again?) - added the 'memory reduction' patch from Baruch Even. This patch greatly reduces the memory footprint of CVSps against a large repository by using dynamically allocated buffers, and by using a tree to hold "common" strings (to avoid having a thousand copies of the string "1.1"). This patch also adds a new option '-t' which displays some memory usage statistics at the top. - added the 00-strip-revision.patch from Steven Tweedie which fixes a parsing problem when there are locked files in the repository - added the 'Tweedie Tweenie' patch from Steven Tweedie (01-stable-tree) which fixes a bug where interspersed commits could cause unstable tree behavior. This would happen especially when multiple users commit at the same time to different parts of a large tree over a slow link. - added the --norc option (based on a suggestion by Soren S. Jorvang) to handle cases where people have bad stuff in their .cvsrc which makes cvsps fail. I could have added the '-f' unconditionally to the command line for cvs when run under cvsps, but somehow that seemed dangerous. 1.3.2 (small feature release) - added the 'multi-patchset' feature to the -s option, provided in its entirety by Daiki Ueno 1.3.1 (bugfix release mostly) - fix bug with updating cache (-u) having to do with matching new and old revisions - fix timestamp_fuzz_factor bug where the fuzz was applied to loading from cache by mistake. - add a spec file (from Jan IVEN ) - improve the parameterization of Makefile, and make things relocatable (from many people, esp. Amitai Schlair ) - fix strip_path_len calculation (again - I had munged the prior fix) Jeffrey Ebert 1.3 - fix case where CVSROOT is initial substring of Repository when creating strip_path variable. Thanks to Jean-Michel Rouet for this fix. - fix case where a subdirectory has a different CVSROOT or Repository path from the toplevel directory (happens when one project is checked out inside another projects subdirectory). Thanks to Philippe M. Chiasson for the fix. 1.2 - Moved cache file location to CVS/ subdirectory. This is where CVS keeps it's meta-data, and putting the cache there keeps it out of the way of other CVS operations. (thanks to Amitai Schlair for suggestion) - Added manual page. (thanks to Amitai Schlair for suggestion) - Fixed the '-b' option to take a special branch name 'TRUNK' which will restrict the output to patchsets made on the main trunk. 1.1 Initial public release. -------- end of changelog ---------