1.68: 2024-07-31

Fix minor error in handling of -d argument. Apply stricter code validation including asan, tsan and ubsan tests. Complete spellcheck of all documentation. Assume C99 conformance for restrict keyword.

1.67: 2024-05-28

Fix an embarrassing packaging glitch. Improve documentation.

1.66: 2024-02-25

Add buildprep support for OpenSUSE Make failed author map load crap out early. Combination of -g and -r allows graphing of the CVS forest.

1.65: 2024-02-15

Quietly handle malformed author IDs with embedded spaces. Patch buildprep to do the right thing on FreeBSD. All fatal errors during master parsing report file and rev.

1.64: 2024-02-03

cvsconvert can do multiple conversions in a single run.

1.63: 2024-01-01

Now issues a warning when a vendor branch is detected. Leading !\n in .cvsignore files is translated correctly. Leading # characters on .cvsignore lines get escaped. Spaces in .cvsignore files are translated correctly. git fast-export no longer ships branch-tip resets; track this. Two -g options expose more detail in the output graph. Add -w (whole-repo) option to cvsconvert.

1.62: 2023-11-26

Cope with old-style tagging sometimes found in RCS files. Better detection of repo type (CVS vs RCS). Translate CVS’s handling of spaces and leading ! in ignores.

1.61: 2023-08-21

For git fast-export compatibility, don’t emit NL after comment text.

1.60: 2023-05-14

Fix for expansion of $ headers, doing what the manual actually says. Fix for interpretation of the expand keyword. Test machinery is fully TAPified.

1.59: 2021-09-20

Ubuntu deleted /usr/bin/python, switch all invocations to python3.

1.58: 2021-07-16

Document non-support of non-ASCII characters in user IDs.

1.57: 2021-05-06

Abolish commit sorting by timestamp in the emit stage.

1.56: 2021-04-03

Document more exactly how dollar-cookie expansion works. Describe the known issues with vendor branches. Add support for dnf to buildprep. Don’t choke on CVS-NT username attribute. cvsreduce renamed to cvsstrip for consistency with reposurgeon strip.

1.55: 2020-05-24

Document how to cope with branch cycle errors.

1.54: 2020-05-20

Document what an overrun of the branch depth limit looks like.

1.53: 2020-04-10

A new 'buildprep' script makes installation from source easier.

1.52: 2020-04-09

Incremental mode suppresses generation of default ignores. The -F and -C mode switches are gone; output is now always mode -C.

1.51: 2020-02-12

Keyword expansion default has been changed to match CVS’s The -k option of cvs-fast-export has been removed. Add yet another required warning about time-skew effects.

1.50: 2020-01-02

Improvements and bugfixes in the release machinery.

1.49: 2019-12-10

Change error messages to modern GCC format. cvsconvert accepts an -A option for an authormap. Minor fix to -kv expansion.

1.48: 2019-04-26

cvsconvert now properly escapes branch names in shell commands. cvssync can now sync from a local cvs respository. Fix for a minor bug when reporting fixups on out-of-order commits. Strengthen documentation warnings about unreliability of CVS timestamps.

1.47: 2019-03-19

Deal gracefully with damaged attic files that yield null branch names.

1.46: 2019-03-18

Make cvsreduce do the right (escaping) thing when a filename contains @. In cvsreduce, warn on files that aren’t CVS masters. Avoid losing commits when warning "tip commit older than imputed branch join" seen Warn about optimization bug triggered by -O3, reduce to -O2.

1.45: 2019-01-22

Allow empty branch labels - these have been observed in the wild. Always report both file and line in syntax errors, using gcc style. Documentation polishing. cppcheck cleanup. Minor port fixes to test machinery.

1.44: 2018-07-05

Fix slightly incorrect generation of default .gitignore file. Make cvsreduce work under Python 3, and test for that.

1.43: 2017-03-20

Revert <2014-11-19T18:11:22Z@flower.powernet.co.uk>, optimization was wrong.

1.42: 2017-03-06

Fix a typo in a property name that affects interoperability with reposurgeon.

1.41: 2017-02-14

Savannah changed how you need to interpret pseudo-URLs.

1.40: 2016-09-07

Add warnings about stock CVS vs. the MirOS patched version.

1.39: 2016-09-06

Fix GitLab issue #8: Exporting with commitids does not coalesce changesets.

1.38: 2016-02-28

All Python code in the suite is 2 & 3 polyglot and 8-bit clean.

1.37: 2016-01-29

New -c option for when you can’t trust commit-IDs. Port patch for Sun systems.

1.36: 2015-12-22

Avoid a core dump in another pathological case.

1.35: 2015-11-23

Properly handle CVS masters with nonempty access lists. Bail out gracefully on pathological masters with no revisions.

1.34: 2015-09-25

Another Python compatibility fix. Fix inconsistent license header in revdir.c.

1.33: 2015-08-30

Deal with a really annoying build-portability glitch around -lrt. Fix cvsconvert to be Python 2.6-compatible.

1.32: 2015-06-10

Emit a source type declaration reposurgeon can use. Project now has a logo.

