summaryrefslogtreecommitdiff
path: root/Command
Commit message (Collapse)AuthorAge
...
* zero still badGravatar Joey Hess2012-02-16
|
* allow pathdepth to drop from the front or take from the end (negative)Gravatar Joey Hess2012-02-16
|
* improve usageGravatar Joey Hess2012-02-16
|
* addurl: Add --pathdepth option.Gravatar Joey Hess2012-02-16
|
* avoid too long filename when making up a filename for addurl tooGravatar Joey Hess2012-02-16
|
* hlintGravatar Joey Hess2012-02-16
|
* create parent directories as needed for addurl --fileGravatar Joey Hess2012-02-16
|
* set oneshot mode on a per-command basisGravatar Joey Hess2012-02-14
| | | | Avoids ugly (and test suite failing) hack in Command.Version
* avoid version saving stateGravatar Joey Hess2012-02-14
| | | | This is not the place to commit journal files.
* whereis: Prints the urls of files that the web special remote knows about.Gravatar Joey Hess2012-02-14
|
* rework git check-attr interfaceGravatar Joey Hess2012-02-13
| | | | | | | | | | | | | | | Now gitattributes are looked up, efficiently, in only the places that really need them, using the same approach used for cat-file. The old CheckAttr code seemed very fragile, in the way it streamed files through git check-attr. I actually found that cad8824852aa0623dc41eac02a9e2bae47d88ec4 was still deadlocking with ghc 7.4, at the end of adding a lot of files. This should fix that problem, and avoid future ones. The best part is that this removes withAttrFilesInGit and withNumCopies, which were complicated Seek methods, as well as simplfying the types for several other Seek methods that had a Backend tupled in.
* also verify new urls when adding them to existing filesGravatar Joey Hess2012-02-10
|
* addurl --fast: Verifies that the url can be downloaded (only getting its ↵Gravatar Joey Hess2012-02-10
| | | | head), and records the size in the key.
* addurl: Normalize badly encoded urls.Gravatar Joey Hess2012-02-09
|
* improve error messageGravatar Joey Hess2012-02-08
|
* addurl: Added a --file optionGravatar Joey Hess2012-02-08
| | | | | | | Can be used to specify what file the url is added to. This can be used to override the default filename that is used when adding an url, which is based on the url. Or, when the file already exists, the url is recorded as another location of the file.
* use "known" instead of "visible"Gravatar Joey Hess2012-02-06
| | | | I think it's clearer, also it's the same length as "local" :)
* remove old commentGravatar Joey Hess2012-02-04
|
* fix touch and statfs to work on any files in any localeGravatar Joey Hess2012-02-04
| | | | | | | Use withCAString rather than withCString. XXX Actually, this only works in non-unicode locales when presented with unicode characters. Help?
* Merge branch 'master' into ghc7.4Gravatar Joey Hess2012-02-03
|\ | | | | | | | | Conflicts: Utility/Misc.hs
| * IO exception reworkGravatar Joey Hess2012-02-03
| | | | | | | | | | | | ghc 7.4 comaplains about use of System.IO.Error to catch exceptions. Ok, use Control.Exception, with variants specialized to only catch IO exceptions.
* | support all filename encodings with ghc 7.4Gravatar Joey Hess2012-02-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under ghc 7.4, this seems to be able to handle all filename encodings again. Including filename encodings that do not match the LANG setting. I think this will not work with earlier versions of ghc, it uses some ghc internals. Turns out that ghc 7.4 has a special filesystem encoding that it uses when reading/writing filenames (as FilePaths). This encoding is documented to allow "arbitrary undecodable bytes to be round-tripped through it". So, to get FilePaths from eg, git ls-files, set the Handle that is reading from git to use this encoding. Then things basically just work. However, I have not found a way to make Text read using this encoding. Text really does assume unicode. So I had to switch back to using String when reading/writing data to git. Which is a pity, because it's some percent slower, but at least it works. Note that stdout and stderr also have to be set to this encoding, or printing out filenames that contain undecodable bytes causes a crash. IMHO this is a misfeature in ghc, that the user can pass you a filename, which you can readFile, etc, but that default, putStr of filename may cause a crash! Git.CheckAttr gave me special trouble, because the filenames I got back from git, after feeding them in, had further encoding breakage. Rather than try to deal with that, I just zip up the input filenames with the attributes. Which must be returned in the same order queried for this to work. Also of note is an apparent GHC bug I worked around in Git.CheckAttr. It used to forkProcess and feed git from the child process. Unfortunatly, after this forkProcess, accessing the `files` variable from the parent returns []. Not the value that was passed into the function. This screams of a bad bug, that's clobbering a variable, but for now I just avoid forkProcess there to work around it. That forkProcess was itself only added because of a ghc bug, #624389. I've confirmed that the test case for that bug doesn't reproduce it with ghc 7.4. So that's ok, except for the new ghc bug I have not isolated and reported. Why does this simple bit of code magnet the ghc bugs? :) Also, the symlink touching code is currently broken, when used on utf-8 filenames in a non-utf-8 locale, or probably on any filename containing undecodable bytes, and I temporarily commented it out.
* | attempt at a quick, utf-8 only fix to the ghc 7.4 problemGravatar Joey Hess2012-02-01
|/ | | | | If you have only utf-8 filenames, and need to build git-annex with ghc 7.4, this will work. But, it will crash on non-utf-8 filenames.
* switch to the strict state monadGravatar Joey Hess2012-01-29
| | | | | | | | | | I had not realized what a memory leak the lazy state monad could be, although I have not seen much evidence of actual leaking in git-annex. However, if running git-annex on a great many files, this could matter. The additional Utility.State.changeState adds even more strictness, avoiding a problem I saw in github-backup where repeatedly modifying state built up a huge pile of thunks.
* Avoid repeated location log commits when a remote is receiving files.Gravatar Joey Hess2012-01-28
| | | | | | | | | Done by adding a oneshot mode, in which location log changes are written to the journal, but not committed. Taking advantage of git-annex's existing ability to recover in this situation. This is used by git-annex-shell and other places where changes are made to a remote's location log.
* fsck --from remote --fastGravatar Joey Hess2012-01-20
| | | | | | | Avoids expensive file transfers, at the expense of checking file size and/or contents. Required some reworking of the remote code.
* use a different tmp file when fscking remote dataGravatar Joey Hess2012-01-19
| | | | | Since the content might be symlinked into place, it's not appropriate to use withTmp here.
* add tmp flag parameter to retrieveKeyFileGravatar Joey Hess2012-01-19
|
* fsck --fromGravatar Joey Hess2012-01-19
| | | | | | | | | | | | | | | | Fscking a remote is now supported. It's done by retrieving the contents of the specified files from the remote, and checking them, so can be an expensive operation. (Several optimisations are possible, to speed it up, of course.. This is the slow and stupid remote fsck to start with.) Still, if the remote is a special remote, or a git repository that you cannot run fsck in locally, it's nice to have the ability to fsck it. If you have any directory special remotes, now would be a good time to fsck them, in case you were hit by the data loss bug fixed in the previous release!
* convert fsckKey to a MaybeGravatar Joey Hess2012-01-19
| | | | This way it's clear when a backend does not implement its own fsck checks.
* tweaksGravatar Joey Hess2012-01-11
|
* reorgGravatar Joey Hess2012-01-10
|
* break module dependancy loopGravatar Joey Hess2012-01-10
| | | | A PITA but worth it to clean up the trust configuration code.
* map: Fix display of remote reposGravatar Joey Hess2012-01-08
| | | | A change to break local cycles made remote repos be dropped entirely.
* log: Add --gource mode, which generates output usable by gource.Gravatar Joey Hess2012-01-07
| | | | | As part of this, I fixed up how log was getting the descriptions of remotes.
* typoGravatar Joey Hess2012-01-07
|
* reap zombiesGravatar Joey Hess2012-01-07
|
* sped up git annex log rather a lotGravatar Joey Hess2012-01-07
| | | | | See comment! Isn't git fun, always interesting approaches to optimise things that seemed unfixably slow.
* cleanupGravatar Joey Hess2012-01-07
| | | | Broke out pure general functions etc.
* tweakGravatar Joey Hess2012-01-06
|
* tweakGravatar Joey Hess2012-01-06
|
* complete set of log optionsGravatar Joey Hess2012-01-06
|
* log --before=dateGravatar Joey Hess2012-01-06
|
* --boundry was not neededGravatar Joey Hess2012-01-06
|
* better data typeGravatar Joey Hess2012-01-06
|
* log --max-count=nGravatar Joey Hess2012-01-06
|
* change log displayGravatar Joey Hess2012-01-06
| | | | | | | | Including the file in the lines behaves better when limiting with --after, since only files that changed in the time period are shown. Still not fully happy with the line layout, but putting the +/- first followed by the date seems a good change.
* log --after=dateGravatar Joey Hess2012-01-06
|
* use a zipperGravatar Joey Hess2012-01-06
|
* log: New command that displays the location log for file, showing each ↵Gravatar Joey Hess2012-01-06
| | | | | | | | | | | | | | | repository they were added to and removed from. This needs to run git log on the location log files to get at all past versions of the file, which tends to be a bit slow. It would be possible to make a version optimised for showing the location logs for every key. That would only need to run git log once, so would be faster, but it would need to process an enormous amount of data, so would not speed up the individual file case. In the future it would be nice to support log --format. log --json also doesn't work right yet.