git-annex 5.20150916 → 5.20150930
raw patch · 45 files changed
+468/−151 lines, 45 files
Files
- Annex/Direct.hs +5/−3
- Assistant/WebApp/Configurators/AWS.hs +5/−1
- Assistant/WebApp/Configurators/Delete.hs +0/−5
- Assistant/WebApp/routes +0/−1
- Build/DistributionUpdate.hs +1/−1
- CHANGELOG +22/−0
- Command/Info.hs +1/−1
- Command/Status.hs +38/−55
- Git/Status.hs +76/−0
- Remote/S3.hs +3/−0
- Utility/Bloom.hs +1/−1
- Utility/SshConfig.hs +7/−3
- debian/changelog +22/−0
- doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn +4/−3
- doc/bugs/cannot_change_locale___40__en__95__US.UTF-8__41__.mdwn +0/−4
- doc/bugs/git-annex_rewrites_.ssh__47__config.mdwn +17/−0
- doc/bugs/unannexed_files_are_immediately_re-annexed_by_assistant.mdwn +2/−0
- doc/bugs/windows_installer_seems_have_been_broken.mdwn +10/−0
- doc/builds.mdwn +6/−0
- doc/coding_style/comment_3_61c178b997dd044f3531303913f8fa91._comment +8/−0
- doc/coding_style/comment_4_433b7ba5e51e746f6b033ebb5c0e50a2._comment +22/−0
- doc/design/assistant/polls/prioritizing_special_remotes.mdwn +1/−1
- doc/devblog/day_319__release_day.mdwn +6/−0
- doc/devblog/day_320__caught_up.mdwn +13/−0
- doc/encryption/comment_4_fe8b181adef9a39a039ff96a0d587188._comment +11/−0
- doc/forum/monitoring_disk_usage_by_different_repos_on_same_drive.mdwn +7/−0
- doc/git-annex-status.mdwn +4/−2
- doc/install/Linux_standalone.mdwn +6/−0
- doc/install/Windows.mdwn +3/−5
- doc/install/fromsource.mdwn +28/−7
- doc/news/version_5.20150727.mdwn +0/−35
- doc/news/version_5.20150731.mdwn +0/−13
- doc/news/version_5.20150930.mdwn +19/−0
- doc/special_remotes/S3.mdwn +13/−3
- doc/tips/public_Amazon_S3_remote.mdwn +1/−1
- doc/todo/Facilitate_public_pretty_S3_URLs.mdwn +4/−0
- doc/todo/Nearline_support.mdwn +8/−0
- doc/todo/deferred_update_mode.mdwn +28/−0
- doc/todo/find_unused_in_any_commit.mdwn +3/−0
- doc/todo/make_status_show_staged_files.mdwn +2/−0
- doc/todo/xmpp_removal.mdwn +25/−0
- git-annex.cabal +1/−1
- man/git-annex-status.1 +4/−2
- stack.yaml +31/−0
- templates/repolist.hamlet +0/−3
Annex/Direct.hs view
@@ -153,7 +153,7 @@ - - A lock file is used to avoid races with any other caller of mergeDirect. - - - To avoid other git processes from making change to the index while our+ - To avoid other git processes from making changes to the index while our - merge is in progress, the index lock file is used as the temp index - file. This is the same as what git does when updating the index - normally.@@ -162,7 +162,8 @@ mergeDirect startbranch oldref branch resolvemerge commitmode = exclusively $ do reali <- liftIO . absPath =<< fromRepo indexFile tmpi <- liftIO . absPath =<< fromRepo indexFileLock- liftIO $ copyFile reali tmpi+ liftIO $ whenM (doesFileExist reali) $+ copyFile reali tmpi d <- fromRepo gitAnnexMergeDir liftIO $ do@@ -178,7 +179,8 @@ mergeDirectCleanup d (fromMaybe Git.Sha.emptyTree oldref) mergeDirectCommit merged startbranch branch commitmode - liftIO $ rename tmpi reali+ liftIO $ whenM (doesFileExist tmpi) $+ rename tmpi reali return r where
Assistant/WebApp/Configurators/AWS.hs view
@@ -41,11 +41,12 @@ where needglaciercli = $(widgetFile "configurators/needglaciercli") -data StorageClass = StandardRedundancy | ReducedRedundancy+data StorageClass = StandardRedundancy | StandardInfrequentAccess | ReducedRedundancy deriving (Eq, Enum, Bounded) instance Show StorageClass where show StandardRedundancy = "STANDARD" + show StandardInfrequentAccess = "STANDARD_IA" show ReducedRedundancy = "REDUCED_REDUNDANCY" data AWSInput = AWSInput@@ -75,6 +76,9 @@ storageclasses :: [(Text, StorageClass)] storageclasses = [ ("Standard redundancy", StandardRedundancy)+#if MIN_VERSION_aws(0,13,0)+ , ("Infrequent access (cheaper for backups and archives)", StandardInfrequentAccess)+#endif , ("Reduced redundancy (costs less)", ReducedRedundancy) ]
Assistant/WebApp/Configurators/Delete.hs view
@@ -47,11 +47,6 @@ then deletionPage $ $(widgetFile "configurators/delete/xmpp") else nonxmpp -getDisableRepositoryR :: UUID -> Handler Html-getDisableRepositoryR uuid = notCurrentRepo uuid $ handleXMPPRemoval uuid $ do- void $ liftAssistant $ disableRemote uuid- redirect DashboardR- getDeleteRepositoryR :: UUID -> Handler Html getDeleteRepositoryR uuid = notCurrentRepo uuid $ handleXMPPRemoval uuid $ do deletionPage $ do
Assistant/WebApp/routes view
@@ -87,7 +87,6 @@ /config/repository/reorder RepositoriesReorderR GET /config/repository/syncnow/#UUID SyncNowRepositoryR GET-/config/repository/disable/#UUID DisableRepositoryR GET /config/repository/delete/confirm/#UUID DeleteRepositoryR GET /config/repository/delete/start/#UUID StartDeleteRepositoryR GET
Build/DistributionUpdate.hs view
@@ -31,7 +31,7 @@ -- it in the repository. autobuilds :: [(URLString, FilePath)] autobuilds = - (map linuxarch ["i386", "amd64", "armel"]) +++ (map linuxarch ["i386", "amd64", "armel", "i386-ancient"]) ++ (map androidversion ["4.0", "4.3", "5.0"]) ++ [ (autobuild "x86_64-apple-yosemite/git-annex.dmg", "git-annex/OSX/current/10.10_Yosemite/git-annex.dmg") , (autobuild "windows/git-annex-installer.exe", "git-annex/windows/current/git-annex-installer.exe")
CHANGELOG view
@@ -1,3 +1,25 @@+git-annex (5.20150930) unstable; urgency=medium++ * Added new linux standalone "ancient" build to support kernels+ like 2.6.32.+ * info: Don't allow use in a non-git-annex repository, since it+ uses the git-annex branch and would create it if it were missing.+ * assistant: When updating ~/.ssh/config, preserve any symlinks.+ * webapp: Remove the "disable remote" feature from the UI.+ * S3: When built with aws-0.13.0, supports using more storage classes.+ In particular, storageclass=STANDARD_IA to use Amazon's+ new Infrequently Accessed storage, and storageclass=NEARLINE+ to use Google's NearLine storage.+ * Improve ~/.ssh/config modification code to not add trailing spaces+ to lines it cannot parse.+ * Fix a crash at direct mode merge time when .git/index doesn't exist+ yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of+ a repository.+ * status: Show added but not yet committed files.+ * Added stack.yaml to support easy builds from source with stack.++ -- Joey Hess <id@joeyh.name> Wed, 30 Sep 2015 14:31:52 -0400+ git-annex (5.20150916) unstable; urgency=medium * Fix Windows build to work with ghc 7.10.
Command/Info.hs view
@@ -79,7 +79,7 @@ type StatState = StateT StatInfo Annex cmd :: Command-cmd = noCommit $ dontCheck repoExists $ withGlobalOptions (jsonOption : annexedMatchingOptions) $+cmd = noCommit $ withGlobalOptions (jsonOption : annexedMatchingOptions) $ command "info" SectionQuery "shows information about the specified item or the repository as a whole" (paramRepeating paramItem) (seek <$$> optParser)
Command/Status.hs view
@@ -1,6 +1,6 @@ {- git-annex command -- - Copyright 2013 Joey Hess <id@joeyh.name>+ - Copyright 2013-2015 Joey Hess <id@joeyh.name> - - Licensed under the GNU GPL version 3 or higher. -}@@ -12,9 +12,9 @@ import Annex.CatFile import Annex.Content.Direct import Config-import qualified Git.LsFiles as LsFiles+import Git.Status import qualified Git.Ref-import qualified Git+import Git.FilePath cmd :: Command cmd = notBareRepo $ noCommit $ noMessages $ withGlobalOptions [jsonOption] $@@ -24,68 +24,51 @@ seek :: CmdParams -> CommandSeek seek = withWords start--start :: [FilePath] -> CommandStart-start [] = do- -- Like git status, when run without a directory, behave as if- -- given the path to the top of the repository.- top <- fromRepo Git.repoPath- d <- liftIO $ relPathCwdToFile top- start' [d]-start locs = start' locs -start' :: [FilePath] -> CommandStart-start' locs = do- (l, cleanup) <- inRepo $ LsFiles.modifiedOthers locs+start :: [FilePath] -> CommandStart+start locs = do+ (l, cleanup) <- inRepo $ getStatus locs getstatus <- ifM isDirect ( return statusDirect- , return $ Just <$$> statusIndirect+ , return $ \s -> pure (Just s) )- forM_ l $ \f -> maybe noop (showFileStatus f) =<< getstatus f+ forM_ l $ \s -> maybe noop displayStatus =<< getstatus s void $ liftIO cleanup stop -data Status - = NewFile- | DeletedFile- | ModifiedFile--showStatus :: Status -> String-showStatus NewFile = "?"-showStatus DeletedFile = "D"-showStatus ModifiedFile = "M"--showFileStatus :: FilePath -> Status -> Annex ()-showFileStatus f s = unlessM (showFullJSON [("status", ss), ("file", f)]) $- liftIO $ putStrLn $ ss ++ " " ++ f- where- ss = showStatus s+displayStatus :: Status -> Annex ()+-- renames not shown in this simplified status+displayStatus (Renamed _ _) = noop+displayStatus s = do+ let c = statusChar s+ absf <- fromRepo $ fromTopFilePath (statusFile s)+ f <- liftIO $ relPathCwdToFile absf+ unlessM (showFullJSON [("status", [c]), ("file", f)]) $+ liftIO $ putStrLn $ [c] ++ " " ++ f -statusDirect :: FilePath -> Annex (Maybe Status)-statusDirect f = checkstatus =<< liftIO (catchMaybeIO $ getFileStatus f)+-- Git thinks that present direct mode files are typechanged;+-- check their content to see if they are modified or not.+statusDirect :: Status -> Annex (Maybe Status)+statusDirect (TypeChanged t) = do+ absf <- fromRepo $ fromTopFilePath t+ f <- liftIO $ relPathCwdToFile absf+ v <- liftIO (catchMaybeIO $ getFileStatus f)+ case v of+ Nothing -> return $ Just $ Deleted t+ Just s+ | not (isSymbolicLink s) ->+ checkkey f s =<< catKeyFile f+ | otherwise -> Just <$> checkNew f t where- checkstatus Nothing = return $ Just DeletedFile- checkstatus (Just s)- -- Git thinks that present direct mode files are modifed,- -- so have to check.- | not (isSymbolicLink s) = checkkey s =<< catKeyFile f- | otherwise = Just <$> checkNew f- - checkkey s (Just k) = ifM (sameFileStatus k f s)+ checkkey f s (Just k) = ifM (sameFileStatus k f s) ( return Nothing- , return $ Just ModifiedFile+ , return $ Just $ Modified t )- checkkey _ Nothing = Just <$> checkNew f--statusIndirect :: FilePath -> Annex Status-statusIndirect f = ifM (liftIO $ isJust <$> catchMaybeIO (getFileStatus f))- ( checkNew f- , return DeletedFile- )- where+ checkkey f _ Nothing = Just <$> checkNew f t+statusDirect s = pure (Just s) -checkNew :: FilePath -> Annex Status-checkNew f = ifM (isJust <$> catObjectDetails (Git.Ref.fileRef f))- ( return ModifiedFile- , return NewFile+checkNew :: FilePath -> TopFilePath -> Annex Status+checkNew f t = ifM (isJust <$> catObjectDetails (Git.Ref.fileRef f))+ ( return (Modified t)+ , return (Untracked t) )
+ Git/Status.hs view
@@ -0,0 +1,76 @@+{- git status interface+ -+ - Copyright 2015 Joey Hess <id@joeyh.name>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Git.Status where++import Common+import Git+import Git.Command+import Git.FilePath++data Status+ = Modified TopFilePath+ | Deleted TopFilePath+ | Added TopFilePath+ | Renamed TopFilePath TopFilePath+ | TypeChanged TopFilePath+ | Untracked TopFilePath++statusChar :: Status -> Char+statusChar (Modified _) = 'M'+statusChar (Deleted _) = 'D'+statusChar (Added _) = 'A'+statusChar (Renamed _ _) = 'R'+statusChar (TypeChanged _) = 'T'+statusChar (Untracked _) = '?'++statusFile :: Status -> TopFilePath+statusFile (Modified f) = f+statusFile (Deleted f) = f+statusFile (Added f) = f+statusFile (Renamed _oldf newf) = newf+statusFile (TypeChanged f) = f+statusFile (Untracked f) = f++parseStatusZ :: [String] -> [Status]+parseStatusZ = go []+ where+ go c [] = reverse c+ go c (x:xs) = case x of+ (sindex:sworktree:' ':f) -> + -- Look at both the index and worktree status,+ -- preferring worktree.+ case cparse sworktree <|> cparse sindex of+ Just mks -> go (mks (asTopFilePath f) : c) xs+ Nothing -> if sindex == 'R'+ -- In -z mode, the name the+ -- file was renamed to comes+ -- first, and the next component+ -- is the old filename.+ then case xs of+ (oldf:xs') -> go (Renamed (asTopFilePath oldf) (asTopFilePath f) : c) xs'+ _ -> go c []+ else go c xs+ _ -> go c xs++ cparse 'M' = Just Modified+ cparse 'A' = Just Added+ cparse 'D' = Just Deleted+ cparse 'T' = Just TypeChanged+ cparse '?' = Just Untracked+ cparse _ = Nothing++getStatus :: [FilePath] -> Repo -> IO ([Status], IO Bool)+getStatus l r = do+ (ls, cleanup) <- pipeNullSplit params r+ return (parseStatusZ ls, cleanup)+ where+ params =+ [ Param "status"+ , Param "-uall"+ , Param "-z"+ ] ++ map File l
Remote/S3.hs view
@@ -500,6 +500,9 @@ getStorageClass :: RemoteConfig -> S3.StorageClass getStorageClass c = case M.lookup "storageclass" c of Just "REDUCED_REDUNDANCY" -> S3.ReducedRedundancy+#if MIN_VERSION_aws(0,13,0)+ Just s -> S3.OtherStorageClass (T.pack s)+#endif _ -> S3.Standard getPartSize :: RemoteConfig -> Maybe Integer
Utility/Bloom.hs view
@@ -53,7 +53,7 @@ notElemB = Bloom.notElemB elemB :: a -> Bloom a -> Bool-elemB = Bloom.elem+elemB = Bloom.elemB newMB :: (a -> [Bloom.Hash]) -> Int -> ST s (Bloom.MBloom s a) newMB = Bloom.newMB
Utility/SshConfig.hs view
@@ -81,7 +81,8 @@ gen (GlobalConfig s) = [setting s] gen (HostConfig h cs) = ("Host " ++ h) : map (either comment setting) cs - setting (SshSetting indent k v) = indent ++ k ++ " " ++ v+ setting (SshSetting indent k v) = indent ++ k ++ + if null v then "" else " " ++ v comment (Comment indent c) = indent ++ c findHostConfigKey :: SshConfig -> Key -> Maybe Value@@ -117,8 +118,11 @@ whenM (doesFileExist configfile) $ do c <- readFileStrict configfile let c' = modifier c- when (c /= c') $- viaTmp writeSshConfig configfile c'+ when (c /= c') $ do+ -- If it's a symlink, replace the file it+ -- points to.+ f <- catchDefaultIO configfile (canonicalizePath configfile)+ viaTmp writeSshConfig f c' writeSshConfig :: FilePath -> String -> IO () writeSshConfig f s = do
debian/changelog view
@@ -1,3 +1,25 @@+git-annex (5.20150930) unstable; urgency=medium++ * Added new linux standalone "ancient" build to support kernels+ like 2.6.32.+ * info: Don't allow use in a non-git-annex repository, since it+ uses the git-annex branch and would create it if it were missing.+ * assistant: When updating ~/.ssh/config, preserve any symlinks.+ * webapp: Remove the "disable remote" feature from the UI.+ * S3: When built with aws-0.13.0, supports using more storage classes.+ In particular, storageclass=STANDARD_IA to use Amazon's+ new Infrequently Accessed storage, and storageclass=NEARLINE+ to use Google's NearLine storage.+ * Improve ~/.ssh/config modification code to not add trailing spaces+ to lines it cannot parse.+ * Fix a crash at direct mode merge time when .git/index doesn't exist+ yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of+ a repository.+ * status: Show added but not yet committed files.+ * Added stack.yaml to support easy builds from source with stack.++ -- Joey Hess <id@joeyh.name> Wed, 30 Sep 2015 14:31:52 -0400+ git-annex (5.20150916) unstable; urgency=medium * Fix Windows build to work with ghc 7.10.
doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn view
@@ -1,6 +1,9 @@ ### Please describe the problem. -The S3 remote does not support Google Cloud Storage buckets with the Durable Reduced Availability or Nearline storage classes. These are less-expensive alternatives to the Standard storage class, which would otherwise be a good fit for git-annex.+The S3 remote does not support Google Cloud Storage buckets with the+Durable Reduced Availability or Nearline storage classes. These are+less-expensive alternatives to the Standard storage class, which would+otherwise be a good fit for git-annex. ### What steps will reproduce the problem? @@ -87,5 +90,3 @@ [2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none> git-annex: S3Error {s3StatusCode = Status {statusCode = 400, statusMessage = "Bad Request"}, s3ErrorCode = "InvalidArgument", s3ErrorMessage = "Invalid argument.", s3ErrorResource = Nothing, s3ErrorHostId = Nothing, s3ErrorAccessKeyId = Nothing, s3ErrorStringToSign = Nothing} """]]--> This is a dup of [[todo/Nearline_support]] ; [[done]] --[[Joey]]
doc/bugs/cannot_change_locale___40__en__95__US.UTF-8__41__.mdwn view
@@ -26,7 +26,3 @@ he_IL.iso88598 he_IL.utf8 POSIX--> Closing since I've seen nothing to indicate this is anything other than a-> misconfigured OS that doesn't have the requested locale available.-> [[done]] --[[Joey]]
+ doc/bugs/git-annex_rewrites_.ssh__47__config.mdwn view
@@ -0,0 +1,17 @@+### Please describe the problem.+Running git annex assistant, my .ssh/config file is rewritten. First, it is a symlink, but then git-annex makes it into an actual file. Second, it adds a trailing whitespace to a generic host block:++ Host+ ForwardAgent no+ ...++### What steps will reproduce the problem?+For the symlink, just make .ssh/config a symlink to the real thing. Have a generic host block will add trailing whitespace. Starting git annex assistant will rewrite .ssh/config.++### What version of git-annex are you using? On what operating system?+git-annex-5.20140717-8.fc24.x86_64++### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)+Has worked wonders for syncing keepass files between devices; just now setting up assistant to do things automatically though :) .++> [[fixed|done]] --[[Joey]]
doc/bugs/unannexed_files_are_immediately_re-annexed_by_assistant.mdwn view
@@ -2,3 +2,5 @@ When using “git annex unlock”, the assistant is clever enough not to immediately re-add the corresponding files. When using “git annex unannex”, however, the assistant goes on to re-add the files right away. It would be convenient if this case were also handled likewise. git-annex 5.20150508++> [[done]]; cannot be implemented. --[[Joey]]
+ doc/bugs/windows_installer_seems_have_been_broken.mdwn view
@@ -0,0 +1,10 @@+### Please describe the problem.++decided to upgrade git-annex in our test virtualbox windows... upon upgrade (just running installer again with the default location for git), annex is not longer available: http://www.onerussian.com/tmp/gkrellShoot_09-17-15_105547.png+Replicated on another similar instance ++### What steps will reproduce the problem?++download exe from https://downloads.kitenet.net/git-annex/windows/current/ (btw I think I noted it reduced in size noteably)++> [[done]] per my comment --[[Joey]]
doc/builds.mdwn view
@@ -12,6 +12,9 @@ <h2>Linux armel</h2> <iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/armel/build-version"> </iframe>+<h2>Linux i386-ancient</h2>+<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/build-version">+</iframe> <h2>Android</h2> <iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/android/4.3/build-version"> </iframe>@@ -33,6 +36,9 @@ </iframe> <h2>Linux armel</h2> <iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/armel/">+</iframe>+<h2>Linux i386-ancient</h2>+<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/"> </iframe> <h2>Android</h2> <iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/android/">
+ doc/coding_style/comment_3_61c178b997dd044f3531303913f8fa91._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="Don"+ subject="Style for man pages?"+ date="2015-09-28T10:00:45Z"+ content="""+Could you add some suggestions for editing the .mdwn files? I'd like to help clean up a few (really minor) things I noticed, but I don't want to make more work for you with the changes I make. One thing I'm not sure about is where to set my fill column when editing--I can't seem to pick any single value (79? 80?) that doesn't make some paragraphs change when I rewrap them. Also, it might be helpful to have a quick guide for when you surround commands and other computer-y words with quotes, backticks, or nothing at all.+ +"""]]
+ doc/coding_style/comment_4_433b7ba5e51e746f6b033ebb5c0e50a2._comment view
@@ -0,0 +1,22 @@+[[!comment format=mdwn+ username="joey"+ subject="""man page style"""+ date="2015-09-29T15:20:10Z"+ content="""+Well, I don't always word-wrap paras when re-editing them, and several+people have had their hands on the man page and may have different wrapping+settings. ++My suggestion would be, if you need to re-wrap, or generally make+whitespace changes, do it in a separate commit from other changes. +Similarly, make spelling corrections in a separate commit from any+substance changes.++Note that you can push man page commits directly to this site via git://+protocol, so it's not going to use my time as long as there's a reasonable+commit message.++Use backticks around any command name or fragment of a command line. +Use quotes around program output, or other values that are not command+names or switch names.+"""]]
doc/design/assistant/polls/prioritizing_special_remotes.mdwn view
@@ -6,7 +6,7 @@ Help me prioritize my work: What special remote would you most like to use with the git-annex assistant? -[[!poll open=yes 18 "Amazon S3 (done)" 13 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 27 "Tahoe-LAFS" 16 "OpenStack SWIFT" 36 "Google Drive"]]+[[!poll open=yes 18 "Amazon S3 (done)" 13 "Amazon Glacier (done)" 10 "Box.com (done)" 74 "My phone (or MP3 player)" 27 "Tahoe-LAFS" 16 "OpenStack SWIFT" 37 "Google Drive"]] This poll is ordered with the options I consider easiest to build listed first. Mostly because git-annex already supports them and they
+ doc/devblog/day_319__release_day.mdwn view
@@ -0,0 +1,6 @@+Made the release this morning, first one in 3 weeks. A fair lot of good+stuff in there.++Just in time for the release, git-annex has support for+[Ceph](http://ceph.com/). Thanks to Mesar Hameed for building +[the external special remote](https://github.com/mhameed/git-annex-remote-ceph)!
+ doc/devblog/day_320__caught_up.mdwn view
@@ -0,0 +1,13 @@+I've mostly been chewing through old and new bug reports and support+requests that past several days. The backlog is waaay low now -- only 82+messages! Just in time for me to go on another trip, to Louisville on+Thursday.++Amazon S3 added an "Infrequent Access" storage class last week, and I got a+patch into the haskell-aws library to support that, as well as partially+supporting Google Nearline. That patch was accepted today, and git-annex is+ready to use the new version of the library as soon as it's released.++At the end of today, I found myself rewriting `git annex status` to parse+and adjust the output of `git status --short`. This new method makes it+much more capable than before, including displaying Added files.
+ doc/encryption/comment_4_fe8b181adef9a39a039ff96a0d587188._comment view
@@ -0,0 +1,11 @@+[[!comment format=mdwn+ username="joey"+ subject="""listing gpg keys"""+ date="2015-09-17T17:01:38Z"+ content="""+Run "git annex info specialremote" and it will describe the encryption+settings of the remote, including gpg keys where applicable.++Needs a fairly recent git-annex. `git show git-annex:remote.log` can+also be used.+"""]]
+ doc/forum/monitoring_disk_usage_by_different_repos_on_same_drive.mdwn view
@@ -0,0 +1,7 @@+I've setup a server using gitolite3 to host repositories for our users. All these repos share the same disk (2.5 Tb ;-). They're mainly used as backup of all contents.++I'd like to monitor disk usage (possibly with statistics related to git-annex specificities) for these repos.++Would anyone suggest a solution (web based maybe), for easily monitoring the growth of the repos storage ?++Thanks in advance.
doc/git-annex-status.mdwn view
@@ -9,8 +9,10 @@ # DESCRIPTION Similar to `git status --short`, this command displays the status of the files-in the working tree. Shows files that are not checked into git, files that have-been deleted, and files that have been modified.+in the working tree. ++Show files that are not checked into git (?), deleted (D),+modified (M), added but not committed (A), and type changed/unlocked (T). Particularly useful in direct mode.
doc/install/Linux_standalone.mdwn view
@@ -7,6 +7,7 @@ * x86-32: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-i386.tar.gz) * x86-64: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz)+* x86-32, for ancient kernels: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-i386-ancient.tar.gz) * arm: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-armel.tar.gz) To use, just unpack the tarball, `cd git-annex.linux` and run `./runshell`@@ -24,6 +25,10 @@ * [[tips/Synology_NAS_and_git_annex]] * [[forum_thread|forum/new_linux_arm_tarball_build]] +The build for ancient kernels is for use with Linux kernel versions+such as 2.6.32. It is missing some features, like SHA3 support and+the webapp. It will work on both 32 and 64 bit systems.+ ## autobuilds An hourly autobuild is also available, thanks to Mesar Hameed and the University@@ -31,6 +36,7 @@ * x86-32: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/i386/git-annex-standalone-i386.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/i386/)) * x86-64: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/amd64/git-annex-standalone-amd64.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/amd64/))+* x86-32, for ancient kernels: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/git-annex-standalone-i386-ancient.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/)) The arm autobuilder runs daily, and is hosted at [WetKnee Books](http://www.wetknee.com/).
doc/install/Windows.mdwn view
@@ -1,8 +1,8 @@ git-annex now does Windows! -* First, [install msysgit](http://git-scm.com/downloads) (msysgit 1.9 is needed) - _Be sure to tell the installer to add git to the PATH._ - That is, select "Use Git from the Windows Command Prompt"+* First, [install git for Windows](http://git-scm.com/downloads) + Get the 32 bit version not the 64 bit version. + (Note that msysgit is no longer supported.) * Then, [install git-annex](https://downloads.kitenet.net/git-annex/windows/current/) This port is now in reasonably good shape for command-line use of@@ -19,8 +19,6 @@ A daily build is also available, thanks to Yury V. Zaytsev and [NEST](http://nest-initiative.org/).--This daily build now needs git for windows, not msysgit. * [download](https://downloads.kitenet.net/git-annex/autobuild/windows/) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/))
doc/install/fromsource.mdwn view
@@ -34,17 +34,40 @@ Now you can build git-annex by running either `make` or `cabal build` inside the source tree. -## minimal build with cabal and stackage+## building from source with stack +Using stack automates nearly everything, will work on many systems,+and avoids build failures due to fast-changing haskell libraries.++First, [install stack](https://github.com/commercialhaskell/stack/blob/master/doc/install_and_upgrade.md)+It will be part of the Haskell Platform soon. On Debian unstable/testing:++ sudo apt-get install haskell-stack zlib1g-dev++Use stack to install all dependencies and git-annex:++ stack setup+ stack install git-annex++Move git-annex into some directory that is in your PATH:++ mv ~/.local/bin/git-annex ~/bin # or /usr/local/bin/ or whatever++Note that this build produces a git-annex without XMPP and DBUS support.+These optional features are only used by the webapp, and require+installing additional C libraries. To try to build with these features+enabled, pass extra parameters when running stack: +`--flag git-annex:XMPP --flag git-annex:DBUS`++## minimal build from source with cabal+ This can be done anywhere, and builds git-annex without some optional features that require harder-to-install C libraries. This is plenty to let you get started with git-annex, but it does not include the assistant or webapp. Be warned that this involves building a lot of Haskell libraries from source, and so it has a lot of moving parts, and it's not uncommon for it-to be broken from time to time. A nice way to avoid such breakage is to-[configure cabal to use the Stackage repository](http://www.stackage.org/),-which is a more stable and consistent version of the Hackage repository.+to be broken from time to time. Inside the source tree, run: @@ -54,14 +77,12 @@ PATH=$HOME/bin:$PATH cabal install --bindir=$HOME/bin -## full build with cabal and stackage+## full build from source with cabal To build with all features enabled, including the assistant and webapp, you will need to install several C libraries and their headers, including libgnutls, libgsasl, libxml2, and zlib. How to do that for your OS is beyond the scope of this page. --Using [Stackage](http://www.stackage.org/) is again a good idea here! Once the C libraries are installed, run inside the source tree:
− doc/news/version_5.20150727.mdwn
@@ -1,35 +0,0 @@-git-annex 5.20150727 released with [[!toggle text="these changes"]]-[[!toggleable text="""- * Fix bug that prevented uploads to remotes using new-style chunking- from resuming after the last successfully uploaded chunk.- * Switched option parsing to use optparse-applicative. This was a very large- and invasive change, and may have caused some minor behavior changes to- edge cases of option parsing. (For example, the metadata command no- longer accepts the combination of --get and --set, which never actually- worked.)- * Bash completion file is now included in the git-annex source tree,- and installed into Debian package (and any other packages built using make- install). This bash completion is generated by the option parser, so it- covers all commands, all options, and will never go out of date!- * As well as tab completing "git-annex" commands, "git annex" will also tab- complete. However, git's bash completion script needs a patch,- which I've submitted, for this to work prefectly.- * version --raw now works when run outside a git repository.- * assistant --startdelay now works when run outside a git repository.- * dead now accepts multiple --key options.- * addurl now accepts --prefix and --suffix options to adjust the- filenames used.- * sync --content: Fix bug that caused files to be uploaded to eg,- more archive remotes than wanted copies, only to later be dropped- to satisfy the preferred content settings.- * importfeed: Improve detection of known items whose url has changed,- and avoid adding redundant files. Where before this only looked at- permalinks in rss feeds, it now also looks at guids.- * importfeed: Look at not only permalinks, but now also guids- to identify previously downloaded files.- * Webapp: Now features easy setup of git-annex repositories on gitlab.com.- * Adjust debian build deps: The webapp can now build on arm64, s390x- and hurd-i386. WebDAV support is also available on those architectures.- * Debian package now maintained by Richard Hartmann.- * Support building without persistent database on for systems that- lack TH. This removes support for incremental fsck."""]]
− doc/news/version_5.20150731.mdwn
@@ -1,13 +0,0 @@-git-annex 5.20150731 released with [[!toggle text="these changes"]]-[[!toggleable text="""- * webapp: Support enabling known gitlab.com remotes.- * Fix rsync special remote to work when -Jn is used for concurrent- uploads.- * The last release accidentially removed a number of options from the- copy command. (-J, file matching options, etc). These have been added- back.- * init: Detect when the filesystem is crippled such that it ignores- attempts to remove the write bit from a file, and enable direct mode.- Seen with eg, NTFS fuse on linux.- * Fix man page installation by cabal install; all the new man pages are- now installed."""]]
+ doc/news/version_5.20150930.mdwn view
@@ -0,0 +1,19 @@+git-annex 5.20150930 released with [[!toggle text="these changes"]]+[[!toggleable text="""+ * Added new linux standalone "ancient" build to support kernels+ like 2.6.32.+ * info: Don't allow use in a non-git-annex repository, since it+ uses the git-annex branch and would create it if it were missing.+ * assistant: When updating ~/.ssh/config, preserve any symlinks.+ * webapp: Remove the "disable remote" feature from the UI.+ * S3: When built with aws-0.13.0, supports using more storage classes.+ In particular, storageclass=STANDARD\_IA to use Amazon's+ new Infrequently Accessed storage, and storageclass=NEARLINE+ to use Google's NearLine storage.+ * Improve ~/.ssh/config modification code to not add trailing spaces+ to lines it cannot parse.+ * Fix a crash at direct mode merge time when .git/index doesn't exist+ yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of+ a repository.+ * status: Show added but not yet committed files.+ * Added stack.yaml to support easy builds from source with stack."""]]
doc/special_remotes/S3.mdwn view
@@ -37,9 +37,19 @@ "us-west-1", "us-west-2", "ap-southeast-1", "ap-southeast-2", and "sa-east-1". -* `storageclass` - Default is "STANDARD". If you have configured git-annex- to preserve multiple [[copies]], consider setting this to "REDUCED_REDUNDANCY"- to save money.+* `storageclass` - Default is "STANDARD". + Consult S3 provider documentation for pricing details and available+ storage classes.++ When using Amazon S3, if you have configured git-annex to preserve+ multiple [[copies]], consider setting this to "REDUCED_REDUNDANCY"+ to save money. Or, if the remote will be used for backup or archival,+ and so its files are Infrequently Accessed, "STANDARD_IA" is also a+ good choice to save money.++ Note that changing the storage class of an existing S3 remote will+ affect new objects sent to the remote, but not objects already+ stored there. * `host` and `port` - Specify in order to use a different, S3 compatable service.
doc/tips/public_Amazon_S3_remote.mdwn view
@@ -18,7 +18,7 @@ initremote pubs3 (checking bucket) (creating bucket in US) ok The public=yes is the crtical part; this lets the public read the contents-of the bucket.+of the bucket. (This feature needs git-annex 5.20150617 or newer.) In the above example, no encryption was used, but it will also work if you enable encryption=shared. Then files will be encrypted on S3, and
doc/todo/Facilitate_public_pretty_S3_URLs.mdwn view
@@ -14,3 +14,7 @@ The ideal solution in my mind is for git-annex to track the contents of S3 as they are now, preserving the URLs and tracking the checksums in a separate index file. Thank you!++> I don't think this is something git-annex can usefully do.+> Instead, see+> <http://git-annex.branchable.com/tips/public_Amazon_S3_remote/>. [[done]] --[[Joey]]
doc/todo/Nearline_support.mdwn view
@@ -2,3 +2,11 @@ * [Announcement](http://googlecloudplatform.blogspot.in/2015/03/introducing-Google-Cloud-Storage-Nearline-near-online-data-at-an-offline-price.html) * <https://cloud.google.com/storage/docs/nearline-storage>++> This is a dup of+> [[bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage]],+> which has more useful info, so [[closing|done]].+> +> However, that about using its S3 compatability API. There's an external+> special remote just for nearline, which may be a better choice due to+> using the native API, and already works. --[[Joey]]
+ doc/todo/deferred_update_mode.mdwn view
@@ -0,0 +1,28 @@+`git annex sync` and the assistant do a merge of new revs, and then+download the content of files. However, this means that broken links can+show up, when a file has changed, or a new file was added. In some+workflows, the user would prefer not to ever see such broken links+(or at least never for files that are in the repo's preferred content).++So, how about a new mode, that defers updating the work tree until+the content of everything wanted is available?++This could be a annex.merge=downloadfirst setting; it would make sync/assistant+look at the diff between HEAD and the new rev, and try to get all annexed files+added in that diff, before merging it. ++Of course, it could take a long time to get to see a new work tree.+Might have to download a lot of content.++What to do if it fails to download a file's content? Could either+abort, leaving the current work tree as-is, or could go ahead and merge,+letting broken links show up in this case. I kind of prefer the abort+option. But, if the content never reaches any remote, or has gone missing+entirely, that would make sync never succeed. That could be surprising+behavior.++Probably best to let the user pick either behavior, so+annex.merge=trydownloadfirst and annex.merge=reqdownloadfirst++Let `git annex merge` be used to force a merge, even when content is not+available.
doc/todo/find_unused_in_any_commit.mdwn view
@@ -12,3 +12,6 @@ gonna be slooow. Another optimisation would be to get only the objects changed by the commit, and not look at the whole tree as it appeared on each commit. --[[Joey]]++> Closing, --used-refspec allows doing this kind of thing.+> (It can indeed make it slow!) [[done]] --[[Joey]]
doc/todo/make_status_show_staged_files.mdwn view
@@ -21,3 +21,5 @@ ### What version of git-annex are you using? On what operating system? git-annex version: 5.20141024-g613f396++> [[done]] --[[Joey]]
+ doc/todo/xmpp_removal.mdwn view
@@ -0,0 +1,25 @@+I'd like to eventually remove XMPP support from git-annex. --[[Joey]] ++The XMPP feature makes git-annex harder to build (needs a lot of C+libraries), and is increasingly rarely used.++For over a year, git-annex-shell has been able to notify clients when a+change lands in a git repo on a ssh server. This notification is the main+thing XMPP support was used for. Even users without a ssh server of their+own don't need XMPP for this; the feature is supported by GitLab.com.++The only other advantages to keeping XMPP support are:++* Supports peer-to-peer git push over XMPP. Except, this hack has never+ worked very reliably, and exposes the git repo to the XMPP server,+ and needing an XMPP server is not a pure p2p solution anyway.+* Friend discovery and easy sharing of git repo to friends.++It would be nice if there were a pure P2P replacement for XMPP, like+telehash. But, can't wait on that forever..++XMPP support is already disabled by default in some builds of git-annex,+notably the stack build. It's never worked on Windows.++Next step is probably to default the flag to false by default,+except for in a few builds like the Debian package and standalone builds.
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 5.20150916+Version: 5.20150930 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess <id@joeyh.name>
man/git-annex-status.1 view
@@ -7,8 +7,10 @@ .PP .SH DESCRIPTION Similar to \fBgit status \-\-short\fP, this command displays the status of the files-in the working tree. Shows files that are not checked into git, files that have-been deleted, and files that have been modified.+in the working tree. +.PP+Show files that are not checked into git (?), deleted (D),+modified (M), added but not committed (A), and type changed/unlocked (T). .PP Particularly useful in direct mode. .PP
+ stack.yaml view
@@ -0,0 +1,31 @@+flags:+ git-annex:+ asciiprogress: false+ tahoe: true+ tdfa: true+ inotify: true+ feed: true+ database: true+ webapp-secure: true+ production: true+ ekg: false+ assistant: true+ pairing: true+ cryptonite: true+ xmpp: false+ network-uri: true+ s3: true+ dbus: false+ testsuite: true+ webdav: true+ torrentparser: true+ android: false+ androidsplice: false+ quvi: true+ dns: true+ desktopnotify: true+ webapp: true+packages:+- '.'+extra-deps: []+resolver: lts-3.7
templates/repolist.hamlet view
@@ -60,9 +60,6 @@ <a href="@{SyncNowRepositoryR $ asUUID repoid}"> <span .glyphicon .glyphicon-refresh> \ Sync now- <a href="@{DisableRepositoryR $ asUUID repoid}">- <span .glyphicon .glyphicon-minus>- \ Disable <a href="@{DeleteRepositoryR $ asUUID repoid}"> <span .glyphicon .glyphicon-trash> \ Delete