aboutsummaryrefslogtreecommitdiff
path: root/Types.hs
Commit message (Collapse)AuthorAge
* better dup key with -J fixGravatar Joey Hess2017-10-17
| | | | | | | | | | | | | | | This avoids all the complication about redundant work discussed in the previous try at fixing this. At the expense of needing each command that could have the problem to be patched to simply wrap the action in onlyActionOn once the key is known. But there do not seem to be many such commands. onlyActionOn' should not be used with a CommandStart (or CommandPerform), although the types do allow it. onlyActionOn handles running the whole CommandStart chain. I couldn't immediately see a way to avoid mistken use of onlyActionOn'. This commit was supported by the NSF-funded DataLad project.
* Improve behavior when -J transfers multiple files that point to the same keyGravatar Joey Hess2017-10-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After a false start, I found a fairly non-intrusive way to deal with it. Although it only handles transfers -- there may be issues with eg concurrent dropping of the same key, or other operations. There is no added overhead when -J is not used, other than an added inAnnex check. When -J is used, it has to maintain and check a small Set, which should be negligible overhead. It could output some message saying that the transfer is being done by another thread. Or it could even display the same progress info for both files that are being downloaded since they have the same content. But I opted to keep it simple, since this is rather an edge case, so it just doesn't say anything about the transfer of the file until the other thread finishes. Since the deferred transfer action still runs, actions that do more than transfer content will still get a chance to do their other work. (An example of something that needs to do such other work is P2P.Annex, where the download always needs to receive the content from the peer.) And, if the first thread fails to complete a transfer, the second thread can resume it. But, this unfortunately means that there's a risk of redundant work being done to transfer a key that just got transferred. That's not ideal, but should never cause breakage; the same thing can occur when running two separate git-annex processes. The get/move/copy/mirror --from commands had extra inAnnex checks added, inside the download actions. Without those checks, the first thread downloaded the content, and then the second thread woke up and downloaded the same content redundantly. move/copy/mirror --to is left doing redundant uploads for now. It would need a second checkPresent of the remote inside the upload to avoid them, which would be expensive. A better way to avoid redundant work needs to be found.. This commit was supported by the NSF-funded DataLad project.
* AssociatedFile newtypeGravatar Joey Hess2017-03-10
| | | | | | To prevent any further mistakes like 1a497cefb47557f0b4788c606f9071be422b2511 This commit was sponsored by Francois Marier on Patreon.
* remove module unused since switch to optparse-applicativeGravatar Joey Hess2016-01-21
|
* update my email address and homepage urlGravatar Joey Hess2015-01-21
|
* moved AssociatedFile definitionGravatar Joey Hess2013-07-04
|
* webapp: Progess bar fixes for many types of special remotes.Gravatar Joey Hess2013-03-28
| | | | | | | | | | | | | There was confusion in different parts of the progress bar code about whether an update contained the total number of bytes transferred, or the number of bytes transferred since the last update. One way this bug showed up was progress bars that seemed to stick at zero for a long time. In order to fix it comprehensively, I add a new BytesProcessed data type, that is explicitly a total quantity of bytes, not a delta. Note that this doesn't necessarily fix every problem with progress bars. Particularly, buffering can now cause progress bars to seem to run ahead of transfers, reaching 100% when data is still being uploaded.
* type based git config handling for remotesGravatar Joey Hess2013-01-01
| | | | | Still a couple of places that use git config ad-hoc, but this is most of it done.
* type based git config handlingGravatar Joey Hess2012-12-29
| | | | | | | | | | | Now there's a Config type, that's extracted from the git config at startup. Note that laziness means that individual config values are only looked up and parsed on demand, and so we get implicit memoization for all of them. So this is not only prettier and more type safe, it optimises several places that didn't have explicit memoization before. As well as getting rid of the ugly explicit memoization code. Not yet done for annex.<remote>.* configuration settings.
* refactorGravatar Joey Hess2012-11-18
|
* tweakGravatar Joey Hess2012-01-06
|
* type alias cleanupGravatar Joey Hess2011-12-31
|
* add a UUID typeGravatar Joey Hess2011-11-07
| | | | Should have done this a long time ago.
* break out non-log stuff to separate moduleGravatar Joey Hess2011-10-15
|
* rename modules for data types into Types/ directoryGravatar Joey Hess2011-06-01
|
* rename fileGravatar Joey Hess2011-03-15
|
* first pass at using new keysGravatar Joey Hess2011-03-15
| | | | | | | It compiles. It sorta works. Several subcommands are FIXME marked and broken, because things that used to accept separate --backend and --key params need to be changed to accept just a --key that encodes all the key info, now that there is metadata in keys.
* rename TypeInternals to BackendTypesGravatar Joey Hess2011-01-26
| | | | Now that it only contains types used by the backends
* successfully split Annex and AnnexState out of TypeInternalsGravatar Joey Hess2011-01-25
|
* copyright statements0.02Gravatar Joey Hess2010-10-27
|
* add dropkey subcommand and --quietGravatar Joey Hess2010-10-25
| | | | Needed for better git annex move --from
* new fromkey subcommand, for registering urls, etc0.01Gravatar Joey Hess2010-10-21
| | | | had to redo Annex monad's flag storage
* gratuitous renameGravatar Joey Hess2010-10-18
|
* add flags, and change to subcommand styleGravatar Joey Hess2010-10-14
|
* bugfixGravatar Joey Hess2010-10-14
|
* more reorg, spiffed up state monadGravatar Joey Hess2010-10-14
|
* more namespace cleanupGravatar Joey Hess2010-10-14
|
* convert GitRepo to qualified importGravatar Joey Hess2010-10-14
|
* updateGravatar Joey Hess2010-10-13
|
* use a state monadGravatar Joey Hess2010-10-13
| | | | enormous reworking
* autobugfixing!Gravatar Joey Hess2010-10-13
| | | | | | | | Converted Key to a real data type and caught all the places where I used an unconverted filename as a key. Had to loose some sanity checks around whether something is already annexed, but I guess I can add those back other ways.
* bugfixesGravatar Joey Hess2010-10-12
|
* more stateGravatar Joey Hess2010-10-12
|
* thread State thru to backendsGravatar Joey Hess2010-10-12
|
* updateGravatar Joey Hess2010-10-12
|
* split up TypesGravatar Joey Hess2010-10-11
|
* add git config lookups for annex.name, annex.backends, etcGravatar Joey Hess2010-10-11
|
* updateGravatar Joey Hess2010-10-10
|
* cache whether a repo is bareGravatar Joey Hess2010-10-10
|
* updateGravatar Joey Hess2010-10-10
|
* updateGravatar Joey Hess2010-10-10