Permalink
Commits on Jan 4, 2010
  1. Add a README for v0.01.

    apenwarr committed Jan 4, 2010
  2. Force generated pack indexes to be version 2.

    apenwarr committed Jan 4, 2010
    We don't support parsing earlier versions, and the earlier versions are
    inferior anyway.
  3. We can now update refs when we do a backup.

    apenwarr committed Jan 4, 2010
    Supported by both cmd-save and cmd-split, albeit with a disturbing amount of
    code duplication.
    
    Also updated bup-join to use a default BUP_DIR if none is specified.
Commits on Jan 3, 2010
  1. Refactored client stuff into client.py; now cmd-save and cmd-init use…

    apenwarr committed Jan 3, 2010
    … it too.
    
    Still not updating refs, however, so it remains a bit stupid.
  2. Fix some problems running on older Debian.

    apenwarr committed Jan 3, 2010
    python 2.5 (pre-2.5.2) can't struct.unpack from a buffer(); coerce it to a
    string first.
    
    The default python is 2.4, so run /usr/bin/python2.5 explicitly.
  3. Support incremental backups to a remote server.

    apenwarr committed Jan 3, 2010
    We now cache the server's packfile indexes locally, so we know which objects
    he does and doesn't have.  That way we can send him a packfile with only the
    ones he's missing.
    
    cmd-split supports this now, but cmd-save still doesn't support remote
    servers.
    
    The -n option (set a ref correctly) doesn't work yet either.
  4. Extremely basic 'bup server' support.

    apenwarr committed Jan 3, 2010
    It's enough to send a pack to the remote end with 'bup split', though 'bup
    save' doesn't support it yet, and we're not smart enough to do incremental
    backups, which means we generate the gigantic pack every single time.
  5. bup save: handle symlinks correctly.

    apenwarr committed Jan 3, 2010
    ie. save symlinks as symlinks, don't blindly recurse into them.
    
    Also, directory names in trees need to be sorted as if they were "name/",
    not "name".  Otherwise git fsck complains.
    
    Improved 'make test' to check 'git fsck' output and to actually run bup
    save.
  6. Add 'bup init' command.

    apenwarr committed Jan 3, 2010
    Basically an alias for git init, but uses BUP_DIR instead of GIT_DIR
    environment variable.
  7. Moved some git.* globals into PackWriter; use BUP_DIR as repo path.

    apenwarr committed Jan 3, 2010
    If BUP_DIR isn't set, it defaults to ./.git, which is probably not so smart,
    but works for now (and was what we were using *until* now anyway).
  8. Better behaviour with --verbose.

    apenwarr committed Jan 3, 2010
    Also added --verbose to cmd-save.
  9. git.PackIndex: a class for quickly searching a git packfile index.

    apenwarr committed Jan 3, 2010
    This will allow us to generate incremental backups more efficiently, since
    we can avoid rewriting already-known objects into a new pack.
Commits on Jan 2, 2010
  1. Write git pack files instead of loose object files.

    apenwarr committed Jan 2, 2010
    This causes much, much less disk grinding than creating zillions of files,
    plus it's even more disk space efficient.
    
    We could theoretically make it go even faster by generating the .idx file
    ourselves, but for now, we just call "git index-pack" to do it.  That
    helpfully also confirms that the data was written in a git-compatible way.
  2. 'bup split': speed optimization for never-ending blocks.

    apenwarr committed Jan 2, 2010
    For blocks which never got split (eg. huge endless streams of zeroes) we
    would constantly scan and re-scan the same sub-blocks, making things go
    really slowly.  In such a bad situation, there's no point in being so careful;
    just dump the *entire* input buffer to a chunk and move on.  This vastly
    speeds up splitting of files with lots of blank space in them, eg.
    VirtualBox images.
    
    Also add a cache for git.hash_raw() so it doesn't have to stat() the same
    blob files over and over if the same blocks (especially zeroes) occur more
    than once.
  3. Fix 'bup split --bench'.

    apenwarr committed Jan 2, 2010
    This was broken earlier and apparently didn't have a test; now it does.
  4. Fix generated commit messages.

    apenwarr committed Jan 2, 2010
    The first (summary) line should be shorter so that git log looks prettier.
Commits on Jan 1, 2010
  1. Initial version of 'bup save'.

    apenwarr committed Jan 1, 2010
    Saves a complete tree by recursively iterating into subdirs, and splits
    large files into chunks using the same algorithm as 'bup split'.
    
    Currently no support for special files (symlinks etc), and it generates the
    resulting git tree incorrectly (by just turning / into _ in filenames).
  2. 'bup join' now takes objects on the command line and handles commitids.

    apenwarr committed Jan 1, 2010
    It converts commitids directly into trees and cats the entire tree
    recursively.
    
    If no ids are provided on the command line, it reverts back to reading the
    list of objects from stdin.
  3. Refactor splitting functions from cmd-split.py into hashsplit.py.

    apenwarr committed Jan 1, 2010
    Now we can split other stuff from other programs (which don't exist yet).
  4. Oops, multi-file split forced a split between each file.

    apenwarr committed Jan 1, 2010
    Now if you have multiple files on input, it's possible for a single
    resulting blob to contain parts of more than one file.
  5. split: name chunkfiles more carefully to prevent name changes.

    apenwarr committed Jan 1, 2010
    This isn't perfect, but a bit of byte jitter here and there now won't cause
    unnecessary filename changes.
Commits on Dec 31, 2009
  1. 'bup split' now outputs any combination of blobs, tree, and commit.

    apenwarr committed Dec 31, 2009
    maximum flexibility.
  2. Automatically handle "--no-" prefix on long options.

    apenwarr committed Dec 31, 2009
    Similar to how git does it.
  3. 'bup split' now has a -c option to generate a git commit object.

    apenwarr committed Dec 31, 2009
    There's no way to set its parent yet, but at least this is all you need if
    you want to repack.
  4. Completely revamped option parsing based on git-shell-style.

    apenwarr committed Dec 31, 2009
    This is in options.py.  Also added some wvtests for option parsing stuff.
  5. Import wvtestrun and wvtest.py from the wvtest.git project.

    apenwarr committed Dec 31, 2009
    Corresponding wvtest commit is db65ff5907571a5004bb3c500efd19421cb06d1a.