Import kup-0.4.2 as wip/kup.

Kup is created for helping people to keep up-to-date backups of
their personal files. Connecting a USB hard drive is the primary
supported way to store files, but saving files to a server over a
network connection is also possible for advanced users.

When you plug in your external hard drive Kup will automatically
start copying your latest changes, but of course it will only do
so if you have been active on your computer for some hourse since
the last time you took a backup (and it can of course ask you first,
before copying anything).  In general Kup tries to not disturb you
needlessly.

TODO:
Package finished. Someone should try out if it's working and useful.
+ kup.
Update to 0.21.1:

The following (critical) fixes have been backported to this
maintenance release. All users of the library are encouraged to
update.

    b4d00c1 array: mark the array to grow as volatile
    f3f9dc0 revwalk: remove preallocation of the uninteresting commits
    440a87a Add unit test to test add section without lf at EOF
    190fe07 Make sure \n is at the end of config file before a new section is written
    ace6567 Properly report failure when expanding a packfile
    f8b4093 refspec: support asterisks in the middle of a pattern
    0aa6b7e refspec: short-circuit non-pattern refspecs on transform
    18cf389 Include libssh2.h before git2.h (transport.h)
    dbcb751 Fix git_cred_ssh_interactive_callback signature
    0e59463 netops: error out on url without a path
    12dcc6e ssh: libssh2_channel_write() behaves like send()
    38ddf22 Round up pool alloc sizes for alignment
    63ee946 ssh: always declare the libssh2 types
    aa1b62b ssh: create the right callback signature based on build options
    1d43005 ssl: init only once without threads
    5838338 Merge pull request #2494 from libgit2/cmn/treebuilder-set-attribute
    b692568 treebuilder: set the attributes before sorting and inserting

0.21.0:

Final release of 0.21.0 after two release candidates. Go get it.

Changed since last version:

    Top-level Improvements
	We've dropped support for Windows XP. We're evil like that.
	Added a new config snapshotting API to fix race issues when
	different applications (e.g. Git and a libgit2 client)
	access the same repository simultaneously.
	Added reflog support to all APIs that could alter a reference.
	These APIs gained two new parameters: const git_signature
	*signature and const char *log_message to control what is
	written to the reflog. Passing NULL for these values will
	use defaults from the user's configuration.
	Avoided race conditions when updating references. Any
	function that alters a reference will check if the underlying
	reference data has been changed since libgit2 looked up
	the data and cancel the operation with error GIT_EMODIFIED
	if the reference has been changed.
	Converted all APIs that output string data to use git_buf
	objects for the return value. Previously these would
	typically take a pointer to an output buffer and a size,
	and generate an error if the output buffer was not large
	enough.
	Added standard git_<object>_init_options functions to
	initialize options structures when static initialization
	is not possible, and renamed options structures to standard
	git_<object>_options (replacing _opts suffix used in some
	places)
	Improved use of const on pointers in many APIs (which may
	affect some bindings).
	Replaced use of oid with simply id for references to git_oid
	value.s
	Previously, when a callback function returned an error
	value (i.e. non-zero), libgit2 converted it to GIT_EUSER
	for the parent function's return value. Now, libgit2 tries
	to pass through the callback's return value all the way
	back to the caller. To disambiguate between an error
	generated by the callback vs. an error generated internally
	by libgit2, a callback can still explicitly return the
	GIT_EUSER value -- libgit2 will never use that error code
	for errors that it raises.
	All inline functions were eliminated from the public libgit2
	API
	Removed all Apache licensed code from library
	CRLF handling is much improved in the platforms where it
	matters (Windows)