| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many functions took the repo as their first parameter. Changing it
consistently to be the last parameter allows doing some useful things with
currying, that reduce boilerplate.
In particular, g <- gitRepo is almost never needed now, instead
use inRepo to run an IO action in the repo, and fromRepo to get
a value from the repo.
This also provides more opportunities to use monadic and applicative
combinators.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This new approach allows filtering out checks from the default set that are
not appropriate for a command, rather than having to list every check
that is appropriate. It also reduces some boilerplate.
Haskell does not define Eq for functions, so I had to go a long way around
with each check having a unique id. Meh.
|
| |
|
| |
|
|
|
|
| |
no code changes
|
| |
|
| |
|
| |
|
|
|
|
| |
no code changes
|
| |
|
|
|
|
|
|
|
| |
These were a mistake, they make the type signatures harder to read and
less flexible. The CommandSeek, CommandStart, CommandPerform, and
CommandCleanup types were a good idea, but composing them with the
parameters expected is going too far.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The tricky part about this is that to generate a key, the file must be
present already. Worked around by adding (back) an URL key type, which
is used for addurl --fast.
|
| |
|
|
|
|
|
|
|
|
| |
This was more complex than would be expected. unannex has to use git commit -a
since it's removing files from git; git commit filelist won't do.
Allow commands to be added to the Git queue that have no associated files,
and run such commands once.
|
|
|
|
|
| |
A failure at any point after the file is annexed will result in an undo
that puts the original file back into place and wipes the location log.
|
|
|
|
| |
(content put in the annex but no symlink present).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only remaining vestiage of backends is different types of keys. These
are still called "backends", mostly to avoid needing to change user interface
and configuration. But everything to do with storing keys in different
backends was gone; instead different types of remotes are used.
In the refactoring, lots of code was moved out of odd corners like
Backend.File, to closer to where it's used, like Command.Drop and
Command.Fsck. Quite a lot of dead code was removed. Several data structures
became simpler, which may result in better runtime efficiency. There should
be no user-visible changes.
|
|
|
|
|
| |
Generalized LocationLog to PresenceLog, and use a presence log to record
urls for the web special remote.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Since the queue is flushed in between subcommand actions being run,
there should be no issues with actions that expect to queue up some stuff
and have it run after they do other stuff. So I didn't have to audit for
such assumptions.
|
| |
|
|
|
|
|
| |
There are two types of commands; those that access the repository and those
that don't. Sorted.
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
So, I have a type checked safe handling of filenames starting with dashes,
throughout the code.
|
|
|
|
| |
Most of it was to do with managing annexed Content, so put there
|
|
|
|
| |
backend, safely and with no duplication of content.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
directories, to avoid them accidentially being removed or modified. (Thanks Josh Triplett for the idea.)
|
| |
|
|
|