Current Trajectory
==================
-Now that we've finished the 0.27 release, we're working on 0.28, and
-although we're not certain which new features will be included, here
-are likely candidates:
+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:
- - Support for rm/gc.
+ - Migrating hashsplitting to C.
- - Support for transferring saves between repositories and rewriting
- branches.
+ - 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).
-and these are also under consideration:
+ - 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...).
+ - Better VFS caching.
+
+ - Index improvements.
+
- Incremental indexing via inotify.
- Smarter (and quieter) handling of cross-filesystem metadata.
- - Support for more general purpose push/pull of branches, saves, and
- tags between repositories. (See the bup-get patch series.)
+ - Encryption.
+
+ - Support for alternate remote storage APIs.
If you have the time and inclination, please help review patches
posted to the list, or post your own. (See "ways to help" below.)
More specific ways to help
==========================
-Testing -- yes please.
+Testing -- yes please.
With respect to patches, bup development is handled via the mailing
list, and all patches should be sent to the list for review (see
We also love a good "Tested-by:" -- the more the merrier.
+Testing
+=======
+
+Individual tests can be run via
+
+ ./pytest TEST
+
+For example:
+
+ ./pytest test/int/test_git.py
+ ./pytest test/ext/test-ftp
+
+If you have the xdist module installed, then you can specify its `-n`
+option to run the tests in parallel (e.g. `./pytest -nauto ...`), or
+you can specify `-j` to make, which will be translated to xdist with
+`-j` becoming `-nauto` and `-jN` becoming `-nN`.
+
+Internal tests that test bup's code directly are located in test/int,
+and external tests that test bup from the outside, typically by
+running the executable, are located in test/ext.
+
+Currently, all pytests must be located in either test/ext or test/int.
+Internal test filenames must match test_*.py, and external tests must
+be located in text/ext and their filenames must match test-* (see
+test/ext/conftest.py for the handling of the latter). Any paths
+matching those criteria will be automatically collected by pytest.
+
+Some aspects of the environment are automatically restored after each
+test via fixtures in conftest.py, including the state of the
+environment variables and the working directory; the latter is reset
+to the top of the source tree.
+
Submitting patches
==================
locally, you may need to configure git to be able to send mail. See
git-send-email(1) for further details.
-Oh, and we do have a ./CODING-STYLE, hobgoblins and all, though don't
+Oh, and we do have a ./CODINGSTYLE, hobgoblins and all, though don't
let that scare you off. We're not all that fierce.
In particular, we've been paying at least some attention to the bits
regarding Acked-by:, Reported-by:, Tested-by: and Reviewed-by:.
+
+<!--
+Local Variables:
+mode: markdown
+End:
+-->