git-annex 5.20150522 → 5.20150528
raw patch · 42 files changed
+1501/−99 lines, 42 filesdep +hamletdep ~shakespeare
Dependencies added: hamlet
Dependency ranges changed: shakespeare
Files
- Backend/Hash.hs +34/−20
- Backend/URL.hs +2/−2
- Build/EvilSplicer.hs +1/−1
- CHANGELOG +19/−0
- Command/AddUrl.hs +4/−4
- Command/FromKey.hs +13/−3
- Command/ImportFeed.hs +1/−1
- Command/RegisterUrl.hs +3/−3
- Remote/BitTorrent.hs +1/−1
- Utility/Exception.hs +14/−2
- Utility/ExternalSHA.hs +9/−11
- Utility/SafeCommand.hs +24/−25
- cabal.config +1069/−0
- debian/changelog +19/−0
- debian/control +2/−1
- doc/bugs/Amazon_S3_storage_hosted_in_Frankfurt_not_usable.mdwn +19/−0
- doc/bugs/git_annex_fsck_on_btrfs_devices.mdwn +18/−0
- doc/bugs/webapp_missing_in_20150522_release.mdwn +37/−0
- doc/design/balanced_preferred_content.mdwn +14/−0
- doc/devblog/day_288__microrelease_prep.mdwn +22/−0
- doc/direct_mode.mdwn +0/−3
- doc/direct_mode/comment_17_e7c066fba8e28c61e8517c7a18a02457._comment +7/−0
- doc/direct_mode/comment_18_e46f70efa6d8d65d5ef81cdcbd844869._comment +13/−0
- doc/forum/Proper_usage_of_git_annex_proxy_to_mimc_undo_--depth.mdwn +15/−0
- doc/forum/how_do_automated_upgrades_work__63__.mdwn +11/−0
- doc/git-annex-fromkey.mdwn +6/−0
- doc/git-annex-registerurl.mdwn +4/−0
- doc/news/version_5.20150406.1.mdwn +0/−6
- doc/news/version_5.20150528.mdwn +15/−0
- doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment +18/−0
- doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment +8/−0
- doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment +23/−0
- doc/tips/publishing_your_files_to_the_public.mdwn +13/−0
- doc/tips/shared_git_annex_directory_between_multiple_users.mdwn +1/−1
- doc/todo/credentials-less_access_to_s3.mdwn +11/−0
- doc/todo/get_--incomplete.mdwn +6/−0
- git-annex.cabal +3/−3
- man/git-annex-fromkey.1 +6/−0
- man/git-annex-registerurl.1 +4/−0
- standalone/linux/skel/runshell +7/−7
- standalone/osx/git-annex.app/Contents/MacOS/runshell +5/−5
- test too large to diff
Backend/Hash.hs view
@@ -95,16 +95,17 @@ {- A key's checksum is checked during fsck. -} checkKeyChecksum :: Hash -> Key -> FilePath -> Annex Bool-checkKeyChecksum hash key file = do- fast <- Annex.getState Annex.fast- mstat <- liftIO $ catchMaybeIO $ getFileStatus file- case (mstat, fast) of- (Just stat, False) -> do- filesize <- liftIO $ getFileSize' file stat- showSideAction "checksum"- check <$> hashFile hash file filesize- _ -> return True+checkKeyChecksum hash key file = go `catchHardwareFault` hwfault where+ go = do+ fast <- Annex.getState Annex.fast+ mstat <- liftIO $ catchMaybeIO $ getFileStatus file+ case (mstat, fast) of+ (Just stat, False) -> do+ filesize <- liftIO $ getFileSize' file stat+ showSideAction "checksum"+ check <$> hashFile hash file filesize+ _ -> return True expected = keyHash key check s | s == expected = True@@ -114,6 +115,10 @@ | '\\' : s == expected = True | otherwise = False + hwfault e = do+ warning $ "hardware fault: " ++ show e+ return False+ keyHash :: Key -> String keyHash key = dropExtensions (keyName key) @@ -146,17 +151,25 @@ | otherwise = Nothing hashFile :: Hash -> FilePath -> Integer -> Annex String-hashFile hash file filesize = liftIO $ go hash+hashFile hash file filesize = go hash where go (SHAHash hashsize) = case shaHasher hashsize filesize of- Left sha -> sha <$> L.readFile file- Right command ->- either error return - =<< externalSHA command hashsize file- go (SkeinHash hashsize) = skeinHasher hashsize <$> L.readFile file- go MD5Hash = md5Hasher <$> L.readFile file+ Left sha -> use sha+ Right (external, internal) -> do+ v <- liftIO $ externalSHA external hashsize file+ case v of+ Right r -> return r+ Left e -> do+ warning e+ -- fall back to internal since+ -- external command failed+ use internal+ go (SkeinHash hashsize) = use (skeinHasher hashsize)+ go MD5Hash = use md5Hasher+ + use hasher = liftIO $ hasher <$> L.readFile file -shaHasher :: HashSize -> Integer -> Either (L.ByteString -> String) String+shaHasher :: HashSize -> Integer -> Either (L.ByteString -> String) (String, L.ByteString -> String) shaHasher hashsize filesize | hashsize == 1 = use SysConfig.sha1 sha1 | hashsize == 256 = use SysConfig.sha256 sha256@@ -165,15 +178,16 @@ | hashsize == 512 = use SysConfig.sha512 sha512 | otherwise = error $ "unsupported sha size " ++ show hashsize where- use Nothing hasher = Left $ show . hasher+ use Nothing hasher = Left $ usehasher hasher use (Just c) hasher {- Use builtin, but slightly slower hashing for - smallish files. Cryptohash benchmarks 90 to 101% - faster than external hashers, depending on the hash - and system. So there is no point forking an external - process unless the file is large. -}- | filesize < 1048576 = use Nothing hasher- | otherwise = Right c+ | filesize < 1048576 = Left $ usehasher hasher+ | otherwise = Right (c, usehasher hasher)+ usehasher hasher = show . hasher skeinHasher :: HashSize -> (L.ByteString -> String) skeinHasher hashsize
Backend/URL.hs view
@@ -31,8 +31,8 @@ } {- Every unique url has a corresponding key. -}-fromUrl :: String -> Maybe Integer -> Annex Key-fromUrl url size = return $ stubKey+fromUrl :: String -> Maybe Integer -> Key+fromUrl url size = stubKey { keyName = genKeyName url , keyBackendName = "URL" , keySize = size
Build/EvilSplicer.hs view
@@ -616,7 +616,7 @@ let_do = parsecAndReplace $ do void $ string "= do { let " x <- many $ noneOf "=\r\n"- ws <- many1 $ oneOf " \t\r\n"+ _ <- many1 $ oneOf " \t\r\n" void $ string "= " return $ "= do { " ++ x ++ " <- return $ "
CHANGELOG view
@@ -1,3 +1,21 @@+git-annex (5.20150528) unstable; urgency=medium++ * fromkey, registerurl: Allow urls to be specified instead of keys,+ and generate URL keys.+ * Linux standalone, OSX app: Improve runshell script to always quote+ shell vars, so that it will work when eg, untarred into a directory+ path with spaces in its name.+ * Revert removal dependency on obsolete hamlet package, since the+ autobuilders are not ready for this change yet and it prevented them+ from building the webapp. Reopens: #786659+ * fsck: When checksumming a file fails due to a hardware fault,+ the file is now moved to the bad directory, and the fsck proceeds.+ Before, the fsck immediately failed.+ * Linux standalone: The webapp was not built in the previous release,+ this release fixes that oversight.++ -- Joey Hess <id@joeyh.name> Thu, 28 May 2015 10:48:03 -0400+ git-annex (5.20150522) unstable; urgency=medium * import: Refuse to import files that are within the work tree, as that@@ -28,6 +46,7 @@ * OSX: Corrected the location of trustedkeys.gpg, so the built-in upgrade code will find it. Fixes OSX upgrade going forward, but older versions won't upgrade themselves due to this problem.+ * Remove dependency on obsolete hamlet package. Closes: #786659 -- Joey Hess <id@joeyh.name> Fri, 22 May 2015 14:20:18 -0400
Command/AddUrl.hs view
@@ -115,7 +115,7 @@ downloadRemoteFile :: Remote -> Bool -> URLString -> FilePath -> Maybe Integer -> Annex (Maybe Key) downloadRemoteFile r relaxed uri file sz = do- urlkey <- Backend.URL.fromUrl uri sz+ let urlkey = Backend.URL.fromUrl uri sz liftIO $ createDirectoryIfMissing True (parentDir file) ifM (Annex.getState Annex.fast <||> pure relaxed) ( do@@ -206,7 +206,7 @@ #ifdef WITH_QUVI addUrlFileQuvi :: Bool -> URLString -> URLString -> FilePath -> Annex (Maybe Key) addUrlFileQuvi relaxed quviurl videourl file = do- key <- Backend.URL.fromUrl quviurl Nothing+ let key = Backend.URL.fromUrl quviurl Nothing ifM (pure relaxed <||> Annex.getState Annex.fast) ( do cleanup webUUID quviurl file key Nothing@@ -264,7 +264,7 @@ downloadWeb :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key) downloadWeb url urlinfo file = do- dummykey <- addSizeUrlKey urlinfo <$> Backend.URL.fromUrl url Nothing+ let dummykey = addSizeUrlKey urlinfo $ Backend.URL.fromUrl url Nothing let downloader f _ = do showOutput downloadUrl [url] f@@ -321,7 +321,7 @@ nodownload :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key) nodownload url urlinfo file | Url.urlExists urlinfo = do- key <- Backend.URL.fromUrl url (Url.urlSize urlinfo)+ let key = Backend.URL.fromUrl url (Url.urlSize urlinfo) cleanup webUUID url file key Nothing return (Just key) | otherwise = do
Command/FromKey.hs view
@@ -1,6 +1,6 @@ {- git-annex command -- - Copyright 2010 Joey Hess <id@joeyh.name>+ - Copyright 2010, 2015 Joey Hess <id@joeyh.name> - - Licensed under the GNU GPL version 3 or higher. -}@@ -15,7 +15,10 @@ import Annex.Content import Types.Key import qualified Annex+import qualified Backend.URL +import Network.URI+ cmd :: [Command] cmd = [notDirect $ notBareRepo $ command "fromkey" (paramPair paramKey paramPath) seek@@ -28,7 +31,7 @@ start :: Bool -> [String] -> CommandStart start force (keyname:file:[]) = do- let key = fromMaybe (error "bad key") $ file2key keyname+ let key = mkKey keyname unless force $ do inbackend <- inAnnex key unless inbackend $ error $@@ -45,11 +48,18 @@ where go status [] = next $ return status go status ((keyname,f):rest) | not (null keyname) && not (null f) = do- let key = fromMaybe (error $ "bad key " ++ keyname) $ file2key keyname+ let key = mkKey keyname ok <- perform' key f let !status' = status && ok go status' rest go _ _ = error "Expected pairs of key and file on stdin, but got something else."++mkKey :: String -> Key+mkKey s = case file2key s of+ Just k -> k+ Nothing -> case parseURI s of+ Just _u -> Backend.URL.fromUrl s Nothing+ Nothing -> error $ "bad key " ++ s perform :: Key -> FilePath -> CommandPerform perform key file = do
Command/ImportFeed.hs view
@@ -370,4 +370,4 @@ clearFeedProblem url = void $ liftIO . tryIO . removeFile =<< feedState url feedState :: URLString -> Annex FilePath-feedState url = fromRepo . gitAnnexFeedState =<< fromUrl url Nothing+feedState url = fromRepo $ gitAnnexFeedState $ fromUrl url Nothing
Command/RegisterUrl.hs view
@@ -11,9 +11,9 @@ import Common.Annex import Command-import Types.Key import Logs.Web import Annex.UUID+import Command.FromKey (mkKey) cmd :: [Command] cmd = [notDirect $ notBareRepo $@@ -25,7 +25,7 @@ start :: [String] -> CommandStart start (keyname:url:[]) = do- let key = fromMaybe (error "bad key") $ file2key keyname+ let key = mkKey keyname showStart "registerurl" url next $ perform key url start [] = do@@ -38,7 +38,7 @@ where go status [] = next $ return status go status ((keyname,u):rest) | not (null keyname) && not (null u) = do- let key = fromMaybe (error $ "bad key " ++ keyname) $ file2key keyname+ let key = mkKey keyname ok <- perform' key u let !status' = status && ok go status' rest
Remote/BitTorrent.hs view
@@ -155,7 +155,7 @@ {- A Key corresponding to the URL of a torrent file. -} torrentUrlKey :: URLString -> Annex Key-torrentUrlKey u = fromUrl (fst $ torrentUrlNum u) Nothing+torrentUrlKey u = return $ fromUrl (fst $ torrentUrlNum u) Nothing {- Temporary directory used to download a torrent. -} tmpTorrentDir :: URLString -> Annex FilePath
Utility/Exception.hs view
@@ -1,6 +1,6 @@ {- Simple IO exception handling (and some more) -- - Copyright 2011-2014 Joey Hess <id@joeyh.name>+ - Copyright 2011-2015 Joey Hess <id@joeyh.name> - - License: BSD-2-clause -}@@ -20,6 +20,7 @@ catchNonAsync, tryNonAsync, tryWhenExists,+ catchHardwareFault, ) where import Control.Monad.Catch as X hiding (Handler)@@ -27,7 +28,9 @@ import Control.Exception (IOException, AsyncException) import Control.Monad import Control.Monad.IO.Class (liftIO, MonadIO)-import System.IO.Error (isDoesNotExistError)+import System.IO.Error (isDoesNotExistError, ioeGetErrorType)+import GHC.IO.Exception (IOErrorType(..))+ import Utility.Data {- Catches IO errors and returns a Bool -}@@ -87,3 +90,12 @@ tryWhenExists a = do v <- tryJust (guard . isDoesNotExistError) a return (eitherToMaybe v)++{- Catches only exceptions caused by hardware faults.+ - Ie, disk IO error. -}+catchHardwareFault :: MonadCatch m => m a -> (IOException -> m a) -> m a+catchHardwareFault a onhardwareerr = catchIO a onlyhw+ where+ onlyhw e+ | ioeGetErrorType e == HardwareFault = onhardwareerr e+ | otherwise = throwM e
Utility/ExternalSHA.hs view
@@ -21,21 +21,19 @@ import Data.List import Data.Char import System.IO-import Control.Applicative-import Prelude externalSHA :: String -> Int -> FilePath -> IO (Either String String) externalSHA command shasize file = do- ls <- lines <$> catchDefaultIO "" (readsha (toCommand [File file]))- return $ sanitycheck =<< parse ls+ v <- tryNonAsync $ readsha $ toCommand [File file]+ return $ case v of+ Right s -> sanitycheck =<< parse (lines s)+ Left _ -> Left (command ++ " failed") where- {- sha commands output the filename, so need to set fileEncoding -}- readsha args =- withHandle StdoutHandle (createProcessChecked checkSuccessProcess) p $ \h -> do- fileEncoding h- output <- hGetContentsStrict h- hClose h- return output+ readsha args = withHandle StdoutHandle createProcessSuccess p $ \h -> do+ fileEncoding h+ output <- hGetContentsStrict h+ hClose h+ return output where p = (proc command args) { std_out = CreatePipe }
Utility/SafeCommand.hs view
@@ -17,16 +17,15 @@ import Control.Applicative import Prelude -{- A type for parameters passed to a shell command. A command can- - be passed either some Params (multiple parameters can be included,- - whitespace-separated, or a single Param (for when parameters contain- - whitespace), or a File.- -}-data CommandParam = Params String | Param String | File FilePath+-- | Parameters that can be passed to a shell command.+data CommandParam+ = Params String -- ^ Contains multiple parameters, separated by whitespace+ | Param String -- ^ A single parameter+ | File FilePath -- ^ The name of a file deriving (Eq, Show, Ord) -{- Used to pass a list of CommandParams to a function that runs- - a command and expects Strings. -}+-- | Used to pass a list of CommandParams to a function that runs+-- a command and expects Strings. -} toCommand :: [CommandParam] -> [String] toCommand = concatMap unwrap where@@ -43,9 +42,10 @@ -- path separator on Windows. pathseps = pathSeparator:"./" -{- Run a system command, and returns True or False- - if it succeeded or failed.- -}+-- | Run a system command, and returns True or False if it succeeded or failed.+--+-- This and other command running functions in this module log the commands+-- run at debug level, using System.Log.Logger. boolSystem :: FilePath -> [CommandParam] -> IO Bool boolSystem command params = boolSystem' command params id @@ -59,7 +59,7 @@ boolSystemEnv command params environ = boolSystem' command params $ \p -> p { env = environ } -{- Runs a system command, returning the exit status. -}+-- | Runs a system command, returning the exit status. safeSystem :: FilePath -> [CommandParam] -> IO ExitCode safeSystem command params = safeSystem' command params id @@ -74,23 +74,22 @@ safeSystemEnv command params environ = safeSystem' command params $ \p -> p { env = environ } -{- Wraps a shell command line inside sh -c, allowing it to be run in a- - login shell that may not support POSIX shell, eg csh. -}+-- | Wraps a shell command line inside sh -c, allowing it to be run in a+-- login shell that may not support POSIX shell, eg csh. shellWrap :: String -> String shellWrap cmdline = "sh -c " ++ shellEscape cmdline -{- Escapes a filename or other parameter to be safely able to be exposed to- - the shell.- -- - This method works for POSIX shells, as well as other shells like csh.- -}+-- | Escapes a filename or other parameter to be safely able to be exposed to+-- the shell.+--+-- This method works for POSIX shells, as well as other shells like csh. shellEscape :: String -> String shellEscape f = "'" ++ escaped ++ "'" where -- replace ' with '"'"' escaped = join "'\"'\"'" $ split "'" f -{- Unescapes a set of shellEscaped words or filenames. -}+-- | Unescapes a set of shellEscaped words or filenames. shellUnEscape :: String -> [String] shellUnEscape [] = [] shellUnEscape s = word : shellUnEscape rest@@ -107,19 +106,19 @@ | c == q = findword w cs | otherwise = inquote q (w++[c]) cs -{- For quickcheck. -}+-- | For quickcheck. prop_idempotent_shellEscape :: String -> Bool prop_idempotent_shellEscape s = [s] == (shellUnEscape . shellEscape) s prop_idempotent_shellEscape_multiword :: [String] -> Bool prop_idempotent_shellEscape_multiword s = s == (shellUnEscape . unwords . map shellEscape) s -{- Segments a list of filenames into groups that are all below the maximum- - command-line length limit. -}+-- | Segments a list of filenames into groups that are all below the maximum+-- command-line length limit. segmentXargsOrdered :: [FilePath] -> [[FilePath]] segmentXargsOrdered = reverse . map reverse . segmentXargsUnordered -{- Not preserving data is a little faster, and streams better when- - there are a great many filesnames. -}+-- | Not preserving order is a little faster, and streams better when+-- there are a great many filenames. segmentXargsUnordered :: [FilePath] -> [[FilePath]] segmentXargsUnordered l = go l [] 0 [] where
+ cabal.config view
@@ -0,0 +1,1069 @@+-- Stackage snapshot from: http://www.stackage.org/snapshot/lts-2.10+-- Please place this file next to your .cabal file as cabal.config+-- To only use tested packages, uncomment the following line:+-- remote-repo: stackage-lts-2.10:http://www.stackage.org/snapshot/lts-2.10+constraints: abstract-deque ==0.3,+ abstract-par ==0.3.3,+ accelerate ==0.15.1.0,+ ace ==0.6,+ action-permutations ==0.0.0.1,+ active ==0.1.0.19,+ AC-Vector ==2.3.2,+ ad ==4.2.2,+ adjunctions ==4.2.1,+ aeson ==0.8.0.2,+ aeson-pretty ==0.7.2,+ aeson-qq ==0.7.4,+ aeson-utils ==0.3.0.1,+ alarmclock ==0.2.0.6,+ alex ==3.1.4,+ amazonka ==0.3.4,+ amazonka-autoscaling ==0.3.4,+ amazonka-cloudformation ==0.3.4,+ amazonka-cloudfront ==0.3.4,+ amazonka-cloudhsm ==0.3.4,+ amazonka-cloudsearch ==0.3.4,+ amazonka-cloudsearch-domains ==0.3.4,+ amazonka-cloudtrail ==0.3.4,+ amazonka-cloudwatch ==0.3.4,+ amazonka-cloudwatch-logs ==0.3.4,+ amazonka-codedeploy ==0.3.4,+ amazonka-cognito-identity ==0.3.4,+ amazonka-cognito-sync ==0.3.4,+ amazonka-config ==0.3.4,+ amazonka-core ==0.3.4,+ amazonka-datapipeline ==0.3.4,+ amazonka-directconnect ==0.3.4,+ amazonka-dynamodb ==0.3.4,+ amazonka-ec2 ==0.3.4,+ amazonka-ecs ==0.3.4,+ amazonka-elasticache ==0.3.4,+ amazonka-elasticbeanstalk ==0.3.4,+ amazonka-elastictranscoder ==0.3.4,+ amazonka-elb ==0.3.4,+ amazonka-emr ==0.3.4,+ amazonka-glacier ==0.3.4,+ amazonka-iam ==0.3.4,+ amazonka-importexport ==0.3.4,+ amazonka-kinesis ==0.3.4,+ amazonka-kms ==0.3.4,+ amazonka-lambda ==0.3.4,+ amazonka-opsworks ==0.3.4,+ amazonka-rds ==0.3.4,+ amazonka-redshift ==0.3.4,+ amazonka-route53 ==0.3.4,+ amazonka-route53-domains ==0.3.4,+ amazonka-s3 ==0.3.4,+ amazonka-sdb ==0.3.4,+ amazonka-ses ==0.3.4,+ amazonka-sns ==0.3.4,+ amazonka-sqs ==0.3.4,+ amazonka-ssm ==0.3.4,+ amazonka-storagegateway ==0.3.4,+ amazonka-sts ==0.3.4,+ amazonka-support ==0.3.4,+ amazonka-swf ==0.3.4,+ amqp ==0.12.2,+ ansi-terminal ==0.6.2.1,+ ansi-wl-pprint ==0.6.7.2,+ appar ==0.1.4,+ applicative-quoters ==0.1.0.8,+ approximate ==0.2.1.1,+ arbtt ==0.9.0.2,+ arithmoi ==0.4.1.2,+ array installed,+ arrow-list ==0.7,+ asn1-data ==0.7.1,+ asn1-encoding ==0.9.0,+ asn1-parse ==0.9.1,+ asn1-types ==0.3.0,+ async ==2.0.2,+ atto-lisp ==0.2.2,+ attoparsec ==0.12.1.6,+ attoparsec-enumerator ==0.3.4,+ attoparsec-expr ==0.1.1.2,+ authenticate ==1.3.2.11,+ authenticate-oauth ==1.5.1.1,+ auto-update ==0.1.2.1,+ aws ==0.11.4,+ bake ==0.2,+ bank-holidays-england ==0.1.0.3,+ base installed,+ base16-bytestring ==0.1.1.6,+ base64-bytestring ==1.0.0.1,+ base64-string ==0.2,+ base-compat ==0.6.0,+ base-prelude ==0.1.19,+ base-unicode-symbols ==0.2.2.4,+ basic-prelude ==0.3.13,+ bcrypt ==0.0.6,+ bifunctors ==4.2.1,+ binary installed,+ binary-conduit ==1.2.3,+ binary-list ==1.1.1.0,+ bindings-DSL ==1.0.22,+ bin-package-db installed,+ bioace ==0.0.1,+ bioalign ==0.0.5,+ biocore ==0.3.1,+ biofasta ==0.0.3,+ biofastq ==0.1,+ biophd ==0.0.7,+ biopsl ==0.4,+ biosff ==0.3.7.1,+ bits ==0.4,+ blank-canvas ==0.5,+ BlastHTTP ==1.0.1,+ blastxml ==0.3.2,+ blaze-builder ==0.4.0.1,+ blaze-builder-enumerator ==0.2.1.0,+ blaze-html ==0.8.0.2,+ blaze-markup ==0.7.0.2,+ blaze-svg ==0.3.4.1,+ blaze-textual ==0.2.0.9,+ bloodhound ==0.5.0.1,+ bmp ==1.2.5.2,+ Boolean ==0.2.3,+ boolsimplifier ==0.1.8,+ bound ==1.0.5,+ BoundedChan ==1.0.3.0,+ broadcast-chan ==0.1.0,+ bson ==0.3.1,+ bumper ==0.6.0.3,+ byteable ==0.1.1,+ bytedump ==1.0,+ byteorder ==1.0.4,+ bytes ==0.15,+ bytestring installed,+ bytestring-builder ==0.10.6.0.0,+ bytestring-conversion ==0.3.0,+ bytestring-lexing ==0.4.3.2,+ bytestring-mmap ==0.2.2,+ bytestring-progress ==1.0.5,+ bytestring-trie ==0.2.4.1,+ bzlib ==0.5.0.5,+ bzlib-conduit ==0.2.1.3,+ c2hs ==0.25.2,+ Cabal installed,+ cabal-file-th ==0.2.3,+ Cabal-ide-backend ==1.23.0.0,+ cabal-install ==1.18.1.0,+ cabal-rpm ==0.9.6,+ cabal-src ==0.2.5.1,+ cabal-test-quickcheck ==0.1.4,+ cairo ==0.13.1.0,+ cartel ==0.14.2.6,+ case-insensitive ==1.2.0.4,+ cases ==0.1.2.1,+ cassava ==0.4.2.4,+ cereal ==0.4.1.1,+ cereal-conduit ==0.7.2.3,+ certificate ==1.3.9,+ charset ==0.3.7.1,+ Chart ==1.3.3,+ Chart-diagrams ==1.3.3,+ ChasingBottoms ==1.3.0.12,+ check-email ==1.0,+ checkers ==0.4.3,+ chell ==0.4.0.1,+ chell-quickcheck ==0.2.5,+ chunked-data ==0.1.0.1,+ cipher-aes ==0.2.10,+ cipher-aes128 ==0.6.4,+ cipher-blowfish ==0.0.3,+ cipher-camellia ==0.0.2,+ cipher-des ==0.0.6,+ cipher-rc4 ==0.1.4,+ circle-packing ==0.1.0.4,+ classy-prelude ==0.11.1.1,+ classy-prelude-conduit ==0.11.1,+ classy-prelude-yesod ==0.11.1,+ clay ==0.10.1,+ clientsession ==0.9.1.1,+ clock ==0.4.6.0,+ cmdargs ==0.10.13,+ code-builder ==0.1.3,+ colour ==2.3.3,+ comonad ==4.2.6,+ comonads-fd ==4.0,+ comonad-transformers ==4.0,+ compdata ==0.9,+ compensated ==0.6.1,+ composition ==1.0.1.1,+ compressed ==3.10,+ concatenative ==1.0.1,+ concurrent-extra ==0.7.0.9,+ concurrent-supply ==0.1.7.1,+ cond ==0.4.1.1,+ conduit ==1.2.4.2,+ conduit-combinators ==0.3.1,+ conduit-extra ==1.1.8,+ configurator ==0.3.0.0,+ connection ==0.2.4,+ constraints ==0.4.1.3,+ consul-haskell ==0.1,+ containers installed,+ containers-unicode-symbols ==0.3.1.1,+ contravariant ==1.3.1.1,+ control-monad-free ==0.6.1,+ control-monad-loop ==0.1,+ convertible ==1.1.1.0,+ cookie ==0.4.1.5,+ courier ==0.1.0.15,+ cpphs ==1.19,+ cprng-aes ==0.6.1,+ cpu ==0.1.2,+ criterion ==1.1.0.0,+ crypto-api ==0.13.2,+ crypto-api-tests ==0.3,+ cryptocipher ==0.6.2,+ crypto-cipher-tests ==0.0.11,+ crypto-cipher-types ==0.0.9,+ cryptohash ==0.11.6,+ cryptohash-conduit ==0.1.1,+ cryptohash-cryptoapi ==0.1.3,+ cryptol ==2.2.2,+ crypto-numbers ==0.2.7,+ crypto-pubkey ==0.2.8,+ crypto-pubkey-types ==0.4.3,+ crypto-random ==0.0.9,+ crypto-random-api ==0.2.0,+ css-text ==0.1.2.1,+ csv ==0.1.2,+ csv-conduit ==0.6.6,+ cubicspline ==0.1.1,+ curl ==1.3.8,+ data-accessor ==0.2.2.6,+ data-accessor-mtl ==0.2.0.4,+ data-binary-ieee754 ==0.4.4,+ data-default ==0.5.3,+ data-default-class ==0.0.1,+ data-default-instances-base ==0.0.1,+ data-default-instances-containers ==0.0.1,+ data-default-instances-dlist ==0.0.1,+ data-default-instances-old-locale ==0.0.1,+ data-inttrie ==0.1.0,+ data-lens-light ==0.1.2.1,+ data-memocombinators ==0.5.1,+ data-reify ==0.6.1,+ DAV ==1.0.5,+ Decimal ==0.4.2,+ deepseq installed,+ deepseq-generics ==0.1.1.2,+ derive ==2.5.22,+ descriptive ==0.9.3,+ diagrams ==1.2,+ diagrams-cairo ==1.2.0.7,+ diagrams-canvas ==0.3.0.4,+ diagrams-contrib ==1.1.2.6,+ diagrams-core ==1.2.0.6,+ diagrams-lib ==1.2.0.9,+ diagrams-postscript ==1.1.0.5,+ diagrams-rasterific ==0.1.0.8,+ diagrams-svg ==1.1.0.5,+ Diff ==0.3.2,+ digest ==0.0.1.2,+ digestive-functors ==0.7.1.5,+ dimensional ==0.13.0.2,+ directory installed,+ directory-tree ==0.12.0,+ direct-sqlite ==2.3.15,+ distributed-process ==0.5.3,+ distributed-process-async ==0.2.1,+ distributed-process-client-server ==0.1.2,+ distributed-process-execution ==0.1.1,+ distributed-process-extras ==0.2.0,+ distributed-process-simplelocalnet ==0.2.2.0,+ distributed-process-supervisor ==0.1.2,+ distributed-process-task ==0.1.1,+ distributed-static ==0.3.1.0,+ distributive ==0.4.4,+ djinn-ghc ==0.0.2.3,+ djinn-lib ==0.0.1.2,+ dlist ==0.7.1.1,+ dlist-instances ==0.1,+ doctest ==0.9.13,+ double-conversion ==2.0.1.0,+ DRBG ==0.5.4,+ dual-tree ==0.2.0.6,+ easy-file ==0.2.1,+ ede ==0.2.8.2,+ edit-distance ==0.2.1.3,+ effect-handlers ==0.1.0.6,+ either ==4.3.4,+ elm-core-sources ==1.0.0,+ email-validate ==2.0.1,+ enclosed-exceptions ==1.0.1.1,+ entropy ==0.3.6,+ enumerator ==0.4.20,+ eq ==4.0.4,+ erf ==2.0.0.0,+ errorcall-eq-instance ==0.2.0.1,+ errors ==1.4.7,+ ersatz ==0.3,+ esqueleto ==2.1.3,+ exception-mtl ==0.3.0.5,+ exceptions ==0.8.0.2,+ exception-transformers ==0.3.0.4,+ executable-hash ==0.2.0.0,+ executable-path ==0.0.3,+ extensible-exceptions ==0.1.1.4,+ extra ==1.1,+ fast-logger ==2.3.1,+ fay ==0.23.1.4,+ fay-base ==0.20.0.0,+ fay-builder ==0.2.0.5,+ fay-dom ==0.5.0.1,+ fay-jquery ==0.6.0.3,+ fay-text ==0.3.2.2,+ fay-uri ==0.2.0.0,+ fb ==1.0.10,+ fb-persistent ==0.3.4,+ fclabels ==2.0.2.2,+ FenwickTree ==0.1.2.1,+ fgl ==5.5.1.0,+ file-embed ==0.0.8.2,+ file-location ==0.4.7.1,+ filemanip ==0.3.6.3,+ filepath installed,+ fingertree ==0.1.0.2,+ fixed ==0.2.1.1,+ fixed-list ==0.1.6,+ fixed-vector ==0.7.0.3,+ flexible-defaults ==0.0.1.1,+ flock ==0.3.1.8,+ fmlist ==0.9,+ focus ==0.1.4,+ foldl ==1.0.10,+ FontyFruity ==0.5.1.1,+ force-layout ==0.3.0.11,+ foreign-store ==0.2,+ formatting ==6.2.0,+ free ==4.11,+ freenect ==1.2,+ frisby ==0.2,+ fsnotify ==0.1.0.3,+ fuzzcheck ==0.1.1,+ gd ==3000.7.3,+ generic-aeson ==0.2.0.5,+ generic-deriving ==1.6.3,+ GenericPretty ==1.2.1,+ generics-sop ==0.1.1.2,+ generic-xmlpickler ==0.1.0.2,+ ghc installed,+ ghc-heap-view ==0.5.3,+ ghcid ==0.3.6,+ ghc-mod ==5.2.1.2,+ ghc-mtl ==1.2.1.0,+ ghc-paths ==0.1.0.9,+ ghc-prim installed,+ ghc-syb-utils ==0.2.3,+ gio ==0.13.1.0,+ gipeda ==0.1.0.2,+ git-embed ==0.1.0,+ gitlib ==3.1.0.1,+ gitlib-libgit2 ==3.1.0.4,+ gitlib-test ==3.1.0.2,+ gitrev ==1.0.0,+ gitson ==0.5.1,+ gl ==0.7.7,+ glib ==0.13.1.0,+ Glob ==0.7.5,+ GLURaw ==1.5.0.1,+ GLUT ==2.7.0.1,+ graph-core ==0.2.2.0,+ graphs ==0.6.0.1,+ GraphSCC ==1.0.4,+ graphviz ==2999.17.0.2,+ gravatar ==0.8.0,+ groundhog ==0.7.0.3,+ groundhog-mysql ==0.7.0.1,+ groundhog-postgresql ==0.7.0.2,+ groundhog-sqlite ==0.7.0.1,+ groundhog-th ==0.7.0.1,+ groupoids ==4.0,+ groups ==0.4.0.0,+ gtk ==0.13.6,+ gtk2hs-buildtools ==0.13.0.3,+ gtk3 ==0.13.6,+ hackage-mirror ==0.1.0.0,+ haddock-api ==2.15.0.2,+ haddock-library ==1.1.1,+ hakyll ==4.6.9.0,+ half ==0.2.0.1,+ HandsomeSoup ==0.3.5,+ happstack-server ==7.4.2,+ happy ==1.19.5,+ hashable ==1.2.3.2,+ hashable-extras ==0.2.1,+ hashmap ==1.3.0.1,+ hashtables ==1.2.0.2,+ haskeline installed,+ haskell2010 installed,+ haskell98 installed,+ haskell-lexer ==1.0,+ haskell-names ==0.5.2,+ HaskellNet ==0.4.4,+ haskell-packages ==0.2.4.4,+ haskell-src ==1.0.2.0,+ haskell-src-exts ==1.16.0.1,+ haskell-src-meta ==0.6.0.9,+ haskintex ==0.5.0.3,+ hasql ==0.7.3.1,+ hasql-backend ==0.4.1,+ hasql-postgres ==0.10.3.1,+ hastache ==0.6.1,+ HaTeX ==3.16.1.1,+ HaXml ==1.25.3,+ haxr ==3000.10.4.2,+ HCodecs ==0.5,+ hdaemonize ==0.5.0.0,+ hdevtools ==0.1.0.8,+ hdocs ==0.4.1.3,+ heap ==1.0.2,+ heaps ==0.3.2.1,+ hebrew-time ==0.1.1,+ heist ==0.14.1,+ here ==1.2.7,+ heredoc ==0.2.0.0,+ hexpat ==0.20.9,+ hflags ==0.4,+ highlighting-kate ==0.5.12,+ hindent ==4.4.2,+ hinotify ==0.3.7,+ hint ==0.4.2.3,+ histogram-fill ==0.8.4.1,+ hit ==0.6.3,+ hjsmin ==0.1.4.7,+ hledger ==0.24.1,+ hledger-lib ==0.24.1,+ hledger-web ==0.24.1,+ hlibgit2 ==0.18.0.14,+ hlint ==1.9.20,+ hmatrix ==0.16.1.5,+ hmatrix-gsl ==0.16.0.3,+ hmatrix-gsl-stats ==0.2.1,+ hmatrix-repa ==0.1.2.1,+ hoauth2 ==0.4.7,+ holy-project ==0.1.1.1,+ hoogle ==4.2.41,+ hoopl installed,+ hOpenPGP ==2.0,+ hopenpgp-tools ==0.14.1,+ hostname ==1.0,+ hostname-validate ==1.0.0,+ hourglass ==0.2.9,+ hpc installed,+ hpc-coveralls ==0.9.0,+ hPDB ==1.2.0.3,+ hPDB-examples ==1.2.0.2,+ hs-bibutils ==5.5,+ hscolour ==1.22,+ hsdev ==0.1.3.4,+ hse-cpp ==0.1,+ hsignal ==0.2.7,+ hslogger ==1.2.9,+ hslua ==0.3.13,+ HsOpenSSL ==0.11.1.1,+ hspec ==2.1.7,+ hspec-attoparsec ==0.1.0.2,+ hspec-core ==2.1.7,+ hspec-discover ==2.1.7,+ hspec-expectations ==0.6.1.1,+ hspec-meta ==2.1.7,+ hspec-smallcheck ==0.3.0,+ hspec-wai ==0.6.3,+ hspec-wai-json ==0.6.0,+ hstatistics ==0.2.5.2,+ HStringTemplate ==0.8.3,+ hsyslog ==2.0,+ HTF ==0.12.2.4,+ html ==1.0.1.2,+ html-conduit ==1.1.1.2,+ HTTP ==4000.2.19,+ http-client ==0.4.11.2,+ http-client-openssl ==0.2.0.1,+ http-client-tls ==0.2.2,+ http-conduit ==2.1.5,+ http-date ==0.0.6.1,+ http-media ==0.6.2,+ http-reverse-proxy ==0.4.2,+ http-types ==0.8.6,+ HUnit ==1.2.5.2,+ hweblib ==0.6.3,+ hxt ==9.3.1.15,+ hxt-charproperties ==9.2.0.1,+ hxt-curl ==9.1.1.1,+ hxt-expat ==9.1.1,+ hxt-http ==9.1.5.2,+ hxt-pickle-utils ==0.1.0.3,+ hxt-regex-xmlschema ==9.2.0.2,+ hxt-relaxng ==9.1.5.5,+ hxt-tagsoup ==9.1.3,+ hxt-unicode ==9.0.2.4,+ hybrid-vectors ==0.1.2.1,+ hyphenation ==0.4.2.1,+ iconv ==0.4.1.2,+ ide-backend ==0.9.0.9,+ ide-backend-common ==0.9.1.1,+ ide-backend-rts ==0.1.3.1,+ idna ==0.3.0,+ ieee754 ==0.7.6,+ IfElse ==0.85,+ imagesize-conduit ==1.1,+ immortal ==0.2,+ include-file ==0.1.0.2,+ incremental-parser ==0.2.3.4,+ indents ==0.3.3,+ ini ==0.3.1,+ integer-gmp installed,+ integration ==0.2.1,+ interpolate ==0.1.0,+ interpolatedstring-perl6 ==0.9.0,+ intervals ==0.7.1,+ io-choice ==0.0.5,+ io-manager ==0.1.0.2,+ io-memoize ==1.1.1.0,+ iproute ==1.3.2,+ iterable ==3.0,+ ixset ==1.0.6,+ jmacro ==0.6.12,+ jmacro-rpc ==0.3.2,+ jmacro-rpc-happstack ==0.3.2,+ jmacro-rpc-snap ==0.3,+ jose-jwt ==0.4.2,+ js-flot ==0.8.3,+ js-jquery ==1.11.3,+ json ==0.9.1,+ json-autotype ==0.2.5.13,+ json-schema ==0.7.3.5,+ JuicyPixels ==3.2.4,+ JuicyPixels-repa ==0.7,+ kan-extensions ==4.2.2,+ kansas-comet ==0.3.1,+ kdt ==0.2.3,+ keter ==1.3.10.1,+ keys ==3.10.2,+ kmeans ==0.1.3,+ koofr-client ==1.0.0.3,+ kure ==2.16.10,+ language-c ==0.4.7,+ language-c-quote ==0.10.2.1,+ language-ecmascript ==0.17,+ language-glsl ==0.1.1,+ language-haskell-extract ==0.2.4,+ language-java ==0.2.7,+ language-javascript ==0.5.13.3,+ lattices ==1.2.1.1,+ lazy-csv ==0.5,+ lca ==0.3,+ lens ==4.7.0.1,+ lens-action ==0.1.0.1,+ lens-aeson ==1.0.0.4,+ lens-family-core ==1.2.0,+ lens-family-th ==0.4.1.0,+ lhs2tex ==1.19,+ libgit ==0.3.1,+ libnotify ==0.1.1.0,+ lifted-async ==0.7.0.1,+ lifted-base ==0.2.3.6,+ linear ==1.18.1.1,+ linear-accelerate ==0.2,+ List ==0.5.2,+ ListLike ==4.2.0,+ list-t ==0.4.5.1,+ loch-th ==0.2.1,+ log-domain ==0.10.0.1,+ logict ==0.6.0.2,+ loop ==0.2.0,+ lrucache ==1.2.0.0,+ lucid ==2.9.2,+ lucid-svg ==0.4.0.4,+ lzma-conduit ==1.1.3,+ machines ==0.4.1,+ machines-directory ==0.2.0.6,+ machines-io ==0.2.0.6,+ machines-process ==0.2.0.4,+ mainland-pretty ==0.2.7.2,+ managed ==1.0.0,+ mandrill ==0.2.2.0,+ map-syntax ==0.2,+ markdown ==0.1.13.2,+ markdown-unlit ==0.2.0.1,+ math-functions ==0.1.5.2,+ matrix ==0.3.4.3,+ maximal-cliques ==0.1.1,+ MaybeT ==0.1.2,+ mbox ==0.3.1,+ MemoTrie ==0.6.2,+ mersenne-random-pure64 ==0.2.0.4,+ messagepack ==0.3.0,+ messagepack-rpc ==0.1.0.3,+ MFlow ==0.4.5.9,+ mime-mail ==0.4.8.2,+ mime-mail-ses ==0.3.2.2,+ mime-types ==0.1.0.6,+ missing-foreign ==0.1.1,+ MissingH ==1.3.0.1,+ mmap ==0.5.9,+ mmorph ==1.0.4,+ MonadCatchIO-transformers ==0.3.1.3,+ monad-control ==1.0.0.4,+ monad-coroutine ==0.9.0.1,+ monadcryptorandom ==0.6.1,+ monadic-arrays ==0.2.1.4,+ monad-journal ==0.7,+ monadLib ==3.7.3,+ monadloc ==0.7.1,+ monad-logger ==0.3.13.1,+ monad-logger-json ==0.1.0.0,+ monad-logger-syslog ==0.1.1.1,+ monad-loops ==0.4.2.1,+ monad-par ==0.3.4.7,+ monad-parallel ==0.7.1.4,+ monad-par-extras ==0.3.3,+ monad-primitive ==0.1,+ monad-products ==4.0.0.1,+ MonadPrompt ==1.0.0.5,+ MonadRandom ==0.3.0.2,+ monad-st ==0.2.4,+ monads-tf ==0.1.0.2,+ mongoDB ==2.0.5,+ monoid-extras ==0.3.3.5,+ monoid-subclasses ==0.4.0.4,+ mono-traversable ==0.9.1,+ mtl ==2.1.3.1,+ mtl-compat ==0.2.1.1,+ mtlparse ==0.1.4.0,+ mtl-prelude ==1.0.3,+ multiarg ==0.30.0.8,+ multimap ==1.2.1,+ multipart ==0.1.2,+ MusicBrainz ==0.2.4,+ mutable-containers ==0.3.0,+ mwc-random ==0.13.3.2,+ mysql ==0.1.1.8,+ mysql-simple ==0.2.2.5,+ nanospec ==0.2.1,+ nats ==1,+ neat-interpolation ==0.2.2.1,+ nettle ==0.1.0,+ network ==2.6.1.0,+ network-anonymous-i2p ==0.10.0,+ network-attoparsec ==0.12.2,+ network-conduit ==1.1.0,+ network-conduit-tls ==1.1.2,+ network-info ==0.2.0.5,+ network-multicast ==0.0.11,+ network-simple ==0.4.0.4,+ network-transport ==0.4.1.0,+ network-transport-tcp ==0.4.1,+ network-transport-tests ==0.2.2.0,+ network-uri ==2.6.0.3,+ newtype ==0.2,+ nsis ==0.2.5,+ numbers ==3000.2.0.1,+ numeric-extras ==0.0.3,+ NumInstances ==1.4,+ numtype ==1.1,+ ObjectName ==1.1.0.0,+ Octree ==0.5.4.2,+ old-locale installed,+ old-time installed,+ OneTuple ==0.2.1,+ opaleye ==0.3.1.2,+ OpenGL ==2.12.0.1,+ OpenGLRaw ==2.4.1.0,+ openpgp-asciiarmor ==0.1,+ operational ==0.2.3.2,+ options ==1.2.1.1,+ optparse-applicative ==0.11.0.2,+ optparse-simple ==0.0.2,+ osdkeys ==0.0,+ pagerduty ==0.0.3.1,+ palette ==0.1.0.2,+ pandoc ==1.13.2.1,+ pandoc-citeproc ==0.6.0.1,+ pandoc-types ==1.12.4.2,+ pango ==0.13.1.0,+ parallel ==3.2.0.6,+ parallel-io ==0.3.3,+ parseargs ==0.1.5.2,+ parsec ==3.1.9,+ parsers ==0.12.2.1,+ partial-handler ==0.1.1,+ path-pieces ==0.2.0,+ patience ==0.1.1,+ pcre-heavy ==0.2.2,+ pcre-light ==0.4.0.3,+ pdfinfo ==1.5.4,+ pem ==0.2.2,+ persistent ==2.1.5,+ persistent-mongoDB ==2.1.2.2,+ persistent-mysql ==2.1.3.1,+ persistent-postgresql ==2.1.5.3,+ persistent-sqlite ==2.1.4.2,+ persistent-template ==2.1.3.1,+ phantom-state ==0.2.0.2,+ picoparsec ==0.1.2.2,+ pipes ==4.1.5,+ pipes-aeson ==0.4.1.3,+ pipes-attoparsec ==0.5.1.2,+ pipes-binary ==0.4.0.4,+ pipes-bytestring ==2.1.1,+ pipes-concurrency ==2.0.3,+ pipes-group ==1.0.2,+ pipes-network ==0.6.4,+ pipes-parse ==3.0.2,+ pipes-safe ==2.2.2,+ placeholders ==0.1,+ plot ==0.2.3.4,+ plot-gtk ==0.2.0.2,+ plot-gtk3 ==0.1,+ pointed ==4.2.0.2,+ polyparse ==1.11,+ postgresql-binary ==0.5.2.1,+ postgresql-libpq ==0.9.0.2,+ postgresql-simple ==0.4.10.0,+ post-mess-age ==0.1.0.0,+ prednote ==0.32.0.6,+ prefix-units ==0.1.0.2,+ prelude-extras ==0.4,+ presburger ==1.3.1,+ present ==2.2,+ pretty installed,+ prettyclass ==1.0.0.0,+ pretty-class ==1.0.1.1,+ pretty-show ==1.6.8.2,+ primes ==0.2.1.0,+ primitive ==0.6,+ process installed,+ process-extras ==0.3.3.4,+ product-profunctors ==0.6.1,+ profunctor-extras ==4.0,+ profunctors ==4.4.1,+ project-template ==0.1.4.2,+ PSQueue ==1.1,+ publicsuffixlist ==0.1,+ punycode ==2.0,+ pure-io ==0.2.1,+ pureMD5 ==2.1.2.1,+ pwstore-fast ==2.4.4,+ quandl-api ==0.2.1.0,+ QuasiText ==0.1.2.5,+ QuickCheck ==2.7.6,+ quickcheck-assertions ==0.2.0,+ quickcheck-instances ==0.3.11,+ quickcheck-io ==0.1.1,+ quickcheck-unicode ==1.0.0.1,+ rainbow ==0.22.0.2,+ random ==1.1,+ random-fu ==0.2.6.2,+ random-shuffle ==0.0.4,+ random-source ==0.3.0.6,+ rank1dynamic ==0.2.0.1,+ Rasterific ==0.5.2.1,+ rasterific-svg ==0.1.0.3,+ raw-strings-qq ==1.0.2,+ ReadArgs ==1.2.2,+ reducers ==3.10.3.1,+ reflection ==1.5.2.1,+ RefSerialize ==0.3.1.4,+ regex-applicative ==0.3.1,+ regex-base ==0.93.2,+ regex-compat ==0.95.1,+ regex-pcre-builtin ==0.94.4.8.8.35,+ regex-posix ==0.95.2,+ regexpr ==0.5.4,+ regex-tdfa ==1.2.0,+ regex-tdfa-rc ==1.1.8.3,+ regular ==0.3.4.4,+ regular-xmlpickler ==0.2,+ rematch ==0.2.0.0,+ repa ==3.3.1.2,+ repa-algorithms ==3.3.1.2,+ repa-devil ==0.3.2.6,+ repa-io ==3.3.1.2,+ reroute ==0.2.3.0,+ resource-pool ==0.2.3.2,+ resourcet ==1.1.5,+ rest-client ==0.5.0.3,+ rest-core ==0.35.1,+ rest-gen ==0.17.0.4,+ rest-happstack ==0.2.10.8,+ rest-snap ==0.1.17.18,+ rest-stringmap ==0.2.0.4,+ rest-types ==1.13.1,+ rest-wai ==0.1.0.8,+ rethinkdb-client-driver ==0.0.18,+ retry ==0.6,+ rev-state ==0.1,+ rfc5051 ==0.1.0.3,+ RSA ==2.1.0.1,+ rts installed,+ runmemo ==1.0.0.1,+ rvar ==0.2.0.2,+ safe ==0.3.9,+ safecopy ==0.8.5,+ sbv ==4.2,+ scientific ==0.3.3.8,+ scotty ==0.9.1,+ scrobble ==0.2.1.1,+ sdl2 ==1.3.1,+ securemem ==0.1.7,+ semigroupoid-extras ==4.0,+ semigroupoids ==4.3,+ semigroups ==0.16.2.2,+ semver ==0.3.3.1,+ sendfile ==0.7.9,+ seqloc ==0.6.1.1,+ servant ==0.2.2,+ servant-client ==0.2.2,+ servant-docs ==0.3.1,+ servant-jquery ==0.2.2.1,+ servant-server ==0.2.4,+ setenv ==0.1.1.3,+ set-monad ==0.2.0.0,+ SHA ==1.6.4.2,+ shake ==0.15.2,+ shake-language-c ==0.6.4,+ shakespeare ==2.0.5,+ shakespeare-text ==1.1.0,+ shell-conduit ==4.5.2,+ shelltestrunner ==1.3.5,+ shelly ==1.6.1.2,+ silently ==1.2.4.1,+ simple-reflect ==0.3.2,+ simple-sendfile ==0.2.20,+ singletons ==1.1.2,+ siphash ==1.0.3,+ skein ==1.0.9.3,+ slave-thread ==0.1.6,+ smallcheck ==1.1.1,+ smoothie ==0.1.3,+ smtLib ==1.0.7,+ snap ==0.14.0.4,+ snap-core ==0.9.7.0,+ snaplet-fay ==0.3.3.11,+ snap-server ==0.9.5.1,+ snowflake ==0.1.1.1,+ soap ==0.2.2.5,+ soap-openssl ==0.1.0.2,+ soap-tls ==0.1.1.2,+ socks ==0.5.4,+ sodium ==0.11.0.3,+ sourcemap ==0.1.3.0,+ speculation ==1.5.0.2,+ sphinx ==0.6.0.1,+ split ==0.2.2,+ Spock ==0.7.9.0,+ Spock-digestive ==0.1.0.0,+ Spock-worker ==0.2.1.3,+ spoon ==0.3.1,+ sqlite-simple ==0.4.8.0,+ srcloc ==0.4.1,+ stackage ==0.7.2.0,+ stackage-build-plan ==0.1.1.0,+ stackage-cli ==0.1.0.2,+ stackage-curator ==0.7.4,+ stackage-install ==0.1.1.1,+ stackage-types ==1.0.1.1,+ stackage-update ==0.1.2,+ stackage-upload ==0.1.0.5,+ stateref ==0.3,+ statestack ==0.2.0.4,+ StateVar ==1.1.0.0,+ statistics ==0.13.2.3,+ statistics-linreg ==0.3,+ stm ==2.4.4,+ stm-chans ==3.0.0.3,+ stm-conduit ==2.5.4,+ stm-containers ==0.2.9,+ stm-stats ==0.2.0.0,+ storable-complex ==0.2.2,+ storable-endian ==0.2.5,+ streaming-commons ==0.1.12.1,+ streams ==3.2,+ strict ==0.3.2,+ stringable ==0.1.3,+ stringbuilder ==0.5.0,+ string-conversions ==0.3.0.3,+ stringprep ==1.0.0,+ stringsearch ==0.3.6.6,+ stylish-haskell ==0.5.13.0,+ SVGFonts ==1.4.0.3,+ svg-tree ==0.1.1,+ syb ==0.4.4,+ syb-with-class ==0.6.1.5,+ symbol ==0.2.4,+ system-canonicalpath ==0.3.2.0,+ system-fileio ==0.3.16.3,+ system-filepath ==0.4.13.4,+ system-posix-redirect ==1.1.0.1,+ tabular ==0.2.2.7,+ tagged ==0.7.3,+ tagshare ==0.0,+ tagsoup ==0.13.3,+ tagstream-conduit ==0.5.5.3,+ tar ==0.4.1.0,+ tardis ==0.3.0.0,+ tasty ==0.10.1.2,+ tasty-ant-xml ==1.0.1,+ tasty-golden ==2.3.0.1,+ tasty-hunit ==0.9.2,+ tasty-kat ==0.0.3,+ tasty-quickcheck ==0.8.3.2,+ tasty-smallcheck ==0.8.0.1,+ tasty-th ==0.1.3,+ TCache ==0.12.0,+ template-haskell installed,+ temporary ==1.2.0.3,+ temporary-rc ==1.2.0.3,+ terminal-progress-bar ==0.0.1.4,+ terminal-size ==0.3.0,+ terminfo installed,+ test-framework ==0.8.1.1,+ test-framework-hunit ==0.3.0.1,+ test-framework-quickcheck2 ==0.3.0.3,+ test-framework-th ==0.2.4,+ testing-feat ==0.4.0.2,+ testpack ==2.1.3.0,+ texmath ==0.8.2,+ text ==1.2.0.6,+ text-binary ==0.1.0,+ text-format ==0.3.1.1,+ text-icu ==0.7.0.1,+ text-manipulate ==0.1.3.1,+ tf-random ==0.5,+ th-desugar ==1.5.3,+ th-expand-syns ==0.3.0.6,+ th-extras ==0.0.0.2,+ th-lift ==0.7.2,+ th-orphans ==0.11.1,+ threads ==0.5.1.3,+ th-reify-many ==0.1.3,+ thyme ==0.3.5.5,+ time installed,+ time-compat ==0.1.0.3,+ time-lens ==0.4.0.1,+ time-locale-compat ==0.1.0.1,+ timezone-olson ==0.1.7,+ timezone-series ==0.1.5.1,+ tls ==1.2.17,+ tls-debug ==0.3.4,+ tostring ==0.2.1.1,+ transformers installed,+ transformers-base ==0.4.4,+ transformers-compat ==0.4.0.3,+ traverse-with-class ==0.2.0.3,+ tree-view ==0.4,+ trifecta ==1.5.1.3,+ tttool ==1.3,+ tuple ==0.3.0.2,+ turtle ==1.0.2,+ type-eq ==0.5,+ type-list ==0.0.0.1,+ udbus ==0.2.1,+ unbounded-delays ==0.1.0.9,+ unbound-generics ==0.1.2.1,+ union-find ==0.2,+ uniplate ==1.6.12,+ unix installed,+ unix-compat ==0.4.1.4,+ unix-time ==0.3.5,+ unordered-containers ==0.2.5.1,+ uri-encode ==1.5.0.4,+ url ==2.1.3,+ users ==0.1.0.0,+ users-postgresql-simple ==0.1.0.1,+ users-test ==0.1.0.0,+ utf8-light ==0.4.2,+ utf8-string ==1,+ uuid ==1.3.10,+ uuid-types ==1.0.1,+ vault ==0.3.0.4,+ vector ==0.10.12.3,+ vector-algorithms ==0.6.0.4,+ vector-binary-instances ==0.2.1.0,+ vector-buffer ==0.4.1,+ vector-instances ==3.3.0.1,+ vector-space ==0.9,+ vector-space-points ==0.2.1.1,+ vector-th-unbox ==0.2.1.2,+ vhd ==0.2.2,+ void ==0.7,+ wai ==3.0.2.3,+ wai-app-static ==3.0.1.1,+ wai-conduit ==3.0.0.2,+ wai-eventsource ==3.0.0,+ wai-extra ==3.0.7.1,+ wai-handler-launch ==3.0.0.3,+ wai-logger ==2.2.4,+ wai-middleware-consul ==0.1.0.2,+ wai-middleware-static ==0.6.0.1,+ waitra ==0.0.3.0,+ wai-websockets ==3.0.0.5,+ warp ==3.0.13.1,+ warp-tls ==3.0.3,+ webdriver ==0.6.1,+ web-fpco ==0.1.1.0,+ websockets ==0.9.4.0,+ wizards ==1.0.2,+ wl-pprint ==1.1,+ wl-pprint-extras ==3.5.0.4,+ wl-pprint-terminfo ==3.7.1.3,+ wl-pprint-text ==1.1.0.4,+ word8 ==0.1.2,+ wordpass ==1.0.0.3,+ Workflow ==0.8.3,+ wrap ==0.0.0,+ wreq ==0.3.0.1,+ X11 ==1.6.1.2,+ x509 ==1.5.0.1,+ x509-store ==1.5.0,+ x509-system ==1.5.0,+ x509-validation ==1.5.2,+ xenstore ==0.1.1,+ xhtml installed,+ xml ==1.3.14,+ xml-conduit ==1.2.6,+ xml-conduit-writer ==0.1.1.1,+ xmlgen ==0.6.2.1,+ xml-hamlet ==0.4.0.11,+ xmlhtml ==0.2.3.4,+ xml-to-json ==2.0.1,+ xml-to-json-fast ==2.0.0,+ xml-types ==0.3.4,+ xss-sanitize ==0.3.5.5,+ yackage ==0.7.0.8,+ yaml ==0.8.11,+ Yampa ==0.9.7,+ YampaSynth ==0.2,+ yarr ==1.3.3.3,+ yesod ==1.4.1.5,+ yesod-auth ==1.4.5,+ yesod-auth-deskcom ==1.4.0,+ yesod-auth-fb ==1.6.6,+ yesod-auth-hashdb ==1.4.2.1,+ yesod-auth-oauth ==1.4.0.2,+ yesod-auth-oauth2 ==0.0.12,+ yesod-bin ==1.4.9.2,+ yesod-core ==1.4.9.1,+ yesod-eventsource ==1.4.0.1,+ yesod-fay ==0.7.1,+ yesod-fb ==0.3.4,+ yesod-form ==1.4.4.1,+ yesod-gitrepo ==0.1.1.0,+ yesod-newsfeed ==1.4.0.1,+ yesod-persistent ==1.4.0.2,+ yesod-sitemap ==1.4.0.1,+ yesod-static ==1.4.0.4,+ yesod-test ==1.4.3.1,+ yesod-text-markdown ==0.1.7,+ yesod-websockets ==0.2.1.1,+ zeromq4-haskell ==0.6.3,+ zip-archive ==0.2.3.7,+ zlib ==0.5.4.2,+ zlib-bindings ==0.1.1.5,+ zlib-enum ==0.2.3.1,+ zlib-lens ==0.1.2
debian/changelog view
@@ -1,3 +1,21 @@+git-annex (5.20150528) unstable; urgency=medium++ * fromkey, registerurl: Allow urls to be specified instead of keys,+ and generate URL keys.+ * Linux standalone, OSX app: Improve runshell script to always quote+ shell vars, so that it will work when eg, untarred into a directory+ path with spaces in its name.+ * Revert removal dependency on obsolete hamlet package, since the+ autobuilders are not ready for this change yet and it prevented them+ from building the webapp. Reopens: #786659+ * fsck: When checksumming a file fails due to a hardware fault,+ the file is now moved to the bad directory, and the fsck proceeds.+ Before, the fsck immediately failed.+ * Linux standalone: The webapp was not built in the previous release,+ this release fixes that oversight.++ -- Joey Hess <id@joeyh.name> Thu, 28 May 2015 10:48:03 -0400+ git-annex (5.20150522) unstable; urgency=medium * import: Refuse to import files that are within the work tree, as that@@ -28,6 +46,7 @@ * OSX: Corrected the location of trustedkeys.gpg, so the built-in upgrade code will find it. Fixes OSX upgrade going forward, but older versions won't upgrade themselves due to this problem.+ * Remove dependency on obsolete hamlet package. Closes: #786659 -- Joey Hess <id@joeyh.name> Fri, 22 May 2015 14:20:18 -0400
debian/control view
@@ -38,7 +38,8 @@ libghc-yesod-form-dev (>= 1.3.15) [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el], libghc-yesod-static-dev (>= 1.2.4) [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el], libghc-yesod-default-dev (>= 1.2.0) [i386 amd64 armel armhf kfreebsd-amd64 powerpc ppc64el],- libghc-shakespeare-dev (>= 2.0.0) [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el],+ libghc-hamlet-dev [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el],+ libghc-shakespeare-dev [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el], libghc-clientsession-dev [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el], libghc-warp-dev (>= 3.0.0.5) [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el], libghc-warp-tls-dev [i386 amd64 armel armhf kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el],
+ doc/bugs/Amazon_S3_storage_hosted_in_Frankfurt_not_usable.mdwn view
@@ -0,0 +1,19 @@+### Please describe the problem.+Can't add Amazon S3 repository hosted in Frankfurt++### What steps will reproduce the problem?+Create Amazon S3 account, create a bucket hosted in Frankfurt and create an access key.++### What version of git-annex are you using? On what operating system?+Ubuntu, git-annex via repositories. Aptitude says 5.20140717.++### Please provide any additional information below.+The git-annex assistant does not offer the selection of hosting in Frankfurt. If I enter "EU (Ireland)" instead, of course while also providing the other necessary details (access key id, secret access key, data center), the result is the following error:++[[!format sh """+The request signature we calculated does not match the signature you provided. Check your key and signing method.+"""]]++I have not tried other hosting locations but I assume it has to do with the location which is not listed in the dropdown-list.++> [[done]]; etooold --[[Joey]]
+ doc/bugs/git_annex_fsck_on_btrfs_devices.mdwn view
@@ -0,0 +1,18 @@+### Please describe the problem.+btrfs automatically validates checksums when data is read. If a checksum fails, instead of giving the corrupted file contents, the read will throw an I/O error. In result, it seems that git-annex fsck will not recognize the file as faulty, and will instead fail with a sha1sum parse error, without dropping the corresponding file as “bad”.++[[!format sh """+git annex fsck file+fsck file (checksum...)+sha1sum: .git/annex/objects/…: Input/output error+git-annex: sha1sum parse error+# End of transcript or log.+"""]]++### What version of git-annex are you using? On what operating system?+git-annex 5.20150508+linux 4.0.4++> [[fixed|done]]; IO errors are now detected and the file moved to bad/;+> the fsck also continues past that failure now, so if a disk has+> a lot of damanged files, it will find them all. --[[Joey]]
+ doc/bugs/webapp_missing_in_20150522_release.mdwn view
@@ -0,0 +1,37 @@+### Please describe the problem.++Using the prebuilt linux tarball, version 20150522 fails to start the webapp.++Doing it manually from the console, just gives me the help text. ++Trying out an older version shows me the webapp option below "watch" in the help, but this is missing in 20150522 version.++git-annex version gives me:++ git-annex version: 5.20150522-gb199d65+ build flags: Assistant Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA+ key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL+ remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external++### What steps will reproduce the problem?++Use 20150522 version of git annex++### What version of git-annex are you using? On what operating system?++linux tarball, version 20150522++Arch linux++### Please provide any additional information below.++[[!format sh """+# If you can, paste a complete transcript of the problem occurring here.+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log+++# End of transcript or log.+"""]]++> Unfortunate I didn't notice this. I've fixed it in git and will make a+> release tomorrow. [[done]] --[[Joey]]
doc/design/balanced_preferred_content.mdwn view
@@ -64,3 +64,17 @@ that want each file will reduce the chances that no repo will be able to take a given file. In the [[iabackup]] scenario, new clients will just be assigned until all the files reach the desired level or replication.++However.. Imagine there are 9 repos, all full, and some files have not+reached desired level of replication. Seems like adding 1 more repo will make+only 3 in 10 files be wanted by that new repo. Even if the repo has space+for all the files, it won't be sufficient, and more repos would need to be+added.++One way to avoid this problem would be if the preferred content was only+used for the initial distribution of files to a repo. If the repo has+gotten all the files it wants, it could make a second pass and+opportunisticly get files it doesn't want but that it has space for+and that don't have enough copies yet.+Although this gets back to the original problem of multiple repos racing+downloads and files getting more than the desired number of copies.
+ doc/devblog/day_288__microrelease_prep.mdwn view
@@ -0,0 +1,22 @@+After a less active than usual week (dentist), I made a release last Friday.+Unfortunately, it turns out that the Linux standalone +builds in that release don't include the webapp. So, another release is+planned tomorrow.++Yesterday and part of today I dug into+the [[bugs/windows_ssh_webapp_password_entry_broken]]+reversion. Eventually cracked the problem; it seems that+different versions of ssh for Windows do different things in a `isatty`+check, and there's a flag that can be passed when starting ssh to make it+not see a controlling tty. However, this neeeds changes to the+`process` library, which db48x and I have now coded up. So a fix for this bug+is waiting on a new release of that library. Oh well.++Rest of today was catching up on recent traffic, and improving the behavior+of `git annex fsck` when there's a disk IO error while checksumming a file.+Now it'll detect a hardware fault exception, and take that to mean the file+is bad, and move it to the bad files directory, instead of just crashing.++I need better tooling to create disk IO errors on demand.+Yanking disks out works, but is a blunt instrument. Anyone know of+good tools for that?
doc/direct_mode.mdwn view
@@ -112,9 +112,6 @@ git annex undo file -to revert the last change to `file`. Note that you can use the `--depth`-flag to revert earlier versions of the file.- ## forcing git to use the work tree in direct mode This is for experts only. You can lose data doing this, or check enormous
+ doc/direct_mode/comment_17_e7c066fba8e28c61e8517c7a18a02457._comment view
@@ -0,0 +1,7 @@+[[!comment format=mdwn+ username="mitzip"+ subject="--depth undo option"+ date="2015-05-27T02:54:17Z"+ content="""+Well I just spent 4 hours building a OSX GUI around git annex undo --depth and it responds with \"git-annex: unrecognized option '--depth'\"... lol Please tell me that option exists somewhere other than the documentation... lol+"""]]
+ doc/direct_mode/comment_18_e46f70efa6d8d65d5ef81cdcbd844869._comment view
@@ -0,0 +1,13 @@+[[!comment format=mdwn+ username="joey"+ subject="""comment 1"""+ date="2015-05-27T18:31:26Z"+ content="""+This page mentioned a --depth option, but no, it was never implemented.+I have updated this page.++If you need something simpler than the basic undo, you can use `git annex+proxy` to run eg, a `git revert`.++(Deleted a forum thread that duplicated the previous comment.)+"""]]
+ doc/forum/Proper_usage_of_git_annex_proxy_to_mimc_undo_--depth.mdwn view
@@ -0,0 +1,15 @@+[Thanks Joey for correcting the docs on `git annex undo --depth`, and thanks for the `git-revert` suggestion as a replacement!](http://git-annex.branchable.com/direct_mode/#comment-b6dcfc80842008e7f9f5b8f612b27867)++**Context: Creating an OSX GUI for assistant managed direct mode repos to help with restoring old file versions.**++I saw this in the `git revert` docs and thought that `git annex proxy -- git checkout annex/direct/master~$depth -- $filename` might best suit my needs of restoring a previous version of a file. (I liked the idea of presenting the user with a depth rather than a hash.)++>Note: git revert is used to record some new commits to reverse the effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see git-reset[1], particularly the --hard option. If you want to extract specific files as they were in another commit, you should see git-checkout[1], specifically the git checkout -- syntax. Take care with these alternatives as both will discard uncommitted changes in your working directory.++What I've found is that your suggestion of `git revert` is nice because it wouldn't create a conflict, as `git checkout` does. ++So annex, thorough as it is, creates a `$filename.variant-local.$ext` file after the auto conflict resolution to preserve the original. `git revert` is neater, history wise, because there is no conflict as git knows exactly what's changing and from whence it came, rather than just some new file content showing up from who knows where with `git checkout`. ++The issue it seems is that `git revert` works on a commit basis, while `git checkout` can operate on files. If I'm correct in this it would be good to know if annex uses one commit per file, for sure, every time? If this is the case, there would be no problem using the better in most every other way `git revert`.++Though, I'm still not clear how to use the "depth" referencing with `git revert` rather than hashes, any suggestions?
+ doc/forum/how_do_automated_upgrades_work__63__.mdwn view
@@ -0,0 +1,11 @@+When i start the assistant, it's nicely telling me:++<pre>+[2015-05-27 20:15:20 UTC] Upgrader: An upgrade of git-annex is available. (version 5.20150522)+</pre>++That's really cool, but it's not actually upgrading. I looked around the website to understand how that worked and i found [[git-annex-upgrade]] and [[upgrades]] but those pages were not really useful, as they talk more about repository upgrades, and not the automated upgrade system. I was expecting [[upgrades]] to talk a bit about automated upgrades, or maybe the [[install]] page... ++i am running `5.20150508-g883d57f`, with a standalone image installed by root in `/opt`. Should that directory be writable by the user running git-annex to solve this?++Thanks! --[[anarcat]]
doc/git-annex-fromkey.mdwn view
@@ -15,6 +15,12 @@ instead read from stdin. Any number of lines can be provided in this mode, each containing a key and filename, separated by a single space. +Normally the key is a git-annex formatted key. However, to make it easier+to use this to add urls, if the key cannot be parsed as a key, and is a+valid url, an URL key is constructed from the url. Note that this does not+register the url as a location of the key; use [[git-annex-registerurl]](1)+to do that.+ # OPTIONS * `--force`
doc/git-annex-registerurl.mdwn view
@@ -17,6 +17,10 @@ instead read from stdin. Any number of lines can be provided in this mode, each containing a key and url, separated by a single space. +Normally the key is a git-annex formatted key. However, to make it easier+to use this to add urls, if the key cannot be parsed as a key, and is a+valid url, an URL key is constructed from the url.+ # SEE ALSO [[git-annex]](1)
− doc/news/version_5.20150406.1.mdwn
@@ -1,6 +0,0 @@-git-annex 5.20150406.1 released with [[!toggle text="these changes"]]-[[!toggleable text="""- * Fixes a bug in the last release that caused rsync and possibly- other commands to hang at the end of a file transfer.- (--quiet is back to not blocking progress displays until- that code can be fixed properly.)"""]]
+ doc/news/version_5.20150528.mdwn view
@@ -0,0 +1,15 @@+git-annex 5.20150528 released with [[!toggle text="these changes"]]+[[!toggleable text="""+ * fromkey, registerurl: Allow urls to be specified instead of keys,+ and generate URL keys.+ * Linux standalone, OSX app: Improve runshell script to always quote+ shell vars, so that it will work when eg, untarred into a directory+ path with spaces in its name.+ * Revert removal dependency on obsolete hamlet package, since the+ autobuilders are not ready for this change yet and it prevented them+ from building the webapp. Reopens: #786659+ * fsck: When checksumming a file fails due to a hardware fault,+ the file is now moved to the bad directory, and the fsck proceeds.+ Before, the fsck immediately failed.+ * Linux standalone: The webapp was not built in the previous release,+ this release fixes that oversight."""]]
+ doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment view
@@ -0,0 +1,18 @@+[[!comment format=mdwn+ username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"+ nickname="rob.syme"+ subject="Finding IPFS hash"+ date="2015-05-26T04:55:32Z"+ content="""+I'm using git-annex version: 5.20150522-gb199d65++The example above gives the ipfs hash for the file, but when I run whereis, the hash is not reported:++ $ git annex whereis test.txt+ whereis test.txt (2 copies) + 1bd0f840-2247-4888-9237-596515788671 -- rob@rob-G60JX:/tmp/gitannextest [here]+ adf361b3-7b1a-43e1-8360-937f7e436e90 -- [ipfs]+ ok++Is there a way for git-annex to report the file's ipfs hash ID?+"""]]
+ doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"+ nickname="rob.syme"+ subject="Finding IPFS hash"+ date="2015-05-26T05:08:38Z"+ content="""+I see now that git-annex only reports the ipfs hash when the remote is unencrypted. It the ipfs hash not reported for encrypted ipfs remotes for security reasons?+"""]]
+ doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment view
@@ -0,0 +1,23 @@+[[!comment format=mdwn+ username="joey"+ subject="""comment 4"""+ date="2015-05-27T19:02:30Z"+ content="""+@rob.syme, the reason that does not work when using encryption+is that git-annex internally generates an encrypted key, and stores+that on IPFS. The ipfs special remote records the IPFS address+that can be used for a key, but it's recorded on the encrypted+key, which is not the one you're querying with whereis.++This is a general problem with git-annex; ipfs is probably the+first special remote that exposes the problem.++Anyway, I'm not sure what benefit knowing the IPFS address of a file+encrypted by git-annex is. You need to use git-annex to decrypt it, in+general. You might be able to use your gpg key to decrypt it, if the+special remote was set up using pubkey encryption, but that's not going to+help anyone else you give the IPFS address to access the encrypted data..++Does your use case involve pinning the IPFS address, or something like+that?+"""]]
doc/tips/publishing_your_files_to_the_public.mdwn view
@@ -61,3 +61,16 @@ Example: key=`git annex lookupkey "$fname"`; sign_s3_url.bash --region 'eu-west-1' --bucket 'mybuck' --file-path $key --aws-access-key-id XX --aws-secret-access-key XX --method 'GET' --minute-expire 10++## Adding the S3 URL as a source++Assuming all files in the current directory are available on S3, this will register the public S3 url for the file in git-annex, making it available for everyone *through git-annex*:++<pre>+git annex find --in public-s3 | while read file ; do+ key=$(git annex lookupkey $file)+ echo $key https://public-annex.s3.amazonaws.com/$key+done | git annex registerurl+</pre>++`registerurl` was introduced in `5.20150317`. There's a todo open to ensure we don't have to do this by hand: [[todo/credentials-less access to s3]].
@@ -11,7 +11,7 @@ git init shared ; cd shared # you can also do this on an existing git annex repo git config core.sharedrepository group chmod g+rwX -R .- chown -R :media .+ chgrp -R $group . The idea here is to use the new (since [[news/version 4.20130909]]) support for git's `sharedRepository` configuration and restrict access to a specific group (instead of the default, a single user). You can also this to make the files accessible to all users on the system:
+ doc/todo/credentials-less_access_to_s3.mdwn view
@@ -0,0 +1,11 @@+My situation is this: while i know i can *read and write* to [[special_remotes/S3]] fairly easily with the credentials, I cannot read from there from other remotes that do not have those credentials enabled.++This seems to be an assumption deeply rooted in git-annex, specifically in `Remote/S3.hs:390`.++It would be *very* useful to allow remotes to read from S3 transparently. I am aware of the tips mentionned in the comments of [[tips/publishing_your_files_to_the_public/]] that use the `addurl` hack, but this seems not only counter-intuitive, but also seem to add significant per-file overhead in the storage. It also requires running an extra command after every `git annex add` which is a problem if you are running the assistant that will add stuff behind your back.++Besides, you never know if and when the file really is available on s3, so running addurl isn't necessarily accurate.++How hard would it be to fix that in the s3 remote?++Thanks! --[[anarcat]]
+ doc/todo/get_--incomplete.mdwn view
@@ -0,0 +1,6 @@+Use case: Resuming downloads that are incomplete (files in .git/annex/tmp),+without needing to remember the original get command(s) that started the+download.++`git annex get --incomplete` could do this. (With or without --from to+specify which remote to get from.) --[[Joey]]
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 5.20150522+Version: 5.20150528 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess <id@joeyh.name>@@ -227,9 +227,9 @@ warp (>= 3.0.0.5), warp-tls, wai, wai-extra,- blaze-builder, crypto-api, clientsession,+ blaze-builder, crypto-api, hamlet, clientsession, template-haskell, aeson,- shakespeare (>= 2.0.0)+ shakespeare CPP-Options: -DWITH_WEBAPP if flag(Webapp) && flag (Webapp-secure)
man/git-annex-fromkey.1 view
@@ -13,6 +13,12 @@ instead read from stdin. Any number of lines can be provided in this mode, each containing a key and filename, separated by a single space. .PP+Normally the key is a git-annex formatted key. However, to make it easier+to use this to add urls, if the key cannot be parsed as a key, and is a+valid url, an URL key is constructed from the url. Note that this does not+register the url as a location of the key; use git-annex\-registerurl(1)+to do that.+.PP .SH OPTIONS .IP "\fB\-\-force\fP" .IP
man/git-annex-registerurl.1 view
@@ -15,6 +15,10 @@ instead read from stdin. Any number of lines can be provided in this mode, each containing a key and url, separated by a single space. .PP+Normally the key is a git-annex formatted key. However, to make it easier+to use this to add urls, if the key cannot be parsed as a key, and is a+valid url, an URL key is constructed from the url.+.PP .SH SEE ALSO git-annex(1) .PP
standalone/linux/skel/runshell view
@@ -36,9 +36,9 @@ echo "#!/bin/sh" echo "set -e" echo "if [ \"x\$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"- echo "exec $base/runshell git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\""+ echo "exec '$base/runshell' git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\"" echo "else"- echo "exec $base/runshell git-annex-shell -c \"\$@\""+ echo "exec '$base/runshell' git-annex-shell -c \"\$@\"" echo "fi" ) > "$HOME/.ssh/git-annex-shell" chmod +x "$HOME/.ssh/git-annex-shell"@@ -51,7 +51,7 @@ ( echo "#!/bin/sh" echo "set -e"- echo "exec $base/runshell \"\$@\""+ echo "exec '$base/runshell' \"\$@\"" ) > "$HOME/.ssh/git-annex-wrapper" chmod +x "$HOME/.ssh/git-annex-wrapper" fi@@ -60,11 +60,11 @@ # system binaries. ORIG_PATH="$PATH" export ORIG_PATH-PATH=$base/bin:$PATH+PATH="$base/bin:$PATH" export PATH # This is used by the shim wrapper around each binary.-for lib in $(cat $base/libdirs); do+for lib in $(cat "$base/libdirs"); do GIT_ANNEX_LD_LIBRARY_PATH="$base/$lib:$GIT_ANNEX_LD_LIBRARY_PATH" done export GIT_ANNEX_LD_LIBRARY_PATH@@ -73,7 +73,7 @@ ORIG_GCONV_PATH="$GCONV_PATH" export ORIG_GCONV_PATH-GCONV_PATH=$base/$(cat $base/gconvdir)+GCONV_PATH="$base/$(cat "$base/gconvdir")" export GCONV_PATH # workaround for https://ghc.haskell.org/trac/ghc/ticket/7695@@ -82,7 +82,7 @@ ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH" export ORIG_GIT_EXEC_PATH-GIT_EXEC_PATH=$base/git-core+GIT_EXEC_PATH="$base/git-core" export GIT_EXEC_PATH ORIG_GIT_TEMPLATE_DIR="$GIT_TEMPLATE_DIR"
standalone/osx/git-annex.app/Contents/MacOS/runshell view
@@ -38,9 +38,9 @@ echo "#!/bin/sh" echo "set -e" echo "if [ \"x\$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"- echo "exec $base/runshell git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\""+ echo "exec '$base/runshell' git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\"" echo "else"- echo "exec $base/runshell git-annex-shell -c \"\$@\""+ echo "exec '$base/runshell' git-annex-shell -c \"\$@\"" echo "fi" ) > "$HOME/.ssh/git-annex-shell" chmod +x "$HOME/.ssh/git-annex-shell"@@ -53,7 +53,7 @@ ( echo "#!/bin/sh" echo "set -e"- echo "exec $base/runshell \"\$@\""+ echo "exec '$base/runshell' \"\$@\"" ) > "$HOME/.ssh/git-annex-wrapper" chmod +x "$HOME/.ssh/git-annex-wrapper" fi@@ -62,12 +62,12 @@ # system binaries. ORIG_PATH="$PATH" export ORIG_PATH-PATH=$bundle:$PATH+PATH="$bundle:$PATH" export PATH ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH" export ORIG_GIT_EXEC_PATH-GIT_EXEC_PATH=$bundle+GIT_EXEC_PATH="$bundle" export GIT_EXEC_PATH ORIG_GIT_TEMPLATE_DIR="$GIT_TEMPLATE_DIR"
+ test view
file too large to diff