Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Jan 26, 2013
  1. @alexbarton @rlbdv

    Add *.tmp.meta to .gitignore and to "make clean".

    alexbarton authored rlbdv committed
    ...since tmpindex.tmp.meta is now generated by "make check".
    Signed-off-by: Alexander Barton <>
    Reviewed-by: Rob Browning <>
Commits on Sep 8, 2010
  1. @davidcroda

    --remote parameter requires a colon

    davidcroda authored committed
    This patch checks for the presence of a colon if the --remote option
    is used in bup save, bup split, bup join, and bup init.  Even though
    specifying *only* a pathname without a hostname: is perfectly valid,
    it's confusing to allow users to do so, because if they specify
    "-r hostname" it will be treated as a path and thus give them a
    confusing error message. Requiring a colon will avoid this.
    It adds a few test cases to demonstrate that the code
    works properly.
    It also wraps the remote connection in a try except to prevent
    a traceback if there is an error (so far I have only seen this
    happen with an invalid bup dir parameter)
    And I added the netbeans project folder to gitignore
    Signed-off-by: David Roda <>
Commits on Jul 23, 2010
  1. @pmccurdy

    Ignore vim's .sw? files.

    pmccurdy authored committed
    Vim names its temp files .filename.sw?.  Let's ignore them.
    Signed-off-by: Peter McCurdy <>
Commits on Apr 24, 2010
  1. cmd/version, etc: fix version number detection stuff.

    Gabriel Filion pointed out that bup's version number (which we added to the
    man pages automatically) was not detected when you used a bup tarball
    generated from 'git archive' (or more likely, you let GitHub call 'git
    archive' for you).  That makes sense, since our version detection was based
    on having a .git directory around, which the tarball doesn't.
    Instead, let's create a .gitattributes file and have it auto-substitute some
    version information during 'git archive'.  Of course, if we actually *do*
    have a .git directory, continue to use that.
    While we're here, add a new 'bup version' command and alias "bup --version"
    and "bup -V" to call it, since those options are pretty standard.
Commits on Feb 28, 2010
  1. Move cmd-*.py to cmd/*

    The bup-* programs shouldn't need to be installed into /usr/bin; we should
    search for them in /usr/lib somewhere.
    I could have left the names as cmd/cmd-*.py, but the cmd-* was annoying me
    because of tab completion.  Now I can type cmd/ran<tab> to get
Commits on Feb 5, 2010
  1. Infrastructure for generating a markdown-based man page using pandoc.

    The man page (bup.1) is total drivel for the moment, though.  And arguably
    we could split up the manpages per subcommand like git does, but maybe
    that's overkill at this stage.
Commits on Jan 24, 2010
  1. Makefile: build module using python distutils instead of manually.

    This makes it work with fink's version of python, among possibly other
    So now we can build even on MacOS X tiger, even though tiger's
    python 2.3 is too old, by installing fink's python24 package first.
Commits on Jan 12, 2010
  1. a standalone program for testing memory usage in PackIndex.

    The majority of the memory usage in bup split/save is now caused by
    searching pack indexes for sha1 hashes.  The problem with this is that, in
    the common case for a first full backup, *none* of the object hashes will be
    found, so we'll *always* have to search *all* the packfiles.  With just 45
    packfiles of 200k objects each, that makes about (18-8)*45 = 450 binary
    search steps, or 100+ 4k pages that need to be loaded from disk, to check
    *each* object hash. lets us see how fast RSS creeps up under
    various conditions, and how different optimizations affect the result.
Commits on Jan 11, 2010
  1. Assorted cleanups to Luke's cygwin fixes.

    There were a few things that weren't quite done how I would have done them,
    so I changed the implementation.  Should still work in cygwin, though.
    The only actual functional changes are:
     - index.Reader.close() now actually sets m=None rather than just closing it
     - removed the "if rename fails, then unlink first" logic, which is
       seemingly not needed after all.
     - rather than special-casing cygwin to use "hostname" instead of "hostname
       -f", it turns out python has a socket.getfqdn() that does what we want.
Commits on Jan 10, 2010
  1. @lkosewsk

    .gitignore sanity.

    lkosewsk authored
Commits on Jan 3, 2010
  1. Extremely basic 'bup server' support.

    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.
  2. Add 'bup init' command.

    Basically an alias for git init, but uses BUP_DIR instead of GIT_DIR
    environment variable.
Commits on Jan 1, 2010
  1. Initial version of 'bup save'.

    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).
Commits on Dec 31, 2009
Commits on Dec 30, 2009
  1. Add a '-t' option to 'bup split' and make 'bup join' support it.

    This lets you generate a git "tree" object with the list of hashes in a
    particular file, so you can treat the file as a directory as far as git is
    concerned.  And 'bup join' knows how to take a tree and concatenate it
    together to reverse the operation.
    Also refactored a bunch of stuff in
  2. Add a 'bup' wrapper program.

    We're going to use that with some subcommands, git-style.
  3. Add a C module to do the rolling checksum.

    This is about 80x faster than the old speed (27megs/sec instead of 330k/sec)
    but still quite a lot slower than the 60+megs/sec I get *without* the
    checksum stuff.  There are a few inefficiencies remaining, but not such easy
    ones as before...
  4. datagen.c: a quick program to generate a repeatable series of bytes.

    Useful for testing.  Note that we *don't* see the random number generator,
    so every time you generate the bytes, you get the same sequence.
    This is also vastly faster than /dev/urandom, since it doesn't try to be
    cryptographically secure.  It generates about 200 megs/sec on my computer,
    which is much faster than a disk and thus useful for testing the speed of
Commits on Oct 4, 2009
  1. Actually hash stuff, and add a basic 'make test'.

    Unfortunately the test fails: after the first difference, it never manages
    to resync.
Commits on Oct 3, 2009
  1. Extremely cheesy initial implementation of rolling-sum-based splitting.

    The checksum algorithm is crap, and we don't actually generate the output
    files yet, so I'm guessing it's still junk.
Something went wrong with that request. Please try again.