1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000
|
Version 3.12.0 24 Sep 2025
* Add support for Python v3.14 and drop support for v3.10.
* Document how to change the interpreter version with `$UV_PYTHON`.
Version 3.11.0 23 Sep 2025
* Pull in latest version of run-script-framework.
* Migrate from Poetry to UV for the Python build system.
Version 3.10.1 18 Sep 2025
* Exclude generated files in `docs/_build` from the Python sdist.
* Fix poetry-dynamic-versioning version in both places in `pyproject.toml`.
Version 3.10.0 18 Sep 2025
* Version `profiles_settings.xml` to control PyCharm inspection profile.
* Add a new `suite -f` command to run faster subset of the suite.
* Migrate to Read the Docs integration via the new GitHub App.
* Adjust GHA build process to allow builds for stacked PRs.
* Upgrade to poetry-dynamic-versioning v1.9.1 for minor fixes.
* Add a new `run clean` target to clean up generated data.
* Replace black, isort, and pylint with the Ruff formatter and linter.
* Address all Ruff linter errors, either with code changes or exclusions.
* Remove importlib-metadata dependency in favor of standard library.
* Update all dependencies and outdated constraints.
Version 3.9.2 21 Jan 2025
* Add Sphinx configuration path to .readthedocs.yml.
* Set $SOURCE_DATE_EPOCH on build so sdist contents get sane timestamps.
Version 3.9.1 10 Jan 2025
* Pull in latest version of run-script-framework.
* Upgrade to poetry-dynamic-versioning v1.5.2 for minor fixes.
* Add .python-version in preferred order to support pyenv.
* Add missing runtime dependency on importlib-metadata.
Version 3.9.0 08 Jan 2025
* Migrate to Poetry v2 and project-managed Poetry plugins.
* Move configuration into pyproject.toml for coverage.
* Upgrade to gha-shared-workflows@v8 for Poetry v2 support.
* Update dependencies to match versions in Debian trixie.
Version 3.8.3 02 Jan 2025
* Add GitHub security policy in SECURITY.md.
* Pull in latest version of run-script-framework.
* Update dependencies to address Dependabot warnings.
* Upgrade to gha-shared-workflows@v7 with publish improvements.
* Change the default branch in GitHub from master to main.
Version 3.8.2 15 Oct 2024
* Pull in latest updates from run-script-framework.
* Simplify GHA integration with coveralls.io.
* Clarify that Debian stable is the target for dependencies.
* Update transitive dependencies to address Dependabot warnings.
* Add support for Python v3.13 and drop support for v3.9.
* Upgrade to Poetry v1.8.4 for official Python 3.13 support.
* Bump readthedocs build to python 3.10 and ubuntu-24.04.
* Adjust getFunctionReference() to use Python 3 callable().
* Convert to posixpath.isabs() to work around change in Python v3.13.
Version 3.8.1 26 Feb 2024
* Upgrade to Poetry v1.8.0 and make related adjustments.
* Disable Python keyring via poetry.toml.
* Update Poetry install instructions in DEVELOPER.md.
* Pull in latest version of run-script-framework.
* Upgrade to gha-shared-workflows@v4 with new Poetry setup.
* Add support for 'run outdated' and update dependencies.
Version 3.8.0 17 Jan 2024
* Constrain some dependencies to be compatible with Debian.
* Disable intersphinx plugin for docs, which no longer seems to work.
* Update jinja2 to address CVE-2024-22195 from Dependabot.
Version 3.7.9 05 Nov 2023
* Update urllib3 to address Dependabot warnings.
* Upgrade to Poetry v1.7.0 for official Python 3.12 support.
Version 3.7.8 15 Oct 2023
* Fix Python 3.12 deprecation for datetime.datetime.utcnow().
* Fix Python 3.12 warning for tar.extract() filter behavior.
* Fix some non-working remote connectivity tests in 'run tests full'.
Version 3.7.7 14 Oct 2023
* Upgrade major dependencies.
* Upgrade build process to Poetry v1.6.1.
* Add support for Python v3.12 and drop support for v3.8.
* Document changes to scp configuration for Debian bookworm.
Version 3.7.6 10 Jun 2023
* Pin chardet and importlib-metadata to match Debian bookworm.
Version 3.7.5 07 Jun 2023
* Fix checktabs to be safe for file named '-'.
* Upgrade all dependencies to the latest major version.
* Upgrade to Poetry v1.5.1 and make related adjustments.
Version 3.7.4 31 Dec 2022
* Pull Sphinx fields from metadata rather than parsing pyproject.toml.
Version 3.7.3 30 Dec 2022
* Convert to latest readthedocs.io standard.
* Update remaining docs, comments, and checks to reflect dropping Python 3.7.
* Automate the existing manual release process using GitHub Actions.
Version 3.7.2 30 Dec 2022
* More improvements to metadata for the Debian CI test process.
Version 3.7.1 30 Dec 2022
* Improvements to metadata to better support the Debian build process.
Version 3.7.0 29 Dec 2022
* Drop support for Python 3.7.
* Rename CREDITS -> NOTICE for consistency with my other Python projects.
* Migrate release.py and various help output to use importlib.metadata.
* Convert to standard version of .run/tasks/release.sh used elsewhere.
Version 3.6.9 09 Nov 2022
* Support Python 3.11.
* Use locale.getlocale() instead of .getdefaultlocale() for Python >= 3.11.
* Adjust GHA build to run MacOS and Windows tests only on latest Python.
Version 3.6.8 24 Oct 2022
* Remove execute bit from amazons3.py and span.py for Debian policy.
Version 3.6.7 24 Oct 2022
* Refactor the run script and pre-commit hooks to reduce duplication.
* Rework the GitHub Actions build process to pull out shared code.
Version 3.6.6 05 Sep 2022
* Upgrade to Poetry v1.2.0 and make related build process changes.
* Upgrade to Pylint v2.15.0 and address warnings.
* Fix Pylint's configured class-attribute-naming-style to be snake_case.
* Adjust Black configuration to target Python 3.7, 3.8, 3.9, and 3.10.
* Add dependency caching to GitHub Actions workflow.
* Fix the GitHub Actions matrix build to properly target Windows and MacOS.
* Fix problems with test suite under Windows when running in GitHub Actions.
* Update various dependencies for the developer environment.
Version 3.6.5 30 Apr 2022
* Adjust the pyproject.toml include directive to limit what goes into wheel.
* Remove the Safety scanner from the pre-commit hooks and GitHub action.
Version 3.6.4 14 Nov 2021
* Adjust dependencies and build process to support Python 3.10.
Version 3.6.3 13 Mar 2021
* Improve logged output for failed pre/post action hooks.
Version 3.6.2 17 Feb 2021
* Standardize format of GPL license statement in CREDITS.
Version 3.6.1 07 Feb 2021
* Make minor structural improvements to the build process.
* Publish coverage data to coveralls.io in GitHub workflow.
Version 3.6.0 03 Feb 2021
* Always use '/' internally for paths, even on the Windows platform.
* Change the way archive filenames are generated to eliminate leading '-' characters.
* Use UTF-8 encoding for log files on disk to avoid problems with unusual filenames.
* Update build process to include security scans using Safety.
Version 3.5.4 17 Jan 2021
* Fix a couple of links in docs/index.rst (cut-and-paste error).
Version 3.5.3 17 Jan 2021
* Move to newer build dependencies (Black, isort, etc.).
* Make adjustments to code formatting to match new Black version.
* Force docs/requirements.txt to have UNIX line endings
* Convert to PEP 440 convention for Git tags (i.e. "v3.5.3").
* Standardize and improve badges in markdown, so they are all links.
* Simplify pylint configuration and use "-j 0" to speed it up.
Version 3.5.2 14 Jan 2021
* Improve debug output for pre/post action hooks.
Version 3.5.1 30 Dec 2020
* Adjust .gitattributes to force UNIX line endings, for compatibility.
Version 3.5.0 30 Dec 2020
* Changes to support the Windows platform, for the first time since 3.0.1.
* Minor tweaks to the codebase to make the PyCharm code inspector happy.
Version 3.4.1 20 Dec 2020
* Fix Python dependencies to work with Python 3.9.1 and not just 3.9.0.
Version 3.4.0 07 Nov 2020
* Add a new -u/--uploadOnly option to cback3-amazons3-sync.
Version 3.3.4 29 Oct 2020
* Update manual's copyright to reflect reStructuredText, not Docbook XML.
* Fix typos (misspellings) discovered in manpages by Debian's Lintian.
* Fix bug in "run release" that resulted in nonsensical 3.3.3 release.
Version 3.3.2 26 Oct 2020
* Fix obsolete GitHub URL in several places.
Version 3.3.1 25 Oct 2020
* Minor adjustments to PyPI package documentation.
* Execute 'sudo -v' prior to running full test suite.
* Fix release process to work consistently across platforms.
Version 3.3.0 25 Oct 2020
* Convert to modern Python packaging based on Poetry.
* Apply code formatting standards with Black and isort.
* Switch to standard unittest discovery process to run test suite.
* Convert user manual from Docbook XML to Sphinx and revise content.
* Migrate all documentation (manual and API specs) to Read the Docs.
* Add a GitHub workflow to implement code quality gates, executed via Tox.
* Clean up and remove obsolete and unused notes, utilities, etc.
* Fix resource leak in executeCommand() that was exposed by unit tests.
* Increase minimum interpreter version from Python 3.4 to Python 3.7.
Version 3.2.0 24 Aug 2019
* Migrate to GitHub now that BitBucket no longer supports Mercurial repositories.
* Handle new warnings from PyLint 2.3.1.
Version 3.1.12 12 Nov 2017
* Fix MANIFEST.in so that all API documentation is included in tarball.
Version 3.1.11 12 Nov 2017
* Convert API documentation from Epydoc to Sphinx Napolean (Google docstrings).
Version 3.1.10 11 Sep 2017
* Fix maintainer script util/validate to use onsgmls from the opensp package.
* Add information to the user manual about how to lock down the Amazon S3 user.
Version 3.1.9 03 Jul 2017
* Fix issues discovered with peer test changes when backporting to CedarBackup2.
Version 3.1.8 02 Jul 2017
* Add options in util/test.py to get better output from unit tests.
* Update Python virtualenv setup to work with Python 3.5 and recent pip.
* Make various adjustments to remote peer tests, to make them safer and more robust.
* Fix problems discovered with the awscli version in Debian stretch.
Version 3.1.7 21 Jun 2016
* Fix typo in cback.1, noticed by Debian's Lintian checks.
* Fix logging errors with odd paths in tools/amazons3.py when ascii encoding is set.
Version 3.1.6 13 Feb 2016
* Fix bug in the file encoding checks for the amazons3sync tool.
Version 3.1.5 02 Jan 2016
* Fix or disable a variety of new warnings and suggestions from pylint.
Version 3.1.4 11 Aug 2015
* Improvements based on testing in the Debian continuous integration environment.
- Make the logging setup process obey the --stack command-line option
- Fix logging setup to always create the log file with the proper specified mode
- Fix PurgeItemList.removeYoungFiles() so ageInWholeDays can never be negative
- Make filesystemtests more portable, with maximum file path always <= 255 bytes
Version 3.1.1 04 Aug 2015
* Fix incorrect exception raise without % in util.py, found by accident.
* Fix cut-and-paste typo 'iplemented' in cli.py, config.py, and util.py.
* Fix bugs in the ByteQuantity changes from v3.1.0, so comparisons work properly.
* Adjust amazons3, capacity and split to use ByteQuantity directly, not bytes field.
Version 3.1.0 03 Aug 2015
* Enhance ByteQuantity so it can be built from and compared to simple numeric values.
* Improve the way the amazons3 extension deals with byte quantities.
- Fix configuration to support quantities like "2.5 GB", as in other extensions
- Improve logging using displayBytes(), so displayed quantities are more legible
Version 3.0.2 30 Jul 2015
* Improvements based on integration testing with my own backup configuration.
- Fix problems with pickle by using binary open, protocol=0, fix_imports=True
- Be stricter with the way files are opened/closed, relying on the new 'with' idiom
- Make sure every file opened for use with executeCommand() uses mode "wb"
Version 3.0.1 29 Jul 2015
* Create project in Mercurial at BitBucket, alongside Cedar Backup 2.
* Convert to Python 3, using v2.24.2 as the basis for conversion.
* Rename files (logs, config, executables) to use cback3 prefix rather than cback.
* Remove support for Windows and Cygwin, which was never advertised and rarely tested.
* Fix a variety of minor warnings from pylint 1.4.4, most of which also appeared in 2.24.2.
* Clean up manpages and add notes about migrating to version 3.
* Review user guide, fix broken links, make minor tweaks to wording, etc.
* Fix long-standing bugs with pre- and post-action hooks, ported from v2.24.4.
Version 2.24.2 05 Jan 2015
* Add optional size-limit configuration for amazons3 extension.
Version 2.24.1 07 Oct 2014
* Implement a new tool called cback-amazons3-sync.
* Add support for missing --diagnostics flag in cback-span script.
Version 2.23.3 03 Oct 2014
* Add new extension amazons3 as an optional replacement for the store action.
* Update user manual and INSTALL to clarify a few of the dependencies.
* Fix encryption unit test that started failing due to my new GPG key.
Version 2.22.0 09 May 2013
* Add eject-related kludges to work around observed behavior.
* New config option eject_delay, to slow down open/close
* Unlock tray with 'eject -i off' to handle potential problems
Version 2.21.1 21 Mar 2013
* Apply patches provided by Jan Medlock as Debian bugs.
* Fix typo in manpage (showed -s instead of -D)
* Support output from latest /usr/bin/split (' vs. `)
Version 2.21.0 12 Oct 2011
* Update CREDITS file to consistently credit all contributers.
* Minor tweaks based on PyLint analysis (mostly config changes).
* Make ISO image unit tests more robust in writersutiltests.py.
- Handle failures with unmount (wait 1 second and try again)
- Programmatically disable (and re-enable) the GNOME auto-mounter
* Implement configurable recursion for collect action.
- Update collect.py to handle recursion (patch by Zoran Bosnjak)
- Add new configuration item CollectDir.recursionLevel
- Update user manual to discuss new functionality
Version 2.20.1 19 Oct 2010
* Fix minor formatting issues in manpages, pointed out by Debian lintian.
* Changes required to make code compatible with Python 2.7
- StreamHandler no longer accepts strm= argument (closes: #3079930)
- Modify logfile os.fdopen() to be explicit about read/write mode
- Fix tests that extract a tarfile twice (exposed by new error behavior)
Version 2.20.0 07 Jul 2010
* This is a cleanup release with no functional changes.
* Switch to minimum Python version of 2.5 (everyone should have it now).
- Make cback script more robust in the case of a bad interpreter version
- Change file headers, comments, manual, etc. to reference Python 2.5
- Convert to use @staticmethod rather than x = staticmethod(x)
- Change interpreter checks in test.py, cli.py and span.py
- Remove Python 2.3-compatible versions of util.nullDevice() and util.Pipe
* Configure pylint and execute it against the entire codebase.
- Fix a variety of minor warnings and suggestions from pylint
- Move unit tests into testcase folder to avoid test.py naming conflict
* Remove "Translate [x:y] into [a:b]" debug message for uid/gid translation.
* Refactor out util.isRunningAsRoot() to replace scattered os.getuid() calls.
* Remove boilerplate comments "As with all of the ... " in config code.
* Refactor checkUnique() and parseCommaSeparatedString() from config to util.
* Add note in manual about intermittent problems with DVD writer soft links.
Version 2.19.6 22 May 2010
* Work around strange stderr file descriptor bugs discovered on Cygwin.
* Tweak expected results for tests that fail on Cygwin with Python 2.5.x.
* Set up command overrides properly so full test suite works on Debian.
* Add refresh_media_delay configuration option and related functionality.
Version 2.19.5 10 Jan 2010
* Add customization support, so Debian can use wodim and genisoimage.
* SF bug #2929447 - fix cback-span to only ask for media when needed
* SF bug #2929446 - add retry logic for writes in cback-span
Version 2.19.4 16 Aug 2009
* Add support for the Python 2.6 interpreter.
- Use hashlib instead of deprecated sha module when available
- Use set type rather than deprecated sets.Set when available
- Use tarfile.format rather than deprecated tarfile.posix when available
- Fix testGenerateTarfile_002() so expectations match Python 2.6 results
Version 2.19.3 29 Mar 2009
* Fix minor epydoc typos, mostly in @sort directives.
* Removed support for user manual PDF format (see doc/pdf).
Version 2.19.2 08 Dec 2008
* Fix cback-span problem when writing store indicators.
Version 2.19.1 15 Nov 2008
* Fix bug when logging strange filenames.
Version 2.19.0 05 Oct 2008
* Fix a few typos in the CREDITS file.
* Update README to properly reference SourceForge site.
* Add <ignore_failures> option to peer configuration.
Version 2.18.0 05 May 2008
* Add the ability to dereference links when following them.
- Add util.dereferenceLink() function
- Add dereference flag to FilesystemList.addDirContents()
- Add CollectDir.dereference attribute
- Modify collect action to obey CollectDir.dereference
- Update user manual to discuss new attribute
Version 2.17.1 26 Apr 2008
* Updated copyright statement slightly.
* Updated user manual.
- Brought copyright notices up-to-date
- Fixed various URLs that didn't reference SourceForge
* Fixed problem with link_depth (closes: #1930729).
- Can't add links directly, they're implicitly added later by tar
- Changed FilesystemList to use includePath=false for recursive links
Version 2.17.0 20 Mar 2008
* Change suggested execution index for Capacity extension in manual.
* Provide support for application-wide diagnostic reporting.
- Add util.Diagnostics class to encapsulate information
- Log diagnostics when Cedar Backup first starts
- Print diagnostics when running unit tests
- Add a new --diagnostics command-line option
* Clean up filesystem code that deals with file age, and improve unit tests.
- Some platforms apparently cannot set file ages precisely
- Change calculateFileAge() to use floats throughout, which is safer
- Change removeYoungFiles() to explicitly check on whole days
- Put a 1-second fudge factor into unit tests when setting file ages
* Fix some unit test failures discovered on Windows XP.
- Fix utiltests.TestFunctions.testNullDevice_001()
- Fix filesystemtests.TestBackupFileList.testGenerateFitted_004()
- Fix typo in filesystemtests.TestFilesystemList.testRemoveLinks_002()
Version 2.16.0 18 Mar 2008
* Make name attribute optional in RemotePeer constructor.
* Add support for collecting soft links (closes: #1854631).
- Add linkDepth parameter to FilesystemList.addDirContents()
- Add CollectDir.linkDepth attribute
- Modify collect action to obey CollectDir.linkDepth
- Update user manual to discuss new attribute
- Document "link farm" option for collect configuration
* Implement a capacity-checking extension (closes: #1915496).
- Add new extension in CedarBackup2/extend/capacity.py
- Refactor ByteQuantity out of split.py and into config.py
- Add total capacity and utilization to MediaCapacity classes
- Update user manual to discuss new extension
Version 2.15.3 16 Mar 2008
* Fix testEncodePath_009() to be aware of "UTF-8" encoding.
* Fix typos in the PostgreSQL extension section of the manual.
* Improve logging when stage action fails (closes: #1854635).
* Fix stage action so it works for local users (closes: #1854634).
Version 2.15.2 07 Feb 2008
* Updated copyright statements now that code changed in year 2008.
* Fix two unit test failures when using Python 2.5 (SF #1861878).
- Add new function testtutil.hexFloatLiteralAllowed()
- Fix splittests.TestByteQuantity.testConstructor_004() for 0xAC
- Fix configtests.TestBlankBehavior.testConstructor_006() for 0xAC
Version 2.15.1 19 Dec 2007
* Improve error reporting for managed client action failures.
* Make sure that managed client failure does not kill entire backup.
* Add appendix "Securing Password-less SSH Connection" to user manual.
Version 2.15.0 18 Dec 2007
* Minor documentation tweaks discovered during 3.0 development.
* Add support for a new managed backup feature.
- Add a new <peers> configuration section (PeersConfig)
- Change peers configuration in <stage> to just override <peers>
- Modify stage process to take peers list from peers section (if available)
- Add new configuration in options and remote peers to support remote shells
- Update user manual to discuss managed backup concept and configuration
- Add executeRemoteCommand() and executeManagedAction() on peer.RemotePeer
Version 2.14.0 19 Sep 2007
* Deal properly with programs that localize their output.
- Create new util.sanitizeEnvironment() function to set $LANG=C
- Call new sanitizeEnvironment() function inside util.executeCommand()
- Change extend/split._splitFile() to be more verbose about problems
- Update Extension Architecture Interface to mandate $LANG=C
- Add split unit tests to catch any locale-related regressions
- Thanks to Lukasz Nowak for initial debugging in split extension
Version 2.13.2 10 Jul 2007
* Tweak some docstring markup to work with Epydoc beta 1.
* Apply documentation patch from Lukasz K. Nowak.
- Document that mysql extension can back up remote databases
- Fix typos in extend/sysinfo.py
* Clean up some configuration error messages to be clearer.
- Make sure that reported errors always include enough information
- Add a prefix argument to some of the specialized lists in util.py
* Catch invalid regular expressions in config and filesystem code.
- Add new util.RegexList list to contain only valid regexes
- Use RegexList in config.ConfigDir and config.CollectConfig
- Use RegexList in subversion.RepositoryDir and mbox.MboxDir
- Throw ValueError on bad regex in FilesystemList remove() methods
- Use RegexList in FilesystemList for all lists of patterns
Version 2.13.1 29 Mar 2007
* Fix ongoing problems re-initializing previously-written DVDs
- Even with -Z, growisofs sometimes wouldn't overwrite DVDs
- It turns out that this ONLY happens from cron, not from a terminal
- The solution is to use the undocumented option -use-the-force-luke=tty
- Also corrected dvdwriter to use option "-dry-run" not "--dry-run"
Version 2.13.0 25 Mar 2007
* Change writeIndicator() to raise exception on failure (closes #53).
* Change buildNormalizedPath() for leading "." so files won't be hidden
* Remove bogus usage of tempfile.NamedTemporaryFile in remote peer.
* Refactored some common action code into CedarBackup2.actions.util.
* Add unit tests for a variety of basic utility functions (closes: #45).
- Error-handling was improved in some utility methods
- Fundamentally, behavior should be unchanged
* Reimplement DVD capacity calculation (initial code from Dmitry Rutsky).
- This is now done using a growisofs dry run, without -Z
- The old dvd+rw-mediainfo method was unreliable on some systems
- Error-handling behavior on CdWriter was also tweaked for consistency
* Add code to check media before writing to it (closes: #5).
- Create new check_media store configuration option
- Implement new initialize action to initialize rewritable media
- Media is initialized by writing an initial session with media label
- The store action now always writes a media label as well
- Update user manual to discuss the new behavior
- Add unit tests for new configuration
* Implement an optimized media blanking strategy (closes: #48).
- When used, Cedar Backup will only blank media when it runs out of space
- Initial implementation and manual text provided by Dmitry Rutsky
- Add new blanking_behavior store configuration options
- Update user manual to document options and discuss usage
- Add unit tests for new configuration
Version 2.12.1 26 Feb 2007
* Fix typo in new split section in the user manual.
* Fix incorrect call to new writeIndicatorFile() function in stage action.
* Add notes in manual on how to find gpg and split commands.
Version 2.12.0 23 Feb 2007
* Fix some encrypt unit tests related to config validation
* Make util.PathResolverSingleton a new-style class (i.e. inherit from object)
* Modify util.changeOwnership() to be a no-op for None user or group
* Created new split extension to split large staged files.
- Refactored common action utility code into actions/util.py.
- Update standard actions, cback-span, and encrypt to use refactored code
- Updated user manual to document the new extension and restore process.
Version 2.11.0 21 Feb 2007
* Fix log message about SCSI id in writers/dvdwriter.py.
* Remove TODO from public distribution (use Bugzilla instead).
* Minor changes to mbox functionality (refactoring, test cleanup).
* Fix bug in knapsack implementation, masked by poor test suite.
* Fix filesystem unit tests that had typos in them and wouldn't work
* Reorg user manual to move command-line tools to own chapter (closes: #33)
* Add validation for duplicate peer and extension names (closes: #37, #38).
* Implement new cback-span command-line tool (closes: #51).
- Create new util/cback-span script and CedarBackup2.tools package
- Implement guts of script in CedarBackup2/tools/span.py
- Add new BackupFileList.generateSpan() method and tests
- Refactor other util and filesystem code to make things work
- Add new section in user manual to discuss new command
* Rework validation requiring least one item to collect (closes: #34).
- This is no longer a validation error at the configuration level
- Instead, the collect action itself will enforce the rule when it is run
* Support a <no_eject> flag in store configuration (closes: #39).
- Change StoreConfig, CdWriter and DvdWriter to accept new flag
- Update user manual to document new flag, along with warnings about it
* Support repository directories in Subversion extension (closes: #46).
- Add <repository_dir> configuration modeled after <mbox_dir>
- Make <type> configuration value optional and for reference only
- Refactor code and deprecate BDBRepository and FSFSRepository
- Update user manual to reflect new functionality
Version 2.10.1 30 Jan 2007
* Fix a few places that still referred only to CD/CD-RW.
* Fix typo in definition of actions.constants.DIGEST_EXTENSION.
Version 2.10.0 30 Jan 2007
* Add support for DVD writers and DVD+R/DVD+RW media.
- Create new writers.dvdwriter module and DvdWriter class
- Support 'dvdwriter' device type, and 'dvd+r' and 'dvd+rw' media types
- Rework user manual to properly discuss both CDs and DVDs
* Support encrypted staging directories (closes: #33).
- Create new 'encrypt' extension and associated unit tests
- Document new extension in user manual
* Support new action ordering mechanism for extensions.
- Extensions can now specify dependencies rather than indexes
- Rewrote cli._ActionSet class to use DirectedGraph for dependencies
- This functionality is not yet "official"; that will happen later
* Refactor and clean up code that implements standard actions.
- Split action.py into various other files in the actions package
- Move a few of the more generic utility functions into util.py
- Preserve public interface via imports in otherwise empty action.py
- Change various files to import from the new module locations
* Revise and simplify the implied "image writer" interface in CdWriter.
- Add the new initializeImage() and addImageEntry() methods
- Interface is now initializeImage(), addImageEntry() and writeImage()
- Rework actions.store.writeImage() to use new writer interface
* Refactor CD writer functionality and clean up code.
- Create new writers package to hold all image writers
- Move image.py into writers/util.py package
- Move most of writer.py into writers/cdwriter.py
- Move writer.py validate functions into writers/util.py
- Move writertests.py into cdwritertests.py
- Move imagetests.py into writersutiltests.py
- Preserve public interface via imports in otherwise empty files
- Change various files to import from the new module locations
* More general code cleanup and minor enhancements.
- Modify util/test.py to accept named tests on command line
- Fix rebuild action to look at store config instead of stage.
- Clean up xmlutil imports in mbox and subversion extensions
- Copy Mac OS X (darwin) errors from store action into rebuild action
- Check arguments to validateScsiId better (no None path allowed now)
- Rename variables in config.py to be more consistent with each other
- Add new excludeBasenamePatterns flag to FilesystemList
- Add new addSelf flag to FilesystemList.addDirContents()
- Create new RegexMatchList class in util.py, and add tests
- Create new DirectedGraph class in util.py, and add tests
- Create new sortDict() function in util.py, and add tests
* Create unit tests for functionality that was not explictly tested before.
- ActionHook, PreActionHook, PostActionHook, CommandOverride (config.py)
- AbsolutePathList, ObjectTypeList, RestrictedContentList (util.py)
Version 2.9.0 18 Dec 2006
* Change mbox extension to use ISO-8601 date format when calling grepmail.
* Fix error-handling in generateTarfile() when target dir is missing.
* Tweak pycheckrc to find fewer expected errors (from standard library).
* Fix Debian bug #403546 by supporting more CD writer configurations.
- Be looser with SCSI "methods" allowed in valid SCSI id (update regex)
- Make <store> config section's <target_scsi_id> parameter optional
- Change CdWriter to support "hardware id" as either SCSI id or device
- Implement cdrecord commands in terms of hardware id instead of SCSI id
- Add documentation in writer.py to discuss how we talk to hardware
- Rework user manual's discussion of how to configure SCSI devices
* Update Cedar Backup user manual.
- Re-order setup procedures to modify cron at end (Debian #403662)
- Fix minor typos and misspellings (Debian #403448 among others)
- Add discussion about proper ordering of extension actions
Version 2.8.1 04 Sep 2006
* Changes to fix, update and properly build Cedar Backup manual
- Change DocBook XSL configuration to use "current" stylesheet
- Tweak manual-generation rules to work around XSL toolchain issues
- Document where to find grepmail utility in Appendix B
- Create missing documentation for mbox exclusions configuration
- Bumped copyright dates to show "(c) 2005-2006" where needed
- Made minor changes to some sections based on proofreading
Version 2.8.0 24 Jun 2006
* Remove outdated comment in xmlutil.py about dependency on PyXML.
* Tweak wording in doc/docbook.txt to make it clearer.
* Consistently rework "project description" everywhere.
* Fix some simple typos in various comments and documentation.
* Added recursive flag (default True) to FilesystemList.addDirContents().
* Added flat flag (default False) to BackupFileList.generateTarfile().
* Created mbox extension in CedarBackup2.extend.mbox (closes: #31).
- Updated user manual to document the new extension and restore process.
* Added PostgreSQL extension in CedarBackup2.extend.postgresql (closes: #32).
- This code was contributed by user Antoine Beaupre ("The Anarcat").
- I tweaked it slightly, added configuration tests, and updated the manual.
- I have no PostgreSQL databases on which to test the functionality.
* Made most unit tests run properly on Windows platform, just for fun.
* Re-implement Pipe class (under executeCommand) for Python 2.4+
- After Python 2.4, cross-platform subprocess.Popen class is available
- Added some new regression tests for executeCommand to stress new Pipe
* Switch to newer version of Docbook XSL stylesheet (1.68.1)
- The old stylesheet isn't easily available any more (gone from sf.net)
- Unfortunately, the PDF output changed somewhat with the new version
* Add support for collecting individual files (closes: #30).
- Create new config.CollectFile class for use by other classes
- Update config.CollectConfig class to contain a list of collect files
- Update config.Config class to parse and emit collect file data
- Modified collect process in action.py to handle collect files
- Updated user manual to discuss new <file> configuraton
Version 2.7.2 22 Dec 2005
* Remove some bogus writer tests that depended on an arbitrary SCSI device.
Version 2.7.1 13 Dec 2005
* Tweak the CREDITS file to fix a few typos.
* Remove completed tasks in TODO file and reorganize it slightly.
* Get rid of sys.exit() calls in util/test.py in favor of simple returns.
* Fix implementation of BackupFileList.removeUnchanged(captureDigest=True).
- Since version 2.7.0, digest only included backed-up (unchanged) files
- This release fixes code so digest is captured for all files in the list
- Fixed captureDigest test cases, which were testing for wrong results
* Make some more updates to the user manual based on further proof-reading.
- Rework description of "midnight boundary" warning slightly in basic.xml
- Change "Which Linux Distribution?" to "Which Platform?" in config.xml
- Fix a few typos and misspellings in basic.xml
Version 2.7.0 30 Oct 2005
* Cleanup some maintainer-only (non-distributed) Makefile rules.
* Make changes to standardize file headers with other Cedar Solutions code.
* Add debug statements to filesystem code (huge increase in debug log size).
* Standardize some config variable names ("parentNode" instead of "parent").
* Fix util/test.py to return proper (non-zero) return status upon failure.
* No longer attempt to change ownership of files when not running as root.
* Remove regression test for bug #25 (testAddFile_036) 'cause it's not portable.
* Modify use of user/password in MySQL extension (suggested by Matthias Urlichs).
- Make user and password values optional in Cedar Backup configuration
- Add a few regression tests to make sure configuration changes work
- Add warning when user or password value(s) are visible in process listing
- Document use of /root/.my.cnf or ~/.my.cnf in source code and user manual
- Rework discussion of command line, file permissions, etc. in user manual
* Optimize incremental backup, and hopefully speed it up a bit (closes: #29).
- Change BackupFileList.removeUnchanged() to accept a captureDigest flag
- This avoids need to call both generateDigestMap() and removeUnchanged()
- Note that interface to removeUnchanged was modified, but not broken
* Add support for pre- and post-action command hooks (closes: #27).
- Added <pre_action_hook> and <post_action_hook> sections within <options>
- Updated user manual documentation for options configuration section
- Create new config.PreActionHook and PostActionHook classes to hold hooks
- Added new hooks list field on config.OptionsConfig class
- Update ActionSet and ActionItem in cli to handle and execute hooks
* Rework and abstract XML functionality, plus remove dependency on PyXML.
- Refactor general XML utility code out of config.py into xmlutil.py
- Create new isElement() function to eliminate need for Node references
- Create new createInputDom(), createOutputDom() and serializeDom() functions
- Use minidom XML parser rather than PyExpat.reader (much faster)
- Hack together xmlutil.Serializer based on xml.dom.ext.PrettyPrint
- Remove references to PyXML in manual's depends.xml and install.xml files
- Add notes about PyXML code sourced from Fourthought, Inc. in CREDITS
- Rework mysql and subversion unit tests in terms of new functions
Version 2.6.1 27 Sep 2005
* Fix broken call to node.hasChildNodes (no parens) in config.py.
* Make "pre-existing collect indicator" error more obvious (closes: #26).
* Avoid failures for UTF-8 filenames on certain filesystems (closes: #25).
* Fix FilesystemList to encode excludeList items, preventing UTF-8 failures.
Version 2.6.0 12 Sep 2005
* Remove bogus check for remote collect directory on master (closes: #18).
* Fix testEncodePath_009 test failure on UTF-8 filesystems (closes: #19).
* Fixed several unit tests related to the CollectConfig class (all typos).
* Fix filesystem and action code to properly handle path "/" (closes: #24).
* Add extension configuration to cback.conf.sample, to clarify things.
* Place starting and ending revision numbers into Subversion dump filenames.
* Implement resolver mechanism to support paths to commands (closes: #22).
- Added <override> section within <options> configuration
- Create new config.CommandOverride class to hold overrides
- Added new overrides field on config.OptionsConfig class
- Create util.PathResolverSingleton class to encapsulate mappings
- Create util.resolveCommand convenience function for code to call
- Create and call new _setupPathResolver() function in cli code
- Change all _CMD constants to _COMMAND, for consistency
* Change Subversion extension to support "fsfs" repositories (closes: #20).
- Accept "FSFS" repository <type> in <subversion> configuration section
- Create new FSFSRepository class to represent an FSFS repository
- Refactor internal code common to both BDB and FSFS repositories
- Add and rework test cases to provide coverage of FSFSRepository
* Port to Darwin (Mac OS X) and ensure that all regression tests pass.
- Don't run testAddDirContents_072() for Darwin (tarball's invalid there)
- Write new ISO mount testing methods in terms of Apple's "hdiutil" utility
- Accept Darwin-style SCSI writer devices, i.e. "IOCompactDiscServices"
- Tweak existing SCSI id pattern to allow spaces in a few other places
- Add new regression tests for validateScsiId() utility function
- Add code warnings and documentation in manual and in doc/osx
* Update, clean up and extend Cedar Backup User Manual (closes: #21).
- Work through document and copy-edit it now that it's matured
- Add documentation for new options and subversion config items
- Exorcise references to Linux which assumed it was "the" platform
- Add platform-specific notes for non-Linux platforms (darwin, BSDs)
- Clarify purpose of the 'collect' action on the master
- Clarify how actions (i.e. 'store') are optional
- Clarify that 'all' does not execute extensions
- Add an appendix on restoring backups
Version 2.5.0 12 Jul 2005
* Update docs to modify use of "secure" (suggested by Lars Wirzenius).
* Removed "Not an Official Debian Package" section in software manual.
* Reworked Debian install procedure in manual to reference official packages.
* Fix manual's build process to create files with mode 664 rather than 755.
* Deal better with date boundaries on the store operation (closes: #17).
- Add <warn_midnite> value in <store> configuration
- Add warnMidnite field to the StoreConfig object
- Add warning in store process for crossing midnite boundary
- Change store --full to have more consistent behavior
- Update manual to document changes related to this bug
Version 2.4.2 23 Apr 2005
* Fix boundaries log message again, properly this time.
* Fix a few other log messages that used "," rather than "%".
Version 2.4.1 22 Apr 2005
* Fix minor typos in user manual and source code documentation.
* Properly annotate code implemented based on Python 2.3 source.
* Add info within CREDITS about Python 2.3 and Docbook XSL licenses.
* Fix logging for boundaries values (can't print None[0], duh).
Version 2.4.0 02 Apr 2005
* Re-license manual under "GPL with clarifications" to satisfy DFSG.
* Rework our unmount solution again to try and fix observed problems.
- Sometimes, unmount seems to "work" but leaves things mounted.
- This might be because some file is not yet completely closed.
- We try to work around this by making repeated unmount attempts.
- This logic is now encapsulated in util.mount() and util.unmount().
- This solution should also be more portable to non-Linux systems.
Version 2.3.1 23 Mar 2005
* Attempt to deal more gracefully with corrupted media.
* Unmount media using -l ("lazy unmount") in consistency check.
* Be more verbose about media errors during consistency check.
Version 2.3.0 10 Mar 2005
* Make 'extend' package public by listing it in CedarBackup2/__init__.py.
* Reimplement digest generation to use incremental method (now ~3x faster).
* Tweak manifest to be a little more selective about what's distributed.
Version 2.2.0 09 Mar 2005
* Fix bug related to execution of commands with huge output.
* Create custom class util.Pipe, inheriting from popen2.Popen4.
* Re-implement util.executeCommand() in terms of util.Pipe.
* Change ownership of sysinfo files to backup user/group after write.
Version 2.1.3 08 Mar 2005
* In sysinfo extension, explicitly path to /sbin/fdisk command.
* Modify behavior and logging when optional sysinfo commands are not found.
* Add extra logging around boundaries and capacity calculations in writer.py.
* In executeCommand, log command using output logger as well as debug level.
* Docs now suggest --output in cron command line to aid problem diagnosis.
* Fix bug in capacity calculation, this time for media with a single session.
* Validate all capacity code against v1.0 code, making changes as needed.
* Re-evaluate all capacity-related regression tests against v1.0 code.
* Add new regression tests for capacity bugs which weren't already detected.
Version 2.1.2 07 Mar 2005
* Fix a few extension error messages with incorrect (missing) arguments.
* In sysinfo extension, do not log ls and dpkg output to the debug log.
* Fix CdWriter, which reported negative capacity when disc was almost full.
* Make displayBytes deal properly with negative values via math.fabs().
* Change displayBytes to default to 2 digits after the decimal point.
Version 2.1.1 06 Mar 2005
* Fix bug in setup.py (need to install extensions properly).
Version 2.1.0 06 Mar 2005
* Fixed doc/cback.1 .TH line to give proper manpage section.
* Updated README to more completely describe what Cedar Backup is.
* Fix a few logging statements for the collect action, to be clearer.
* Fix regression tests that failed in a Debian pbuilder environment.
* Add simple main routine to cli.py, so executing it is the same as cback.
* Added optional outputFile and doNotLog parameters to util.executeCommand().
* Display byte quantities in sensible units (i.e. bytes, kB, MB) when logged.
* Refactored private code into public in action.py and config.py.
* Created MySQL extension in CedarBackup2.extend.mysql.
* Created sysinfo extension in CedarBackup2.extend.sysinfo.
* Created Subversion extension in CedarBackup2.extend.subversion.
* Added regression tests as needed for new extension functionality.
* Added Chapter 5, Official Extensions in the user manual.
Version 2.0.0 26 Feb 2005
* Complete ground-up rewrite for 2.0.0 release.
* See doc/release.txt for more details about changes.
Version 1.13 25 Jan 2005
* Fix boundaries calculation when using kernel >= 2.6.8 (closes: #16).
* Look for a matching boundaries pattern among all lines, not just the first.
Version 1.12 16 Jan 2005
* Add support for ATAPI devices, just like ATA (closes: #15).
* SCSI id can now be in the form '[ATA:|ATAPI:]scsibus,target,lun'.
Version 1.11 17 Oct 2004
* Add experimental support for new Linux 2.6 ATA CD devices.
* SCSI id can now be in the form '[ATA:]scsibus,target,lun'.
* Internally, the SCSI id is now stored as a string, not a list.
* Cleaned up 'cdrecord' calls in cdr.py to make them consistent.
* Fixed a pile of warnings noticed by the latest pychecker.
Version 1.10 01 Dec 2003
* Removed extraneous error parameter from cback's version() function.
* Changed copyright statement and year; added COPYRIGHT in release.py.
* Reworked all file headers to match new Cedar Solutions standard.
* Removed __version__ and __date__ values with switch to Subversion.
* Convert to tabs in Changelog to make the Vim syntax file happy.
* Be more stringent in validating contents of SCSI triplet values.
* Fixed bug when using modulo 1 (% 1) in a few places.
* Fixed shell-interpolation bug discovered by Rick Low (security hole).
* Replace all os.popen() calls with new execute_command() call for safety.
Version 1.9 09 Nov 2002
* Packaging changes to allow Debian version to be "normal", not Debian-native.
* Added CedarBackup/release.py to contain "upstream" release number.
* Added -V,--version option to cback script.
* Rewrote parts of Makefile to remove most Debian-specific rules.
* Changed Makefile and setup.py to get version info from release.py.
* The setup.py script now references /usr/bin/env python, not python2.2.
* Debian-related changes will now reside exclusively in debian/changelog.
Version 1.8 14 Oct 2002
* Fix bug with the way the default mode is displayed in the help screen.
Version 1.7 14 Oct 2002
* Bug fix. Upgrade to Python 2.2.2b1 exposed a flaw in my version-check code.
Version 1.6 06 Oct 2002
* Debian packaging cleanup (should have been a Debian-only release 1.5-2).
Version 1.5 19 Sep 2002
* Changed cback script to more closely control ownership of logfile.
Version 1.4 10 Sep 2002
* Various packaging cleanups.
* Fixed code that reported negative capacity on a full disc.
* Now blank disc ahead of time if it needs to be blanked.
* Moved to Python2.2 for cleaner packaging (True, False, etc.)
Version 1.3 20 Aug 2002
* Initial "public" release.
-----------------------------------------------------------------------------
vim: set ft=changelog noexpandtab:
|