1.31: 2015-04-28

Improve OSX portability.

1.30: 2015-04-02

Tagged branchlets created for CVS tags not matching a gitspace commits. Many portability fixes for *BSD.

1.29: 2014-12-17

A significant improvement in the correctness of vendor-branch handling. More speed improvements.

1.28: 2014-12-08

Fix for buggy emission of lines ending in @. More speedups, and dramatic reduction in working-set size.

1.27: 2014-11-27

The bug that produced "unnumbered head" warnings has been fixed.

1.26: 2014-11-05

cvscompare changed to cvsconvert, a validating wrapper script. The rules for keyword expansion have changed yet again.

1.25: 2014-11-03

Simplify and fully document -k; it now requires an argument. In normal (non-promiscuous) mode, paths containing CVSROOT are ignored. There is a new wrapper script, 'cvscompare', for sanity-checking conversions. A HOWTO on reporting bugs has been added to the distribution.

1.24: 2014-10-30

Bugfix release: a late change to I/O buffering in 1.23 was faulty.

1.23: 2014-10-29

New -l option for redirecting logs during long conversions. More speedups and working-set reductions. Incremental dumping can now be done in fast mode.

1.22: 2014-10-21

New --embed-id and --expand options by Robert deBath.

1.21: 2014-10-19

When incremental dumping, suppress tags associated with old commits. Performance improved by x8; see also the new -F and -C options. New -a option to dump a list of author IDs found in a repo.

1.20: 2014-10-08

Files not ending with ,v are now ignored unless the new -P option is on. New -t option for parallelizing analysis on multicore systems.

1.19: 2014-10-04

Dramatic speedups in some bottleneck functions.

1.18: 2014-10-02

A bug in the regression tests was fixed by slowing down calls to CVS.

1.17: 2014-09-11

Some changes to reduce working-set size. More internals documentation.

1.16: 2014-09-04

Added an internals tour to the documentation. Polished some comments. Prevented a possible buffer overrun. Fixed broken -R option.

1.15: 2014-09-02

Fixed a nasty order-instability bug that was confounding testing. Add a fatal error check for when revision numbers in input get too long. A significant speed improvement by tuning one of the sort algorithms.

1.14: 2014-08-12

Fixed several issues near ignore conversions.

1.13: 2014-08-11

Allow ()<> in symbol names. Fix a minor memory leak. Make cvssync a bit more liberal about SourceForge hostnames. In cvssync, leading /cvsroot can be omitted on Sourceforge paths. In cvssync, leading /sources can be omitted on Savannah paths.

1.12: 2014-06-26

Allow []! in symbol names. Python in the test suite now runs under 2.6.

1.11: 2014-06-06

Teach cvssync about sourceware.org.

1.10: 2014-03-28

Prepends CVS default ignores to converted .cvsignores. Generates a .gitignore containing default CVS ignores when necessary.

1.9: 2014-03-08

RCS/CVS usernames may now begin with a digit (patch by Jesse Weinstein). Cleaned up a mess around keyword expansion; it had been misdocumented. Fixed some minor bugs in the test suite. Fixed a signedness issue on 64-bit machines.

1.8: 2014-02-19

Processing of hardlinks field was incorrect, is now fixed.

1.7: 2014-02-18

Allow # in symbol names. Addresses a corner case in the NetBSD repository.

1.6: 2014-02-17

Fix a brown-paper-bag bug in cvssync.

1.5: 2014-02-16

Skip a hardlinks field, if present. Add a -c option to cvssync that makes mirrors with CVSROOTs.

1.4: 2014-02-04

Optimization to call sbrk() less often needs to be conditioned on GCC.

1.3: 2014-01-23

Improved performance on masters with lots of symbols; thank Jens Bethkowsky.

1.2: 2014-01-04

Smarter blob directory creation to reduce search overhead for blobs.

1.1: 2014-01-03

Cope with CVS-NT kopt strings containing garbage binary data.

1.0: 2013-12-28

Bug fix: Non-top-level .cvsignores are now converted. More speed and significant lowering of memory usage. Most error messages are now explained on the manual page.

0.8: 2013-12-16

Processing speed has approximately tripled since last release. cvs-fast-export has save progress metering again. cvssync can now take a CVS URL argument.

0.7: 2013-12-15

-i option for incremental dumping. -p option for enabling load status reports. Many documentation improvements. There is now a regression-test suite for the package. cvssync tool for mirroring remote CVS repos added.

0.6: 2013-12-10

Improvements for CVS-NT support. Improve timing of missing-commitids message

0.5: 2013-05-21

CVS-NT support. Code is Coverity-clean.

0.4: 2013-05-16

Fix buggy handling of -k option. Add --remote (-e) and --stripprefix (-s) options. Avoid recursion overflow on very large repos. The fast-import stream ops are now emitted in the same order git uses.

0.3: 2013-01-16

Fix a bonehead packaging error.

0.2: 2012-01-12

Code revamped to emit a fast-export stream. Manual page added.

0.1: 2006-03-09

Original code by Keith Packard; traveled as 'parsecvs'.