| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
| |
Makes it easy to find files with duplicate contents, anyway.. :)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
I was happily able to repurpose some code from Git.Filename to handle this.
I remember writing that code... a whole afternoon at a coffee shop, after
which I felt I'd struggled with Haskell and git, and sorta lost, in needing
to write this nasty peice of code. But was also pleased at the use of a
pair of functions and quickcheck that allowed me to get it 100% right.
So, turns out I not only got it right, but the code wasn't as special-purpose
as I'd feared. Yay!
|
| |
|
|
|
|
| |
is output by git annex find.
|
|
|
|
|
|
| |
This is built for speed; a format string is parsed once, generating a
Format, that can be applied repeatedly to different sets of variables
to generate output.
|
|
|
|
|
| |
This involved adding a test harness to run gpg with a dummy key, and lots
of fun.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This is both a partial Prelude that conflicts with the real one, and a
way to guard against the Prelude's partial functions.
|
| |
|
| |
|
|
|
|
|
| |
Left a few Prelude.head's in where it was checked not null and too hard to
remove, etc.
|
|
|
|
| |
Safe versions of init and last
|
| |
|
| |
|
| |
|
|
|
|
|
| |
There are still hundreds of places that use partial functions head, tail,
init, and last.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only fully supported thing is to have the main repository on one disk,
and .git/annex on another. Only commands that move data in/out of the annex
will need to copy it across devices.
There is only partial support for putting arbitrary subdirectories of
.git/annex on different devices. For one thing, but this can require more
copies to be done. For example, when .git/annex/tmp is on one device, and
.git/annex/journal on another, every journal write involves a call to
mv(1). Also, there are a few places that make hard links between various
subdirectories of .git/annex with createLink, that are not handled.
In the common case without cross-device, the new moveFile is actually
faster than renameFile, avoiding an unncessary stat to check that a file
(not a directory) is being moved. Of course if a cross-device move is
needed, it is as slow as mv(1) of the data.
|
|
|
|
| |
Signed-off-by: Joey Hess <joey@kitenet.net>
|
|
|
|
|
|
|
|
|
| |
over ssh.
This is actually tricky, 45bbf210a1210172c7c7b87879ed74f7c8ccbdba added
the escaping because it's needed for rsync that does go over ssh.
So I had to detect whether the remote's rsync url will use ssh or not,
and vary the escaping.
|
| |
|
|
|
|
|
| |
This is more safe than System.Cmd.Utils.safeSystem, since it does not throw
an error on nonzero exit status.
|
| |
|
| |
|
|
|
|
|
| |
Apparently in haskell if you teach a man to fish, he'll write
more pointfree code.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
no code changes
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* git-annex now asks git-annex-shell to verify that it's operating in
the expected repository.
* Note that this git-annex will not interoperate with remotes using
older versions of git-annex-shell.
The reason for this check is to avoid git-annex getting confused about
what remote repository actually contains a value. It's a prerequisite for
supporting git insteadOf aliases.
|
|
|
|
| |
no code changes
|
|
|
|
| |
needs time and space optimisation
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
find: Rather than only showing files whose contents are present, when used
with --exclude --copies or --in, displays all files that match the
specified conditions.
Note that this is a behavior change for find --exclude! Old behavior
can be gotten with find --in . --exclude=...
|
| |
|
| |
|