summaryrefslogtreecommitdiff
path: root/Command/Add.hs
Commit message (Collapse)AuthorAge
* addurl in direct modeGravatar Joey Hess2013-01-06
|
* add works in direct modeGravatar Joey Hess2013-01-06
| | | | | Also, changed sync to no longer automatically add files in direct mode. That was only necessary before because add didn't work.
* squelch warningGravatar Joey Hess2013-01-05
|
* committer: Fix a file handle leak.Gravatar Joey Hess2013-01-05
|
* ensure that direct mode file is not modified while generating its keyGravatar Joey Hess2012-12-29
|
* convert notBareRepo to a CommandCheckGravatar Joey Hess2012-12-29
| | | | | | This avoids some small overhead by only running the check once per command; it also ensures that, even if the command doesn't find anything to run on, it still fails to run when in a bare repo.
* block all commands that don't work in direct modeGravatar Joey Hess2012-12-29
| | | | | I left status working in direct mode, although it doesn't show correct stats for known annex keys.
* add a guard against using git annex add in direct mode repoGravatar Joey Hess2012-12-24
| | | | | Currently, it deletes files when run in one, so until I get a chance to fix it, block foot shooting.
* assistant adding of files in direct modeGravatar Joey Hess2012-12-24
|
* commentGravatar Joey Hess2012-12-19
|
* where indentationGravatar Joey Hess2012-11-12
|
* maintain set of files pendingAddGravatar Joey Hess2012-06-20
| | | | | | | | Kqueue needs to remember which files failed to be added due to being open, and retry them. This commit gets the data in place for such a retry thread. Broke KeySource out into its own file, and added Eq and Ord instances so it can be stored in a Set.
* fix kevent symlink creationGravatar Joey Hess2012-06-19
|
* remove newly created tmp file before linkingGravatar Joey Hess2012-06-15
|
* better temp file handlingGravatar Joey Hess2012-06-15
|
* tweakGravatar Joey Hess2012-06-15
|
* fixed the double commits problemGravatar Joey Hess2012-06-10
|
* extend Git.Queue to be able to queue more than simple git commandsGravatar Joey Hess2012-06-07
| | | | | | While I was in there, I noticed and fixed a bug in the queue size calculations. It was never encountered only because Queue.add was only ever run with 1 file in the list.
* close the git add raceGravatar Joey Hess2012-06-06
| | | | | | | | | | | | | | | | | There's a race adding a new file to the annex: The file is moved to the annex and replaced with a symlink, and then we git add the symlink. If someone comes along in the meantime and replaces the symlink with something else, such as a new large file, we add that instead. Which could be bad.. This race is fixed by avoiding using git add, instead the symlink is directly staged into the index. It would be nice to make `git annex add` use this same technique. I have not done so yet because it currently runs git update-index once per file, which would slow does `git annex add`. A future enhancement would be to extend the Git.Queue to include the ability to run update-index with a list of Streamers.
* factor out nukeFileGravatar Joey Hess2012-06-06
|
* split out utility functionsGravatar Joey Hess2012-06-06
|
* add: Prevent (most) modifications from being made to a file while it is ↵Gravatar Joey Hess2012-06-05
| | | | | | | | | | | being added to the annex. Anything that tries to open the file for write, or delete the file, or replace it with something else, will not affect the add. Only if a process has the file open for write before add starts can it still change it while (or after) it's added to the annex. (fsck will catch this later of course)
* separate source of content from the filename associated with the key when ↵Gravatar Joey Hess2012-06-05
| | | | | | generating a key This already made migrate's code a lot simpler.
* added ifM and nuked 11 lines of codeGravatar Joey Hess2012-03-14
| | | | no behavior changes
* cleanupGravatar Joey Hess2012-03-06
|
* 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.
* add: If interrupted, add can leave files converted to symlinks but not yet ↵Gravatar Joey Hess2011-12-07
| | | | added to git. Running the add again will now clean up this situtation.
* add support for using hashDirLower in addition to hashDirMixedGravatar Joey Hess2011-11-28
| | | | | | | | | | Supporting multiple directory hash types will allow converting to a different one, without a flag day. gitAnnexLocation now checks which of the possible locations have a file. This means more statting of files. Several places currently use gitAnnexLocation and immediately check if the returned file exists; those need to be optimised.
* support .git/annex on a different disk than the rest of the repoGravatar Joey Hess2011-11-28
| | | | | | | | | | | | | | | | | | 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.
* reorder repo parameters lastGravatar Joey Hess2011-11-08
| | | | | | | | | | | | | 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.
* cleanupGravatar Joey Hess2011-10-31
|
* bare cleanupGravatar Joey Hess2011-10-29
|
* clean up check selection codeGravatar Joey Hess2011-10-29
| | | | | | | | | 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.
* Fail if --from or --to is passed to commands that do not support them.Gravatar Joey Hess2011-10-27
|
* refactored and generalized pre-command sanity checkingGravatar Joey Hess2011-10-27
|
* reorganize log modulesGravatar Joey Hess2011-10-15
| | | | no code changes
* renameGravatar Joey Hess2011-10-05
|
* renameGravatar Joey Hess2011-10-04
|
* factor out Annex exception handling moduleGravatar Joey Hess2011-10-04
|
* factor out common importsGravatar Joey Hess2011-10-03
| | | | no code changes
* tweakGravatar Joey Hess2011-09-15
|
* remove command type definitionsGravatar Joey Hess2011-09-15
| | | | | | | 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.
* clean up params in usage displayGravatar Joey Hess2011-09-15
|
* split groups of related functions out of UtilityGravatar Joey Hess2011-08-22
|
* moved files aroundGravatar Joey Hess2011-08-20
|
* addurl: --fast can be used to avoid immediately downloading the url.Gravatar Joey Hess2011-08-06
| | | | | | 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.
* finished hlint passGravatar Joey Hess2011-07-15
|
* unannex: Clean up use of git commit -a.Gravatar Joey Hess2011-07-14
| | | | | | | | 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.
* add: Be even more robust to avoid ever leaving the file seemingly deleted.Gravatar Joey Hess2011-07-07
| | | | | 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.
* add: Avoid a failure mode that resulted in the file seemingly being deleted ↵Gravatar Joey Hess2011-07-07
| | | | (content put in the annex but no symlink present).