From: Rob Browning Date: Sun, 16 Oct 2022 17:17:17 +0000 (-0500) Subject: Update README, HACKING, and release notes for 0.33 X-Git-Url: https://arthur.barton.de/gitweb/?p=bup.git;a=commitdiff_plain;h=98f07d3a4e762295089235da2c0afe08d3953e58 Update README, HACKING, and release notes for 0.33 Signed-off-by: Rob Browning --- diff --git a/HACKING b/HACKING index 372bc73..0c8c719 100644 --- a/HACKING +++ b/HACKING @@ -19,10 +19,21 @@ via email. Current Trajectory ================== -Now that we've finished the 0.32 release, we're working on 0.33, and +Now that we've finished the 0.33 release, we're working on 0.34, and although we're not certain which new features will be included, we're considering: + - Migrating hashsplitting to C. + + - Automatically splitting trees to avoid having to save large tree + objects for large directories even if only a few files have + changed or been added (e.g. maildirs). + + - Moving all of the compoents of the index to sqlite. Right now the + main index is an mmapped file, and the hard link and metadata + databases are pickled. As a result the index isn't transactional + and suffers from bugs caused by "skew" across the components. + - Better VFS performance for large repositories (i.e. fuse, ls, web...). @@ -38,8 +49,6 @@ considering: - Support for alternate remote storage APIs. - - Discontinuing Python 2 work, excepting perhaps some bugfixes. - If you have the time and inclination, please help review patches posted to the list, or post your own. (See "ways to help" below.) diff --git a/README.md b/README.md index 807dce7..2d46819 100644 --- a/README.md +++ b/README.md @@ -80,16 +80,13 @@ Reasons you might want to avoid bup Solaris, or Windows (with Cygwin, and WSL). Patches to support other platforms are welcome. - - Until resolved, a [glibc bug](https://sourceware.org/bugzilla/show_bug.cgi?id=26034) - might cause bup to crash on startup for some (unusual) command line - argument values, when bup is configured to use Python 3. - - Any items in "Things that are stupid" below. Notable changes introduced by a release ======================================= + - Changes in 0.33 as compared to 0.32 - Changes in 0.32 as compared to 0.31 - Changes in 0.31 as compared to 0.30.1 - Changes in 0.30.1 as compared to 0.30 @@ -106,9 +103,9 @@ Notable changes introduced by a release Test status =========== -| master | 0.30.x | 0.29.x | -|--------|--------|--------| -| [![master branch test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master)](https://cirrus-ci.com/github/bup/bup) | [![0.30 branch test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.30.x)](https://cirrus-ci.com/github/bup/bup) | [![0.29 branch test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=0.29.x)](https://cirrus-ci.com/github/bup/bup) | +| master | +|--------| +| [![master branch test status](https://api.cirrus-ci.com/github/bup/bup.svg?branch=master)](https://cirrus-ci.com/github/bup/bup) | Getting started =============== @@ -127,11 +124,11 @@ From source bup, please check out the latest stable release like this: ```sh - git checkout 0.32 + git checkout 0.33 ``` You can see the latest stable release here: - https://github.com/bup/bup/releases. + https://github.com/bup/bup/tags - Install the required python libraries (including the development libraries). @@ -151,7 +148,7 @@ From source Otherwise try this: ```sh - apt-get install python3.7-dev python3-fuse + apt-get install python3-dev python3-fuse apt-get install python3-pyxattr python3-pytest apt-get install python3-distutils apt-get install pkg-config linux-libc-dev libacl1-dev @@ -268,9 +265,9 @@ Using bup ... ``` - - Initialize the default BUP_DIR (~/.bup -- you can choose another by - either specifying `bup -d DIR ...` or setting the `BUP_DIR` - environment variable for a command): + - Initialize the default bup repository (~/.bup -- you can choose + another by either specifying `bup -d DIR ...` or setting the + `BUP_DIR` environment variable for a command): ```sh bup init @@ -427,10 +424,8 @@ That's all there is to it! Notes on FreeBSD ---------------- -- FreeBSD's default 'make' command doesn't like bup's Makefile. In order to - compile the code, run tests and install bup, you need to install GNU Make - from the port named 'gmake' and use its executable instead in the commands - seen above. (i.e. 'gmake test' runs bup's test suite) +- In order to compile the code, run tests and install bup, you need to + install GNU Make from the `gmake` port. - Python's development headers are automatically installed with the 'python' port so there's no need to install them separately. @@ -600,18 +595,6 @@ mailing list (see below) if you'd like to help. give the continuous-backup process a really low CPU and I/O priority so you wouldn't even know it was running. - - bup only has experimental support for pruning old backups. - - While you should now be able to drop old saves and branches with - `bup rm`, and reclaim the space occupied by data that's no longer - needed by other backups with `bup gc`, these commands are - experimental, and should be handled with great care. See the - man pages for more information. - - Unless you want to help test the new commands, one possible - workaround is to just start a new BUP_DIR occasionally, - i.e. bup-2013, bup-2014... - - bup has never been tested on anything but Linux, FreeBSD, NetBSD, OS X, and Windows+Cygwin. diff --git a/note/0.33-from-0.32.md b/note/0.33-from-0.32.md new file mode 100644 index 0000000..72970cf --- /dev/null +++ b/note/0.33-from-0.32.md @@ -0,0 +1,102 @@ + +Notable changes in 0.33 since 0.32 +================================== + +* Python 3 is now required, in particular 3.7 or newer. + +* The version of Python is no longer determined by the value of + `PYTHON` during `./configure`. It is now determined by the version + of `python-config` selected during configuration. The + `BUP_PYTHON_CONFIG` environment variable can be set during + configuration to select a particular executable + (e.g. `BUP_PYTHON_CONFIG=python3.9-config ./configure`). See the + `README` for further details. + +* The `bup` executable is now a binary rather than a Python script. + Practically speaking, this means that the Python version is + determined by the `libpython` that the executable is linked against + (selected via `python-config`), and it means that bup will show up + as "bup" in process listings rather than a python invocation. + +* The output of `bup ls` for multiple paths includes each path before + its contents, more closely matching the system `ls`. + +* The `bup ftp` `ls` command should now respect the working directory + (set by `cd`), and that directory has been added to the prompt. + +* Some minor changes have been made to `bup web`'s interface. + +* The `index-cache` is no longer included in the `bup midx` `--dir` + default. + +* Performance may have improved after the relocation of a number of + operations from Python to C, and a number of improvements to the + VFS. + +* The `#bup` IRC channel has moved to https://libera.chat/. + +Bugs +---- + +* Bup should now respect the current umask, directory sgid bit, + etc. when creating new files (e.g. new packfiles). Previously, it + would create them via mkstemp, which would cause them to be readable + only by the current user. + +* Bup should now be able to handle repositories containing signed + commits. + +* `bup tag` has been changed to rely on `git update-ref` instead of + writing the (loose) refs directly so that it can handle packed refs + correctly. + +* `bup save` should be more careful about noting an error and skipping + paths whose type (link, regular file, ...) has changed since + indexing. + +* There should no longer be a narrow window where `save` could store + conflicting symlink targets or conflicting sizes (in the metadata + record and the packfile symlink blob) for a path if the filesystem + changed at just the wrong time during a save. + +* `bup fuse` should no longer become unusable after an unfinished read + of commits associated with tags. The underlying VFS issue may have + affected other commands too. + +* Bup's packfile names should now match git's. Previously bup + computed the SHA1 from just the sorted object list + (cf. `git-index-pack(1)`), but git appears to include the entire + pack file in the hash. + +* Passing idx files to `bup midx` along with `--dir` should now work + correctly. + +* The `bup index --print --long ...` mode fields should now be + formatted correctly with Python 3 (it changed the `oct()` format). + +* Resource usage (e.g. memory) may have improved, given a number of + changes intended to make bup release resources more carefully and + sooner. + +Build and install +----------------- + +* As mentioned above, `PYTHON`'s role during configuration has been + replaced by `BUP_PYTHON_CONFIG`. + +* `./configure` now supports `--with-pylint=[yes|no|maybe]`. + +* Any `CC`, `CPPFLAGS`, `CFLAGS`, or `LDFLAGS` set during + `./configure` should now be preserved across future make + invocations. + +* The build process should now work on systems where `make` isn't GNU + Make (the `Makefile` automatically redirects to `GNUmakefile`). + +* The `PANDOC` path can contain spaces. + +Thanks to (at least) +==================== + +Abdel Said, Arthur Ward, Bas Stottelaar, Brian Minton, Greg Troxel, +Johannes Berg, Mark Hewitt, Muh Muhten, and Rob Browning