packages feed

git-annex 5.20150916 → 5.20150930

raw patch · 45 files changed

+468/−151 lines, 45 files

Files

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