git-annex (0.20110316) UNRELEASED; urgency=low * Reorganized .git/annex/objects and .git-annex/; annex.version=2 * The first time git-annex is run in an old format repository, it will automatically upgrade it to the new format, staging all necessary changes to git. * Note that remotes must be running this version of git-annex, and must also have been upgraded, in order for git-annex to communicate with them. * Colons are now avoided in filenames, so bare clones of git repos can be put on USB thumb drives formatted with vFAT or similar filesystems. * Added two levels of hashing to object directory and .git-annex logs, to improve scalability with enormous numbers of annexed objects. (With one hundred million annexed objects, each directory would contain fewer than 1024 files.) * The setkey, fromkey, and dropkey subcommands have changed how the key is specified. --backend is no longer used with these. * Add Suggests on graphviz. Closes: #618039 * When adding files to the annex, the symlinks pointing at the annexed content are made to have the same mtime as the original file. While git does not preserve that information, this allows a tool like metastore to be used with annexed files. -- Joey Hess Sun, 13 Mar 2011 14:25:17 -0400 git-annex (0.23) unstable; urgency=low * Support ssh remotes with a port specified. * whereis: New subcommand to show where a file's content has gotten to. * Rethink filename encoding handling for display. Since filename encoding may or may not match locale settings, any attempt to decode filenames will fail for some files. So instead, do all output in binary mode. -- Joey Hess Sat, 12 Mar 2011 15:02:49 -0400 git-annex (0.22) unstable; urgency=low * Git annexes can now be attached to bare git repositories. (Both the local and remote host must have this version of git-annex installed for it to work.) * Support filenames that start with a dash; when such a file is passed to a utility it will be escaped to avoid it being interpreted as an option. (I went a little overboard and got the type checker involved in this, so such files are rather comprehensively supported now.) * New backends: SHA512 SHA384 SHA256 SHA224 (Supported on systems where corresponding shaNsum commands are available.) * describe: New subcommand that can set or change the description of a repository. * Fix test suite to reap zombies. (Zombies can be particularly annoying on OSX; thanks to Jimmy Tang for his help eliminating the infestation... for now.) * Make test suite not rely on a working cp -pr. (The Unix wars are still ON!) * Look for dir.git directories the same as git does. * Support remote urls specified as relative paths. * Support non-ssh remote paths that contain tilde expansions. * fsck: Check for and repair location log damage. * Bugfix: When fsck detected and moved away corrupt file content, it did not update the location log. -- Joey Hess Fri, 04 Mar 2011 15:10:57 -0400 git-annex (0.21) unstable; urgency=low * test: Don't rely on chmod -R working. * unannex: Fix recently introduced bug when attempting to unannex more than one file at a time. * test: Set git user name and email in case git can't guess values. * Fix display of unicode filenames. -- Joey Hess Fri, 11 Feb 2011 23:21:08 -0400 git-annex (0.20) unstable; urgency=low * Preserve specified file ordering when instructed to act on multiple files or directories. For example, "git annex get a b" will now always get "a" before "b". Previously it could operate in either order. * unannex: Commit staged changes at end, to avoid some confusing behavior with the pre-commit hook, which would see some types of commits after an unannex as checking in of an unlocked file. * map: New subcommand that uses graphviz to display a nice map of the git repository network. * Deal with the mtl/monads-fd conflict. * configure: Check for sha1sum. -- Joey Hess Tue, 08 Feb 2011 18:57:24 -0400 git-annex (0.19) unstable; urgency=low * configure: Support using the uuidgen command if the uuid command is not available. * Allow --exclude to be specified more than once. * There are now three levels of repository trust. * untrust: Now marks the current repository as untrusted. * semitrust: Now restores the default trust level. (What untrust used to do.) * fsck, drop: Take untrusted repositories into account. * Bugfix: Files were copied from trusted remotes first even if their annex.cost was higher than other remotes. * Improved temp file handling. Transfers of content can now be resumed from temp files later; the resume does not have to be the immediate next git-annex run. * unused: Include partially transferred content in the list. * Bugfix: Running a second git-annex while a first has a transfer in progress no longer deletes the first processes's temp file. -- Joey Hess Fri, 28 Jan 2011 14:31:37 -0400 git-annex (0.18) unstable; urgency=low * Bugfix: `copy --to` and `move --to` forgot to stage location log changes after transferring the file to the remote repository. (Did not affect ssh remotes.) * fsck: Fix bug in moving of corrupted files to .git/annex/bad/ * migrate: Fix support for --backend option. * unlock: Fix behavior when file content is not present. * Test suite improvements. Current top-level test coverage: 80% -- Joey Hess Fri, 14 Jan 2011 14:17:44 -0400 git-annex (0.17) unstable; urgency=low * unannex: Now skips files whose content is not present, rather than it being an error. * New migrate subcommand can be used to switch files to using a different backend, safely and with no duplication of content. * bugfix: Fix crash caused by empty key name. (Thanks Henrik for reporting.) -- Joey Hess Sun, 09 Jan 2011 10:04:11 -0400 git-annex (0.16) unstable; urgency=low * git-annex-shell: Avoid exposing any git repo config except for the annex.uuid when doing configlist. * bugfix: Running `move --to` with a remote whose UUID was not yet known could result in git-annex not recording on the local side where the file was moved to. This could not result in data loss, or even a significant problem, since the remote *did* record that it had the file. * Also, add a general guard to detect attempts to record information about repositories with missing UUIDs. * bugfix: Running `move --to` with a non-ssh remote failed. * bugfix: Running `copy --to` with a non-ssh remote actually did a move. * Many test suite improvements. Current top-level test coverage: 65% -- Joey Hess Fri, 07 Jan 2011 14:33:13 -0400 git-annex (0.15) unstable; urgency=low * Support scp-style urls for remotes (host:path). * Support ssh urls containing "~". * Add trust and untrust subcommands, to allow configuring repositories that are trusted to retain files without explicit checking. * Fix bug in numcopies handling when multiple remotes pointed to the same repository. * Introduce the git-annex-shell command. It's now possible to make a user have it as a restricted login shell, similar to git-shell. * Note that git-annex will always use git-annex-shell when accessing a ssh remote, so all of your remotes need to be upgraded to this version of git-annex at the same time. * Now rsync is exclusively used for copying files to and from remotes. scp is not longer supported. -- Joey Hess Fri, 31 Dec 2010 22:00:52 -0400 git-annex (0.14) unstable; urgency=low * Bugfix to git annex unused in a repository with nothing yet annexed. * Support upgrading from a v0 annex with nothing in it. * Avoid multiple calls to git ls-files when passed eg, "*". -- Joey Hess Fri, 24 Dec 2010 17:38:48 -0400 git-annex (0.13) unstable; urgency=low * Makefile: Install man page and html (when built). * Makefile: Add GHCFLAGS variable. * Fix upgrade from 0.03. * Support remotes using git+ssh and ssh+git as protocol. Closes: #607056 -- Joey Hess Tue, 14 Dec 2010 13:05:10 -0400 git-annex (0.12) unstable; urgency=low * Add --exclude option to exclude files from processing. * mwdn2man: Fix a bug in newline supression. Closes: #606578 * Bugfix to git annex add of an unlocked file in a subdir. Closes: #606579 * Makefile: Add PREFIX variable. -- Joey Hess Sat, 11 Dec 2010 17:32:00 -0400 git-annex (0.11) unstable; urgency=low * If available, rsync will be used for file transfers from remote repositories. This allows resuming interrupted transfers. * Added remote.annex-rsync-options. * Avoid deleting temp files when rsync fails. * Improve detection of version 0 repos. * Add uninit subcommand. Closes: #605749 -- Joey Hess Sat, 04 Dec 2010 17:27:42 -0400 git-annex (0.10) unstable; urgency=low * In .gitattributes, the annex.numcopies attribute can be used to control the number of copies to retain of different types of files. * Bugfix: Always correctly handle gitattributes when in a subdirectory of the repository. (Had worked ok for ones like "*.mp3", but failed for ones like "dir/*".) * fsck: Fix warning about not enough copies of a file, when locations are known, but are not available in currently configured remotes. * precommit: Optimise to avoid calling git-check-attr more than once. * The git-annex-backend attribute has been renamed to annex.backend. -- Joey Hess Sun, 28 Nov 2010 19:28:05 -0400 git-annex (0.09) unstable; urgency=low * Add copy subcommand. * Fix bug in setkey subcommand triggered by move --to. -- Joey Hess Sat, 27 Nov 2010 17:14:59 -0400 git-annex (0.08) unstable; urgency=low * Fix `git annex add ../foo` (when ran in a subdir of the repo). * Add configure step to build process. * Only use cp -a if it is supported, falling back to cp -p or plain cp as needed for portability. * cp --reflink=auto is used if supported, and will make git annex unlock much faster on filesystems like btrfs that support copy on write. -- Joey Hess Sun, 21 Nov 2010 13:45:44 -0400 git-annex (0.07) unstable; urgency=low * find: New subcommand. * unused: New subcommand, finds unused data. (Split out from fsck.) * dropunused: New subcommand, provides for easy dropping of unused keys by number, as listed by the unused subcommand. * fsck: Print warnings to stderr; --quiet can now be used to only see problems. -- Joey Hess Mon, 15 Nov 2010 18:41:50 -0400 git-annex (0.06) unstable; urgency=low * fsck: Check if annex.numcopies is satisfied. * fsck: Verify the sha1 of files when the SHA1 backend is used. * fsck: Verify the size of files when the WORM backend is used. * fsck: Allow specifying individual files if fscking everything is not desired. * fsck: Fix bug, introduced in 0.04, in detection of unused data. -- Joey Hess Sat, 13 Nov 2010 16:24:29 -0400 git-annex (0.05) unstable; urgency=low * Optimize both pre-commit and lock subcommands to not call git diff on every file being committed/locked. (This actually also works around a bug in ghc, that caused git-annex 0.04 pre-commit to sometimes corrupt filename being read from git ls-files and fail. See The excessive number of calls made by pre-commit exposed the ghc bug. Thanks Josh Triplett for the debugging.) * Build with -O2. -- Joey Hess Thu, 11 Nov 2010 18:31:09 -0400 git-annex (0.04) unstable; urgency=low * Add unlock subcommand, which replaces the symlink with a copy of the file's content in preparation of changing it. The "edit" subcommand is an alias for unlock. * Add lock subcommand. * Unlocked files will now automatically be added back into the annex when committed (and the updated symlink committed), by some magic in the pre-commit hook. * The SHA1 backend is now fully usable. * Add annex.version, which will be used to automate upgrades between incompatible versions. * Reorganised the layout of .git/annex/ * The new layout will be automatically upgraded to the first time git-annex is used in a repository with the old layout. * Note that git-annex 0.04 cannot transfer content from old repositories that have not yet been upgraded. * Annexed file contents are now made unwritable and put in unwriteable directories, to avoid them accidentially being removed or modified. (Thanks Josh Triplett for the idea.) * Add build dep on libghc6-testpack-dev. Closes: #603016 * Avoid using runghc to run test suite as it is not available on all architectures. Closes: #603006 -- Joey Hess Wed, 10 Nov 2010 14:23:23 -0400 git-annex (0.03) unstable; urgency=low * Fix support for file:// remotes. * Add --verbose * Fix SIGINT handling. * Fix handling of files with unusual characters in their name. * Fixed memory leak; git-annex no longer reads the whole file list from git before starting, and will be much faster with large repos. * Fix crash on unknown symlinks. * Added remote.annex-scp-options and remote.annex-ssh-options. * The backends to use when adding different sets of files can be configured via gitattributes. * In .gitattributes, the git-annex-backend attribute can be set to the names of backends to use when adding different types of files. * Add fsck subcommand. (For now it only finds unused key contents in the annex.) -- Joey Hess Sun, 07 Nov 2010 18:26:04 -0400 git-annex (0.02) unstable; urgency=low * Can scp annexed files from remote hosts, and check remote hosts for file content when dropping files. * New move subcommand, that makes it easy to move file contents from or to a remote. * New fromkey subcommand, for registering urls, etc. * git-annex init will now set up a pre-commit hook that fixes up symlinks before they are committed, to ensure that moving symlinks around does not break them. * More intelligent and fast staging of modified files; git add coalescing. * Add remote.annex-ignore git config setting to allow completly disabling a given remote. * --from/--to can be used to control the remote repository that git-annex uses. * --quiet can be used to avoid verbose output * New plumbing-level dropkey and addkey subcommands. * Lots of bug fixes. -- Joey Hess Wed, 27 Oct 2010 16:39:29 -0400 git-annex (0.01) unstable; urgency=low * First prerelease. -- Joey Hess Wed, 20 Oct 2010 12:54:24 -0400