packages feed

git-annex 5.20140405 → 5.20140412

raw patch · 218 files changed

+774/−4263 lines, 218 filesdep +shakespearedep ~feedbinary-added

Dependencies added: shakespeare

Dependency ranges changed: feed

Files

.gitignore view
@@ -23,6 +23,9 @@ dist # Sandboxed builds cabal-dev+.cabal-sandbox+cabal.sandbox.config+cabal.config # Project-local emacs configuration .dir-locals.el # OSX related
Annex.hs view
@@ -5,7 +5,7 @@  - Licensed under the GNU GPL version 3 or higher.  -} -{-# LANGUAGE GeneralizedNewtypeDeriving, PackageImports #-}+{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, PackageImports #-}  module Annex ( 	Annex,@@ -63,7 +63,9 @@ import Types.CleanupActions import qualified Data.Map as M import qualified Data.Set as S+#ifdef WITH_QUVI import Utility.Quvi (QuviVersion)+#endif  {- git-annex's monad is a ReaderT around an AnnexState stored in a MVar.  - This allows modifying the state in an exception-safe fashion.@@ -117,7 +119,9 @@ 	, useragent :: Maybe String 	, errcounter :: Integer 	, unusedkeys :: Maybe (S.Set Key)+#ifdef WITH_QUVI 	, quviversion :: Maybe QuviVersion+#endif 	, existinghooks :: M.Map Git.Hook.Hook Bool 	, desktopnotify :: DesktopNotify 	}@@ -160,7 +164,9 @@ 	, useragent = Nothing 	, errcounter = 0 	, unusedkeys = Nothing+#ifdef WITH_QUVI 	, quviversion = Nothing+#endif 	, existinghooks = M.empty 	, desktopnotify = mempty 	}
Build/BundledPrograms.hs view
@@ -45,7 +45,12 @@ #endif 	, SysConfig.gpg 	, ifset SysConfig.curl "curl"+#ifndef darwin_HOST_OS+	-- wget on OSX has been problimatic, looking for certs in the wrong+	-- places. Don't ship it, use curl or the OSX's own wget if it has+	-- one. 	, ifset SysConfig.wget "wget"+#endif 	, ifset SysConfig.bup "bup" 	, SysConfig.lsof 	, SysConfig.gcrypt
Build/make-sdist.sh view
@@ -9,11 +9,12 @@  find . \( -name .git -or -name dist -or -name cabal-dev \) -prune \ 	-or -not -name \\*.orig -not -type d -print \-| perl -ne "print unless length >= 100 - length q{$sdist_dir}" \-| xargs cp --parents --target-directory dist/$sdist_dir+	| perl -ne "print unless length >= 100 - length q{$sdist_dir}" \+	| grep -v ':' \+	| xargs cp --parents --target-directory dist/$sdist_dir  cd dist-tar -caf $sdist_dir.tar.gz $sdist_dir+tar --format=ustar -caf $sdist_dir.tar.gz $sdist_dir  # Check that tarball can be unpacked by cabal. # It's picky about tar longlinks etc.
CHANGELOG view
@@ -1,3 +1,25 @@+git-annex (5.20140412) unstable; urgency=high++  * Last release didn't quite fix the high cpu issue in all cases, this should.++ -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 17:14:38 -0400++git-annex (5.20140411) unstable; urgency=high++  * importfeed: Filename template can now contain an itempubdate variable.+    Needs feed 0.3.9.2.+  * Fix rsync progress parsing in locales that use comma in number display.+    Closes: #744148+  * assistant: Fix high CPU usage triggered when a monthly fsck is scheduled,+    and the last time the job ran was a day of the month > 12. This caused a+    runaway loop. Thanks to Anarcat for his assistance, and to Maximiliano+    Curia for identifying the cause of this bug.+  * Remove wget from OSX dmg, due to issues with cert paths that broke+    git-annex automatic upgrading. Instead, curl is used, unless the+    OSX system has wget installed, which will then be used.++ -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 14:59:49 -0400+ git-annex (5.20140405) unstable; urgency=medium    * git-annex-shell: Added notifychanges command.
CmdLine/GitAnnex.hs view
@@ -89,6 +89,7 @@ #ifdef WITH_XMPP import qualified Command.XMPPGit #endif+import qualified Command.RemoteDaemon #endif import qualified Command.Test #ifdef WITH_TESTSUITE@@ -176,6 +177,7 @@ #ifdef WITH_XMPP 	, Command.XMPPGit.def #endif+	, Command.RemoteDaemon.def #endif 	, Command.Test.def #ifdef WITH_TESTSUITE
Command/ImportFeed.hs view
@@ -15,6 +15,8 @@ import qualified Data.Set as S import qualified Data.Map as M import Data.Time.Clock+import Data.Time.Format+import System.Locale  import Common.Annex import qualified Annex@@ -212,6 +214,7 @@ 	, fieldMaybe "itemdescription" $ getItemDescription $ item i 	, fieldMaybe "itemrights" $ getItemRights $ item i 	, fieldMaybe "itemid" $ snd <$> getItemId (item i)+	, fieldMaybe "itempubdate" $ pubdate $ item i 	, ("extension", sanitizeFilePath extension) 	]   where@@ -220,6 +223,12 @@ 		if null s then (k, "none") else (k, s) 	fieldMaybe k Nothing = (k, "none") 	fieldMaybe k (Just v) = field k v++	pubdate itm = case getItemPublishDate itm :: Maybe (Maybe UTCTime) of+		Just (Just d) -> Just $+			formatTime defaultTimeLocale "%F" d+		-- if date cannot be parsed, use the raw string+		_ -> replace "/" "-" <$> getItemPublishDateString itm  {- Called when there is a problem with a feed.  - Throws an error if the feed is broken, otherwise shows a warning. -}
Command/NotifyChanges.hs view
@@ -13,7 +13,7 @@ import Utility.DirWatcher.Types import qualified Git import Git.Sha-import RemoteDaemon.EndPoint.GitAnnexShell.Types+import RemoteDaemon.Transport.Ssh.Types  import Control.Concurrent import Control.Concurrent.Async
+ Command/RemoteDaemon.hs view
@@ -0,0 +1,24 @@+{- git-annex command+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Command.RemoteDaemon where++import Common.Annex+import Command+import RemoteDaemon.Core++def :: [Command]+def = [noCommit $ command "remotedaemon" paramNothing seek SectionPlumbing+	"detects when remotes have changed, and fetches from them"]++seek :: CommandSeek+seek = withNothing start++start :: CommandStart+start = do+	liftIO runForeground+	stop
Command/TransferKeys.hs view
@@ -16,8 +16,7 @@ import Annex.Transfer import qualified Remote import Types.Key--import GHC.IO.Handle+import Utility.SimpleProtocol (ioHandles)  data TransferRequest = TransferRequest Direction Remote Key AssociatedFile @@ -29,7 +28,8 @@ seek = withNothing start  start :: CommandStart-start = withHandles $ \(readh, writeh) -> do+start = do+	(readh, writeh) <- liftIO ioHandles 	runRequests readh writeh runner 	stop   where@@ -43,21 +43,6 @@ 		| otherwise = notifyTransfer direction file $ 			download (Remote.uuid remote) key file forwardRetry $ \p -> 				getViaTmp key $ \t -> Remote.retrieveKeyFile remote key file t p--{- stdin and stdout are connected with the caller, to be used for- - communication with it. But doing a transfer might involve something- - that tries to read from stdin, or write to stdout. To avoid that, close- - stdin, and duplicate stderr to stdout. Return two new handles- - that are duplicates of the original (stdin, stdout). -}-withHandles :: ((Handle, Handle) -> Annex a) -> Annex a-withHandles a = do-	readh <- liftIO $ hDuplicate stdin-	writeh <- liftIO $ hDuplicate stdout-	liftIO $ do-		nullh <- openFile devNull ReadMode-		nullh `hDuplicateTo` stdin-		stderr `hDuplicateTo` stdout-	a (readh, writeh)  runRequests 	:: Handle
Config.hs view
@@ -32,7 +32,10 @@ setConfig :: ConfigKey -> String -> Annex () setConfig (ConfigKey key) value = do 	inRepo $ Git.Command.run [Param "config", Param key, Param value]-	Annex.changeGitRepo =<< inRepo Git.Config.reRead+	reloadConfig++reloadConfig :: Annex ()+reloadConfig = Annex.changeGitRepo =<< inRepo Git.Config.reRead  {- Unsets a git config setting. (Leaves it in state currently.) -} unsetConfig :: ConfigKey -> Annex ()
Git/Types.hs view
@@ -27,7 +27,7 @@ 	| LocalUnknown FilePath 	| Url URI 	| Unknown-	deriving (Show, Eq)+	deriving (Show, Eq, Ord)  data Repo = Repo 	{ location :: RepoLocation@@ -41,7 +41,7 @@ 	, gitEnv :: Maybe [(String, String)] 	-- global options to pass to git when running git commands 	, gitGlobalOpts :: [CommandParam]-	} deriving (Show, Eq)+	} deriving (Show, Eq, Ord)  type RemoteName = String 
Makefile view
@@ -140,7 +140,7 @@ osxapp: Build/Standalone Build/OSXMkLibs 	$(MAKE) git-annex -	rm -rf "$(OSXAPP_DEST)"+	rm -rf "$(OSXAPP_DEST)" "$(OSXAPP_BASE)" 	install -d tmp/build-dmg 	cp -R standalone/osx/git-annex.app "$(OSXAPP_DEST)" 
+ RemoteDaemon/Common.hs view
@@ -0,0 +1,42 @@+{- git-remote-daemon utilities+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module RemoteDaemon.Common+	( liftAnnex+	, inLocalRepo+	, checkNewShas+	) where++import qualified Annex+import Common.Annex+import RemoteDaemon.Types+import qualified Git+import Annex.CatFile++import Control.Concurrent++-- Runs an Annex action. Long-running actions should be avoided,+-- since only one liftAnnex can be running at a time, amoung all+-- transports.+liftAnnex :: TransportHandle -> Annex a -> IO a+liftAnnex (TransportHandle _ annexstate) a = do+	st <- takeMVar annexstate+	(r, st') <- Annex.run st a+	putMVar annexstate st'+	return r++inLocalRepo :: TransportHandle -> (Git.Repo -> IO a) -> IO a+inLocalRepo (TransportHandle g _) a = a g++-- Check if any of the shas are actally new in the local git repo,+-- to avoid unnecessary fetching.+checkNewShas :: TransportHandle -> [Git.Sha] -> IO Bool+checkNewShas transporthandle = check+  where+	check [] = return True+	check (r:rs) = maybe (check rs) (const $ return False)+		=<< liftAnnex transporthandle (catObjectDetails r)
+ RemoteDaemon/Core.hs view
@@ -0,0 +1,118 @@+{- git-remote-daemon core+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module RemoteDaemon.Core (runForeground) where++import qualified Annex+import Common+import Types.GitConfig+import RemoteDaemon.Common+import RemoteDaemon.Types+import RemoteDaemon.Transport+import qualified Git+import qualified Git.Types as Git+import qualified Git.CurrentRepo+import Utility.SimpleProtocol+import Config++import Control.Concurrent.Async+import Control.Concurrent+import Network.URI+import qualified Data.Map as M++runForeground :: IO ()+runForeground = do+	(readh, writeh) <- ioHandles+	ichan <- newChan :: IO (Chan Consumed)+	ochan <- newChan :: IO (Chan Emitted)++	let reader = forever $ do+		l <- hGetLine readh+		case parseMessage l of+			Nothing -> error $ "protocol error: " ++ l+			Just cmd -> writeChan ichan cmd+	let writer = forever $ do+		msg <- readChan ochan+		hPutStrLn writeh $ unwords $ formatMessage msg+		hFlush writeh+	let controller = runController ichan ochan+	+	-- If any thread fails, the rest will be killed.+	void $ tryIO $+		reader `concurrently` writer `concurrently` controller++type RemoteMap = M.Map Git.Repo (IO (), Chan Consumed)++-- Runs the transports, dispatching messages to them, and handling+-- the main control messages.+runController :: Chan Consumed -> Chan Emitted -> IO ()+runController ichan ochan = do+	h <- genTransportHandle+	m <- genRemoteMap h ochan+	startrunning m+	go h False m+  where+	go h paused m = do+		cmd <- readChan ichan+		case cmd of+			RELOAD -> do+				liftAnnex h reloadConfig+				m' <- genRemoteMap h ochan+				let common = M.intersection m m'+				let new = M.difference m' m+				let old = M.difference m m'+				stoprunning old+				unless paused $+					startrunning new+				go h paused (M.union common new)+			PAUSE -> do+				stoprunning m+				go h True m+			RESUME -> do+				when paused $+					startrunning m+				go h False m+			STOP -> exitSuccess+			-- All remaining messages are sent to+			-- all Transports.+			msg -> do+				unless paused $+					forM_ chans (`writeChan` msg)+				go h paused m+	  where+		chans = map snd (M.elems m)++	startrunning m = forM_ (M.elems m) startrunning'+	startrunning' (transport, _) = void $ async transport+	+	-- Ask the transport nicely to stop.+	stoprunning m = forM_ (M.elems m) stoprunning'+	stoprunning' (_, c) = writeChan c STOP++-- Generates a map with a transport for each supported remote in the git repo,+-- except those that have annex.sync = false+genRemoteMap :: TransportHandle -> Chan Emitted -> IO RemoteMap+genRemoteMap h@(TransportHandle g _) ochan =+	M.fromList . catMaybes <$> mapM gen (Git.remotes g)+  where+	gen r = case Git.location r of+		Git.Url u -> case M.lookup (uriScheme u) remoteTransports of+			Just transport+				| remoteAnnexSync (extractRemoteGitConfig r (Git.repoDescribe r)) -> do+					ichan <- newChan :: IO (Chan Consumed)+					return $ Just+						( r+						, (transport r (Git.repoDescribe r) h ichan ochan, ichan)+						)+			_ -> return Nothing+		_ -> return Nothing++genTransportHandle :: IO TransportHandle+genTransportHandle = do+	annexstate <- newMVar =<< Annex.new =<< Git.CurrentRepo.get+	g <- Annex.repo <$> readMVar annexstate+	return $ TransportHandle g annexstate
− RemoteDaemon/EndPoint/GitAnnexShell/Types.hs
@@ -1,32 +0,0 @@-{- git-remote-daemon, git-annex-shell endpoint, datatypes- -- - Copyright 2014 Joey Hess <joey@kitenet.net>- -- - Licensed under the GNU GPL version 3 or higher.- -}--{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--module RemoteDaemon.EndPoint.GitAnnexShell.Types (-	Notification(..),-	Proto.serialize,-	Proto.deserialize,-	Proto.formatMessage,-) where--import qualified Utility.SimpleProtocol as Proto-import RemoteDaemon.Types (ShaList)--data Notification-	= READY-	| CHANGED ShaList--instance Proto.Sendable Notification where-	formatMessage READY = ["READY"]-	formatMessage (CHANGED shas) = ["CHANGED", Proto.serialize shas]--instance Proto.Receivable Notification where-	parseCommand "READY" = Proto.parse0 READY-	parseCommand "CHANGED" = Proto.parse1 CHANGED-	parseCommand _ = Proto.parseFail
+ RemoteDaemon/Transport.hs view
@@ -0,0 +1,21 @@+{- git-remote-daemon transports+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module RemoteDaemon.Transport where++import RemoteDaemon.Types+import qualified RemoteDaemon.Transport.Ssh++import qualified Data.Map as M++-- Corresponds to uriScheme+type TransportScheme = String++remoteTransports :: M.Map TransportScheme Transport+remoteTransports = M.fromList+	[ ("ssh:", RemoteDaemon.Transport.Ssh.transport)+	]
+ RemoteDaemon/Transport/Ssh.hs view
@@ -0,0 +1,72 @@+{- git-remote-daemon, git-annex-shell over ssh transport+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module RemoteDaemon.Transport.Ssh (transport) where++import Common.Annex+import RemoteDaemon.Types+import RemoteDaemon.Common+import Remote.Helper.Ssh+import qualified RemoteDaemon.Transport.Ssh.Types as SshRemote+import Utility.SimpleProtocol+import Git.Command++import Control.Concurrent.Chan+import Control.Concurrent.Async+import System.Process (std_in, std_out)++transport :: Transport+transport r remotename transporthandle ichan ochan = do+	v <- liftAnnex transporthandle $ git_annex_shell r "notifychanges" [] []+	case v of+		Nothing -> noop+		Just (cmd, params) -> go cmd (toCommand params)+  where+	go cmd params = do+		(Just toh, Just fromh, _, pid) <- createProcess (proc cmd params)+			{ std_in = CreatePipe+			, std_out = CreatePipe+			}+		+		let shutdown = do+			hClose toh+			hClose fromh+			void $ waitForProcess pid+			send DISCONNECTED++		let fromshell = forever $ do+			l <- hGetLine fromh+			case parseMessage l of+				Just SshRemote.READY -> send CONNECTED+				Just (SshRemote.CHANGED shas) ->+					whenM (checkNewShas transporthandle shas) $+						fetch+				Nothing -> shutdown++		-- The only control message that matters is STOP.+		--+		-- Note that a CHANGED control message is not handled;+		-- we don't push to the ssh remote. The assistant+		-- and git-annex sync both handle pushes, so there's no+		-- need to do it here.+		let handlecontrol = forever $ do+			msg <- readChan ichan+			case msg of+				STOP -> ioError (userError "done")+				_ -> noop++		-- Run both threads until one finishes.+		void $ tryIO $ concurrently fromshell handlecontrol+		shutdown++	send msg = writeChan ochan (msg remotename)++	fetch = do+		send SYNCING+		ok <- inLocalRepo transporthandle $+			runBool [Param "fetch", Param remotename]+		send (DONESYNCING ok)
+ RemoteDaemon/Transport/Ssh/Types.hs view
@@ -0,0 +1,32 @@+{- git-remote-daemon, git-annex-shell notifychanges protocol types+ -+ - Copyright 2014 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module RemoteDaemon.Transport.Ssh.Types (+	Notification(..),+	Proto.serialize,+	Proto.deserialize,+	Proto.formatMessage,+) where++import qualified Utility.SimpleProtocol as Proto+import RemoteDaemon.Types (RefList)++data Notification+	= READY+	| CHANGED RefList++instance Proto.Sendable Notification where+	formatMessage READY = ["READY"]+	formatMessage (CHANGED shas) = ["CHANGED", Proto.serialize shas]++instance Proto.Receivable Notification where+	parseCommand "READY" = Proto.parse0 READY+	parseCommand "CHANGED" = Proto.parse1 CHANGED+	parseCommand _ = Proto.parseFail
RemoteDaemon/Types.hs view
@@ -10,74 +10,84 @@  module RemoteDaemon.Types where +import qualified Annex import qualified Git.Types as Git import qualified Utility.SimpleProtocol as Proto +import Control.Concurrent++-- A Transport for a particular git remote consumes some messages+-- from a Chan, and emits others to another Chan.+type Transport = RemoteRepo -> RemoteName -> TransportHandle -> Chan Consumed -> Chan Emitted -> IO ()++type RemoteRepo = Git.Repo+type LocalRepo = Git.Repo++-- All Transports share a single AnnexState MVar+data TransportHandle = TransportHandle LocalRepo (MVar Annex.AnnexState)+ -- Messages that the daemon emits. data Emitted 	= CONNECTED RemoteName 	| DISCONNECTED RemoteName-	| CHANGED RemoteName ShaList-	| STATUS RemoteName UserMessage-	| ERROR RemoteName UserMessage+	| SYNCING RemoteName+	| DONESYNCING Bool RemoteName  -- Messages that the deamon consumes. data Consumed 	= PAUSE 	| RESUME-	| PUSH RemoteName+	| CHANGED RefList 	| RELOAD+	| STOP  type RemoteName = String-type UserMessage = String-type ShaList = [Git.Sha]+type RefList = [Git.Ref]  instance Proto.Sendable Emitted where 	formatMessage (CONNECTED remote) = 		["CONNECTED", Proto.serialize remote] 	formatMessage (DISCONNECTED remote) = 		["DISCONNECTED", Proto.serialize remote]-	formatMessage (CHANGED remote shas) =-		["CHANGED"-		, Proto.serialize remote-		, Proto.serialize shas-		]-	formatMessage (STATUS remote msg) =-		["STATUS"-		, Proto.serialize remote-		, Proto.serialize msg-		]-	formatMessage (ERROR remote msg) =-		["ERROR"-		, Proto.serialize remote-		, Proto.serialize msg-		]+	formatMessage (SYNCING remote) =+		["SYNCING", Proto.serialize remote]+	formatMessage (DONESYNCING status remote) =+		["DONESYNCING", Proto.serialize status, Proto.serialize remote]  instance Proto.Sendable Consumed where 	formatMessage PAUSE = ["PAUSE"] 	formatMessage RESUME = ["RESUME"]-	formatMessage (PUSH remote) = ["PUSH", Proto.serialize remote]+	formatMessage (CHANGED refs) =["CHANGED", Proto.serialize refs] 	formatMessage RELOAD = ["RELOAD"]+	formatMessage STOP = ["STOP"]  instance Proto.Receivable Emitted where 	parseCommand "CONNECTED" = Proto.parse1 CONNECTED 	parseCommand "DISCONNECTED" = Proto.parse1 DISCONNECTED-	parseCommand "CHANGED" = Proto.parse2 CHANGED-	parseCommand "STATUS" = Proto.parse2 STATUS-	parseCommand "ERROR" = Proto.parse2 ERROR+	parseCommand "SYNCING" = Proto.parse1 SYNCING+	parseCommand "DONESYNCING" = Proto.parse2 DONESYNCING 	parseCommand _ = Proto.parseFail  instance Proto.Receivable Consumed where 	parseCommand "PAUSE" = Proto.parse0 PAUSE 	parseCommand "RESUME" = Proto.parse0 RESUME-	parseCommand "PUSH" = Proto.parse1 PUSH+	parseCommand "CHANGED" = Proto.parse1 CHANGED 	parseCommand "RELOAD" = Proto.parse0 RELOAD+	parseCommand "STOP" = Proto.parse0 STOP 	parseCommand _ = Proto.parseFail  instance Proto.Serializable [Char] where 	serialize = id 	deserialize = Just -instance Proto.Serializable ShaList where+instance Proto.Serializable RefList where 	serialize = unwords . map Git.fromRef 	deserialize = Just . map Git.Ref . words++instance Proto.Serializable Bool where+	serialize False = "0"+	serialize True = "1"++	deserialize "0" = Just False+	deserialize "1" = Just True+	deserialize _ = Nothing
Utility/Rsync.hs view
@@ -124,6 +124,9 @@  - after the \r is the number of bytes processed. After the number,  - there must appear some whitespace, or we didn't get the whole number,  - and return the \r and part we did get, for later processing.+ -+ - In some locales, the number will have one or more commas in the middle+ - of it.  -} parseRsyncProgress :: String -> (Maybe Integer, String) parseRsyncProgress = go [] . reverse . progresschunks@@ -142,7 +145,7 @@ 	parsebytes s = case break isSpace s of 		([], _) -> Nothing 		(_, []) -> Nothing-		(b, _) -> readish b+		(b, _) -> readish $ filter (/= ',') b  {- Filters options to those that are safe to pass to rsync in server mode,  - without causing it to eg, expose files. -}
Utility/Scheduled.hs view
@@ -10,7 +10,11 @@ 	Recurrance(..), 	ScheduledTime(..), 	NextTime(..),+	WeekDay,+	MonthDay,+	YearDay, 	nextTime,+	startTime, 	fromSchedule, 	fromScheduledTime, 	toScheduledTime,@@ -21,9 +25,13 @@ 	prop_schedule_roundtrips ) where -import Common+import Utility.Data import Utility.QuickCheck+import Utility.PartialPrelude+import Utility.Misc +import Control.Applicative+import Data.List import Data.Time.Clock import Data.Time.LocalTime import Data.Time.Calendar@@ -41,9 +49,9 @@ 	| Weekly (Maybe WeekDay) 	| Monthly (Maybe MonthDay) 	| Yearly (Maybe YearDay)-	-- Days, Weeks, or Months of the year evenly divisible by a number.-	-- (Divisible Year is years evenly divisible by a number.) 	| Divisible Int Recurrance+	-- ^ Days, Weeks, or Months of the year evenly divisible by a number.+	-- (Divisible Year is years evenly divisible by a number.)   deriving (Eq, Read, Show, Ord)  type WeekDay = Int@@ -78,7 +86,7 @@ {- Calculate the next time that fits a Schedule, based on the  - last time it occurred, and the current time. -} calcNextTime :: Schedule -> Maybe LocalTime -> LocalTime -> Maybe NextTime-calcNextTime (Schedule recurrance scheduledtime) lasttime currenttime+calcNextTime schedule@(Schedule recurrance scheduledtime) lasttime currenttime 	| scheduledtime == AnyTime = do 		next <- findfromtoday True 		return $ case next of@@ -100,65 +108,71 @@ 	window startd endd = NextTimeWindow 		(LocalTime startd nexttime) 		(LocalTime endd (TimeOfDay 23 59 0))-	findfrom r afterday day = case r of+	findfrom r afterday candidate+		| ynum candidate > (ynum (localDay currenttime)) + 100 =+			-- avoid possible infinite recusion+			error $ "bug: calcNextTime did not find a time within 100 years to run " +++			show (schedule, lasttime, currenttime)+		| otherwise = findfromChecked r afterday candidate+	findfromChecked r afterday candidate = case r of 		Daily-			| afterday -> Just $ exactly $ addDays 1 day-			| otherwise -> Just $ exactly day+			| afterday -> Just $ exactly $ addDays 1 candidate+			| otherwise -> Just $ exactly candidate 		Weekly Nothing 			| afterday -> skip 1-			| otherwise -> case (wday <$> lastday, wday day) of-				(Nothing, _) -> Just $ window day (addDays 6 day)+			| otherwise -> case (wday <$> lastday, wday candidate) of+				(Nothing, _) -> Just $ window candidate (addDays 6 candidate) 				(Just old, curr)-					| old == curr -> Just $ window day (addDays 6 day)+					| old == curr -> Just $ window candidate (addDays 6 candidate) 					| otherwise -> skip 1 		Monthly Nothing 			| afterday -> skip 1-			| maybe True (\old -> mnum day > mday old && mday day >= (mday old `mod` minmday)) lastday ->+			| maybe True (\old -> mday candidate > mday old && mday candidate >= (mday old `mod` minmday)) lastday -> 				-- Window only covers current month, 				-- in case there is a Divisible requirement.-				Just $ window day (endOfMonth day)+				Just $ window candidate (endOfMonth candidate) 			| otherwise -> skip 1 		Yearly Nothing 			| afterday -> skip 1-			| maybe True (\old -> ynum day > ynum old && yday day >= (yday old `mod` minyday)) lastday ->-				Just $ window day (endOfYear day)+			| maybe True (\old -> ynum candidate > ynum old && yday candidate >= (yday old `mod` minyday)) lastday ->+				Just $ window candidate (endOfYear candidate) 			| otherwise -> skip 1 		Weekly (Just w) 			| w < 0 || w > maxwday -> Nothing-			| w == wday day -> if afterday-				then Just $ exactly $ addDays 7 day-				else Just $ exactly day+			| w == wday candidate -> if afterday+				then Just $ exactly $ addDays 7 candidate+				else Just $ exactly candidate 			| otherwise -> Just $ exactly $-				addDays (fromIntegral $ (w - wday day) `mod` 7) day+				addDays (fromIntegral $ (w - wday candidate) `mod` 7) candidate 		Monthly (Just m) 			| m < 0 || m > maxmday -> Nothing 			-- TODO can be done more efficiently than recursing-			| m == mday day -> if afterday+			| m == mday candidate -> if afterday 				then skip 1-				else Just $ exactly day+				else Just $ exactly candidate 			| otherwise -> skip 1 		Yearly (Just y) 			| y < 0 || y > maxyday -> Nothing-			| y == yday day -> if afterday+			| y == yday candidate -> if afterday 				then skip 365-				else Just $ exactly day+				else Just $ exactly candidate 			| otherwise -> skip 1 		Divisible n r'@Daily -> handlediv n r' yday (Just maxyday) 		Divisible n r'@(Weekly _) -> handlediv n r' wnum (Just maxwnum) 		Divisible n r'@(Monthly _) -> handlediv n r' mnum (Just maxmnum) 		Divisible n r'@(Yearly _) -> handlediv n r' ynum Nothing-		Divisible _ r'@(Divisible _ _) -> findfrom r' afterday day+		Divisible _ r'@(Divisible _ _) -> findfrom r' afterday candidate 	  where-	  	skip n = findfrom r False (addDays n day)+	  	skip n = findfrom r False (addDays n candidate) 	  	handlediv n r' getval mmax 			| n > 0 && maybe True (n <=) mmax =-				findfromwhere r' (divisible n . getval) afterday day+				findfromwhere r' (divisible n . getval) afterday candidate 			| otherwise = Nothing-	findfromwhere r p afterday day+	findfromwhere r p afterday candidate 		| maybe True (p . getday) next = next 		| otherwise = maybe Nothing (findfromwhere r p True . getday) next 	  where-		next = findfrom r afterday day+		next = findfrom r afterday candidate 		getday = localDay . startTime 	divisible n v = v `rem` n == 0 
Utility/SimpleProtocol.hs view
@@ -16,12 +16,13 @@ 	parse1, 	parse2, 	parse3,+	ioHandles, ) where -import Control.Applicative import Data.Char+import GHC.IO.Handle -import Utility.Misc+import Common  -- Messages that can be sent. class Sendable m where@@ -73,3 +74,17 @@  splitWord :: String -> (String, String) splitWord = separate isSpace++{- When a program speaks a simple protocol over stdio, any other output+ - to stdout (or anything that attempts to read from stdin)+ - will mess up the protocol. To avoid that, close stdin, and + - and duplicate stderr to stdout. Return two new handles+ - that are duplicates of the original (stdin, stdout). -}+ioHandles :: IO (Handle, Handle)+ioHandles = do+	readh <- hDuplicate stdin+	writeh <- hDuplicate stdout+	nullh <- openFile devNull ReadMode+	nullh `hDuplicateTo` stdin+	stderr `hDuplicateTo` stdout+	return (readh, writeh)
debian/changelog view
@@ -1,3 +1,25 @@+git-annex (5.20140412) unstable; urgency=high++  * Last release didn't quite fix the high cpu issue in all cases, this should.++ -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 17:14:38 -0400++git-annex (5.20140411) unstable; urgency=high++  * importfeed: Filename template can now contain an itempubdate variable.+    Needs feed 0.3.9.2.+  * Fix rsync progress parsing in locales that use comma in number display.+    Closes: #744148+  * assistant: Fix high CPU usage triggered when a monthly fsck is scheduled,+    and the last time the job ran was a day of the month > 12. This caused a+    runaway loop. Thanks to Anarcat for his assistance, and to Maximiliano+    Curia for identifying the cause of this bug.+  * Remove wget from OSX dmg, due to issues with cert paths that broke+    git-annex automatic upgrading. Instead, curl is used, unless the+    OSX system has wget installed, which will then be used.++ -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 14:59:49 -0400+ git-annex (5.20140405) unstable; urgency=medium    * git-annex-shell: Added notifychanges command.
debian/control view
@@ -55,7 +55,7 @@ 	libghc-xml-types-dev, 	libghc-async-dev, 	libghc-http-dev,-	libghc-feed-dev,+	libghc-feed-dev (>= 0.3.9.2), 	libghc-regex-tdfa-dev [!mipsel !s390], 	libghc-regex-compat-dev [mipsel s390], 	libghc-tasty-dev (>= 0.7) [!mipsel !sparc],
+ doc/assistant/connection.png view

binary file changed (absent → 3181 bytes)

doc/assistant/release_notes.mdwn view
@@ -1,3 +1,14 @@+## version 5.20140411++This release fixes a bug that could cause the assistant to use a *lot* of+CPU, when monthly fscking was set up.++Automatic upgrading was broken on OSX for previous versions. This has been+fixed, but you'll need to manually upgrade to this version to get it going+again. (Note that the fix is currently only available in the daily builds,+not a released version.) Workaround: Remove the wget bundled inside the+git-annex dmg.+ ## version 5.20140221  The Windows port of the assistant and webapp is now considered to be beta
− doc/bugs/3.20121112:_build_error_in_assistant.mdwn
@@ -1,432 +0,0 @@-Git-annex stopped compiling with GHC 7.4.2 after updating Yesod and friends to the respective latest version. The complete build log is attached below. I hope this helps. Further build logs are available at <http://hydra.nixos.org/job/nixpkgs/trunk/gitAndTools.gitAnnex>, too.--    building-    make flags:  PREFIX=/nix/store/9az61h33v1j6fkdmwdfy7gi0rhspsb9k-git-annex-3.20121112-    building Build/SysConfig.hs-    ghc -O2 -Wall -outputdir tmp -IUtility  -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_DNS -DWITH_INOTIFY -DWITH_DBUS -threaded --make configure[b-    [1 of 7] Compiling Utility.Exception ( Utility/Exception.hs, tmp/Utility/Exception.o )-    [2 of 7] Compiling Utility.Misc     ( Utility/Misc.hs, tmp/Utility/Misc.o )-    [3 of 7] Compiling Utility.Process  ( Utility/Process.hs, tmp/Utility/Process.o )-    [4 of 7] Compiling Utility.SafeCommand ( Utility/SafeCommand.hs, tmp/Utility/SafeCommand.o )-    [5 of 7] Compiling Build.TestConfig ( Build/TestConfig.hs, tmp/Build/TestConfig.o )-    [6 of 7] Compiling Build.Configure  ( Build/Configure.hs, tmp/Build/Configure.o )-    [7 of 7] Compiling Main             ( configure.hs, tmp/Main.o )-    Linking configure ...-    ./configure-      checking version... 3.20121112-      checking git... yes-      checking git version... 1.8.0-      checking cp -a... yes-      checking cp -p... yes-      checking cp --reflink=auto... yes-      checking uuid generator... uuidgen-      checking xargs -0... yes-      checking rsync... yes-      checking curl... yes-      checking wget... no-      checking bup... no-      checking gpg... no-      checking lsof... no-      checking ssh connection caching... yes-      checking sha1... sha1sum-      checking sha256... sha256sum-      checking sha512... sha512sum-      checking sha224... sha224sum-      checking sha384... sha384sum-    building Utility/Touch.hs-    hsc2hs Utility/Touch.hsc[b-    building Utility/Mounts.hs-    hsc2hs Utility/Mounts.hsc[b-    building Utility/libdiskfree.o-    cc -Wall   -c -o Utility/libdiskfree.o Utility/libdiskfree.c[b-    building Utility/libmounts.o-    cc -Wall   -c -o Utility/libmounts.o Utility/libmounts.c[b-    building git-annex-    install -d tmp[b-    ghc -O2 -Wall -outputdir tmp -IUtility  -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_DNS -DWITH_INOTIFY -DWITH_DBUS -threaded --make git-annex -o tmp/git-annex Utility/libdiskfree.o Utility/libmounts.o[b-    [  1 of 279] Compiling Utility.Dot      ( Utility/Dot.hs, tmp/Utility/Dot.o )-    [  2 of 279] Compiling Utility.ThreadLock ( Utility/ThreadLock.hs, tmp/Utility/ThreadLock.o )-    [  3 of 279] Compiling Utility.Mounts   ( Utility/Mounts.hs, tmp/Utility/Mounts.o )-    [  4 of 279] Compiling Utility.Yesod    ( Utility/Yesod.hs, tmp/Utility/Yesod.o )-    [  5 of 279] Compiling Utility.Tense    ( Utility/Tense.hs, tmp/Utility/Tense.o )-    [  6 of 279] Compiling Utility.Verifiable ( Utility/Verifiable.hs, tmp/Utility/Verifiable.o )-    [  7 of 279] Compiling Assistant.Types.TransferSlots ( Assistant/Types/TransferSlots.hs, tmp/Assistant/Types/TransferSlots.o )-    [  8 of 279] Compiling Types.StandardGroups ( Types/StandardGroups.hs, tmp/Types/StandardGroups.o )-    [  9 of 279] Compiling Utility.Percentage ( Utility/Percentage.hs, tmp/Utility/Percentage.o )-    [ 10 of 279] Compiling Utility.Base64   ( Utility/Base64.hs, tmp/Utility/Base64.o )-    [ 11 of 279] Compiling Utility.DataUnits ( Utility/DataUnits.hs, tmp/Utility/DataUnits.o )-    [ 12 of 279] Compiling Utility.JSONStream ( Utility/JSONStream.hs, tmp/Utility/JSONStream.o )-    [ 13 of 279] Compiling Messages.JSON    ( Messages/JSON.hs, tmp/Messages/JSON.o )-    [ 14 of 279] Compiling Build.SysConfig  ( Build/SysConfig.hs, tmp/Build/SysConfig.o )-    [ 15 of 279] Compiling Types.KeySource  ( Types/KeySource.hs, tmp/Types/KeySource.o )-    [ 16 of 279] Compiling Utility.State    ( Utility/State.hs, tmp/Utility/State.o )-    [ 17 of 279] Compiling Types.UUID       ( Types/UUID.hs, tmp/Types/UUID.o )-    [ 18 of 279] Compiling Types.Messages   ( Types/Messages.hs, tmp/Types/Messages.o )-    [ 19 of 279] Compiling Types.Group      ( Types/Group.hs, tmp/Types/Group.o )-    [ 20 of 279] Compiling Types.TrustLevel ( Types/TrustLevel.hs, tmp/Types/TrustLevel.o )-    [ 21 of 279] Compiling Types.BranchState ( Types/BranchState.hs, tmp/Types/BranchState.o )-    [ 22 of 279] Compiling Utility.PartialPrelude ( Utility/PartialPrelude.hs, tmp/Utility/PartialPrelude.o )-    [ 23 of 279] Compiling Utility.HumanTime ( Utility/HumanTime.hs, tmp/Utility/HumanTime.o )-    [ 24 of 279] Compiling Utility.Format   ( Utility/Format.hs, tmp/Utility/Format.o )-    [ 25 of 279] Compiling Utility.FileSystemEncoding ( Utility/FileSystemEncoding.hs, tmp/Utility/FileSystemEncoding.o )-    [ 26 of 279] Compiling Utility.Touch    ( Utility/Touch.hs, tmp/Utility/Touch.o )-    [ 27 of 279] Compiling Utility.Applicative ( Utility/Applicative.hs, tmp/Utility/Applicative.o )-    [ 28 of 279] Compiling Utility.Monad    ( Utility/Monad.hs, tmp/Utility/Monad.o )-    [ 29 of 279] Compiling Utility.Exception ( Utility/Exception.hs, tmp/Utility/Exception.o )-    [ 30 of 279] Compiling Utility.DBus     ( Utility/DBus.hs, tmp/Utility/DBus.o )-    [ 31 of 279] Compiling Utility.Misc     ( Utility/Misc.hs, tmp/Utility/Misc.o )-    [ 32 of 279] Compiling Utility.Process  ( Utility/Process.hs, tmp/Utility/Process.o )-    [ 33 of 279] Compiling Utility.SafeCommand ( Utility/SafeCommand.hs, tmp/Utility/SafeCommand.o )-    [ 34 of 279] Compiling Utility.Network  ( Utility/Network.hs, tmp/Utility/Network.o )-    [ 35 of 279] Compiling Utility.SRV      ( Utility/SRV.hs, tmp/Utility/SRV.o )--    Utility/SRV.hs:88:1: Warning: Defined but not used: `lookupSRVHost'--    Utility/SRV.hs:94:1: Warning: Defined but not used: `parseSrvHost'-    [ 36 of 279] Compiling Git.Types        ( Git/Types.hs, tmp/Git/Types.o )-    [ 37 of 279] Compiling Utility.UserInfo ( Utility/UserInfo.hs, tmp/Utility/UserInfo.o )-    [ 38 of 279] Compiling Utility.Path     ( Utility/Path.hs, tmp/Utility/Path.o )-    [ 39 of 279] Compiling Utility.TempFile ( Utility/TempFile.hs, tmp/Utility/TempFile.o )-    [ 40 of 279] Compiling Utility.Directory ( Utility/Directory.hs, tmp/Utility/Directory.o )-    [ 41 of 279] Compiling Utility.FreeDesktop ( Utility/FreeDesktop.hs, tmp/Utility/FreeDesktop.o )-    [ 42 of 279] Compiling Assistant.Install.AutoStart ( Assistant/Install/AutoStart.hs, tmp/Assistant/Install/AutoStart.o )-    [ 43 of 279] Compiling Common           ( Common.hs, tmp/Common.o )-    [ 44 of 279] Compiling Utility.FileMode ( Utility/FileMode.hs, tmp/Utility/FileMode.o )-    [ 45 of 279] Compiling Git              ( Git.hs, tmp/Git.o )-    [ 46 of 279] Compiling Git.FilePath     ( Git/FilePath.hs, tmp/Git/FilePath.o )-    [ 47 of 279] Compiling Utility.Matcher  ( Utility/Matcher.hs, tmp/Utility/Matcher.o )-    [ 48 of 279] Compiling Utility.Gpg      ( Utility/Gpg.hs, tmp/Utility/Gpg.o )-    [ 49 of 279] Compiling Types.Crypto     ( Types/Crypto.hs, tmp/Types/Crypto.o )-    [ 50 of 279] Compiling Types.Key        ( Types/Key.hs, tmp/Types/Key.o )-    [ 51 of 279] Compiling Types.Backend    ( Types/Backend.hs, tmp/Types/Backend.o )-    [ 52 of 279] Compiling Types.Remote     ( Types/Remote.hs, tmp/Types/Remote.o )-    [ 53 of 279] Compiling Git.Sha          ( Git/Sha.hs, tmp/Git/Sha.o )-    [ 54 of 279] Compiling Utility.CoProcess ( Utility/CoProcess.hs, tmp/Utility/CoProcess.o )-    [ 55 of 279] Compiling Git.Command      ( Git/Command.hs, tmp/Git/Command.o )-    [ 56 of 279] Compiling Git.Ref          ( Git/Ref.hs, tmp/Git/Ref.o )-    [ 57 of 279] Compiling Git.Branch       ( Git/Branch.hs, tmp/Git/Branch.o )-    [ 58 of 279] Compiling Git.UpdateIndex  ( Git/UpdateIndex.hs, tmp/Git/UpdateIndex.o )-    [ 59 of 279] Compiling Git.Queue        ( Git/Queue.hs, tmp/Git/Queue.o )-    [ 60 of 279] Compiling Git.HashObject   ( Git/HashObject.hs, tmp/Git/HashObject.o )-    [ 61 of 279] Compiling Git.CatFile      ( Git/CatFile.hs, tmp/Git/CatFile.o )-    [ 62 of 279] Compiling Git.UnionMerge   ( Git/UnionMerge.hs, tmp/Git/UnionMerge.o )-    [ 63 of 279] Compiling Git.Url          ( Git/Url.hs, tmp/Git/Url.o )-    [ 64 of 279] Compiling Git.Construct    ( Git/Construct.hs, tmp/Git/Construct.o )-    [ 65 of 279] Compiling Git.Config       ( Git/Config.hs, tmp/Git/Config.o )-    [ 66 of 279] Compiling Git.SharedRepository ( Git/SharedRepository.hs, tmp/Git/SharedRepository.o )-    [ 67 of 279] Compiling Git.Version      ( Git/Version.hs, tmp/Git/Version.o )-    [ 68 of 279] Compiling Git.CheckAttr    ( Git/CheckAttr.hs, tmp/Git/CheckAttr.o )-    [ 69 of 279] Compiling Annex            ( Annex.hs, tmp/Annex.o )-    [ 70 of 279] Compiling Types.Option     ( Types/Option.hs, tmp/Types/Option.o )-    [ 71 of 279] Compiling Types            ( Types.hs, tmp/Types.o )-    [ 72 of 279] Compiling Messages         ( Messages.hs, tmp/Messages.o )-    [ 73 of 279] Compiling Types.Command    ( Types/Command.hs, tmp/Types/Command.o )-    [ 74 of 279] Compiling Locations        ( Locations.hs, tmp/Locations.o )-    [ 75 of 279] Compiling Common.Annex     ( Common/Annex.hs, tmp/Common/Annex.o )-    [ 76 of 279] Compiling Fields           ( Fields.hs, tmp/Fields.o )-    [ 77 of 279] Compiling Annex.BranchState ( Annex/BranchState.hs, tmp/Annex/BranchState.o )-    [ 78 of 279] Compiling Annex.CatFile    ( Annex/CatFile.hs, tmp/Annex/CatFile.o )-    [ 79 of 279] Compiling Annex.Perms      ( Annex/Perms.hs, tmp/Annex/Perms.o )-    [ 80 of 279] Compiling Crypto           ( Crypto.hs, tmp/Crypto.o )-    [ 81 of 279] Compiling Annex.Exception  ( Annex/Exception.hs, tmp/Annex/Exception.o )-    [ 82 of 279] Compiling Annex.Journal    ( Annex/Journal.hs, tmp/Annex/Journal.o )-    [ 83 of 279] Compiling Annex.Branch     ( Annex/Branch.hs, tmp/Annex/Branch.o )-    [ 84 of 279] Compiling Usage            ( Usage.hs, tmp/Usage.o )-    [ 85 of 279] Compiling Annex.CheckAttr  ( Annex/CheckAttr.hs, tmp/Annex/CheckAttr.o )-    [ 86 of 279] Compiling Remote.Helper.Special ( Remote/Helper/Special.hs, tmp/Remote/Helper/Special.o )-    [ 87 of 279] Compiling Logs.Presence    ( Logs/Presence.hs, tmp/Logs/Presence.o )-    [ 88 of 279] Compiling Logs.Location    ( Logs/Location.hs, tmp/Logs/Location.o )-    [ 89 of 279] Compiling Logs.Web         ( Logs/Web.hs, tmp/Logs/Web.o )-    [ 90 of 279] Compiling Annex.LockPool   ( Annex/LockPool.hs, tmp/Annex/LockPool.o )-    [ 91 of 279] Compiling Logs.Transfer    ( Logs/Transfer.hs, tmp/Logs/Transfer.o )-    [ 92 of 279] Compiling Backend.SHA      ( Backend/SHA.hs, tmp/Backend/SHA.o )-    [ 93 of 279] Compiling Backend.WORM     ( Backend/WORM.hs, tmp/Backend/WORM.o )-    [ 94 of 279] Compiling Backend.URL      ( Backend/URL.hs, tmp/Backend/URL.o )-    [ 95 of 279] Compiling Assistant.Types.ScanRemotes ( Assistant/Types/ScanRemotes.hs, tmp/Assistant/Types/ScanRemotes.o )-    [ 96 of 279] Compiling Assistant.Types.ThreadedMonad ( Assistant/Types/ThreadedMonad.hs, tmp/Assistant/Types/ThreadedMonad.o )-    [ 97 of 279] Compiling Assistant.Types.TransferQueue ( Assistant/Types/TransferQueue.hs, tmp/Assistant/Types/TransferQueue.o )-    [ 98 of 279] Compiling Assistant.Types.Pushes ( Assistant/Types/Pushes.hs, tmp/Assistant/Types/Pushes.o )-    [ 99 of 279] Compiling Assistant.Types.BranchChange ( Assistant/Types/BranchChange.hs, tmp/Assistant/Types/BranchChange.o )-    [100 of 279] Compiling Logs.UUIDBased   ( Logs/UUIDBased.hs, tmp/Logs/UUIDBased.o )-    [101 of 279] Compiling Logs.Remote      ( Logs/Remote.hs, tmp/Logs/Remote.o )-    [102 of 279] Compiling Logs.Group       ( Logs/Group.hs, tmp/Logs/Group.o )-    [103 of 279] Compiling Utility.DiskFree ( Utility/DiskFree.hs, tmp/Utility/DiskFree.o )-    [104 of 279] Compiling Utility.Url      ( Utility/Url.hs, tmp/Utility/Url.o )-    [105 of 279] Compiling Utility.CopyFile ( Utility/CopyFile.hs, tmp/Utility/CopyFile.o )-    [106 of 279] Compiling Utility.Rsync    ( Utility/Rsync.hs, tmp/Utility/Rsync.o )-    [107 of 279] Compiling Git.LsFiles      ( Git/LsFiles.hs, tmp/Git/LsFiles.o )-    [108 of 279] Compiling Git.AutoCorrect  ( Git/AutoCorrect.hs, tmp/Git/AutoCorrect.o )-    [109 of 279] Compiling Git.CurrentRepo  ( Git/CurrentRepo.hs, tmp/Git/CurrentRepo.o )-    [110 of 279] Compiling Locations.UserConfig ( Locations/UserConfig.hs, tmp/Locations/UserConfig.o )-    [111 of 279] Compiling Utility.ThreadScheduler ( Utility/ThreadScheduler.hs, tmp/Utility/ThreadScheduler.o )-    [112 of 279] Compiling Git.Merge        ( Git/Merge.hs, tmp/Git/Merge.o )-    [113 of 279] Compiling Utility.Parallel ( Utility/Parallel.hs, tmp/Utility/Parallel.o )-    [114 of 279] Compiling Git.Remote       ( Git/Remote.hs, tmp/Git/Remote.o )-    [115 of 279] Compiling Assistant.Ssh    ( Assistant/Ssh.hs, tmp/Assistant/Ssh.o )-    [116 of 279] Compiling Assistant.Pairing ( Assistant/Pairing.hs, tmp/Assistant/Pairing.o )-    [117 of 279] Compiling Assistant.Types.NetMessager ( Assistant/Types/NetMessager.hs, tmp/Assistant/Types/NetMessager.o )-    [118 of 279] Compiling Utility.NotificationBroadcaster ( Utility/NotificationBroadcaster.hs, tmp/Utility/NotificationBroadcaster.o )-    [119 of 279] Compiling Assistant.Types.Buddies ( Assistant/Types/Buddies.hs, tmp/Assistant/Types/Buddies.o )-    [120 of 279] Compiling Utility.TSet     ( Utility/TSet.hs, tmp/Utility/TSet.o )-    [121 of 279] Compiling Assistant.Types.Commits ( Assistant/Types/Commits.hs, tmp/Assistant/Types/Commits.o )-    [122 of 279] Compiling Assistant.Types.Changes ( Assistant/Types/Changes.hs, tmp/Assistant/Types/Changes.o )-    [123 of 279] Compiling Utility.WebApp   ( Utility/WebApp.hs, tmp/Utility/WebApp.o )-    [124 of 279] Compiling Utility.Daemon   ( Utility/Daemon.hs, tmp/Utility/Daemon.o )-    [125 of 279] Compiling Utility.LogFile  ( Utility/LogFile.hs, tmp/Utility/LogFile.o )-    [126 of 279] Compiling Git.Filename     ( Git/Filename.hs, tmp/Git/Filename.o )-    [127 of 279] Compiling Git.LsTree       ( Git/LsTree.hs, tmp/Git/LsTree.o )-    [128 of 279] Compiling Utility.Types.DirWatcher ( Utility/Types/DirWatcher.hs, tmp/Utility/Types/DirWatcher.o )-    [129 of 279] Compiling Utility.INotify  ( Utility/INotify.hs, tmp/Utility/INotify.o )-    [130 of 279] Compiling Utility.DirWatcher ( Utility/DirWatcher.hs, tmp/Utility/DirWatcher.o )-    [131 of 279] Compiling Utility.Lsof     ( Utility/Lsof.hs, tmp/Utility/Lsof.o )-    [132 of 279] Compiling Config           ( Config.hs, tmp/Config.o )-    [133 of 279] Compiling Annex.UUID       ( Annex/UUID.hs, tmp/Annex/UUID.o )-    [134 of 279] Compiling Logs.UUID        ( Logs/UUID.hs, tmp/Logs/UUID.o )-    [135 of 279] Compiling Backend          ( Backend.hs, tmp/Backend.o )-    [136 of 279] Compiling Remote.Helper.Hooks ( Remote/Helper/Hooks.hs, tmp/Remote/Helper/Hooks.o )-    [137 of 279] Compiling Remote.Helper.Encryptable ( Remote/Helper/Encryptable.hs, tmp/Remote/Helper/Encryptable.o )-    [138 of 279] Compiling Annex.Queue      ( Annex/Queue.hs, tmp/Annex/Queue.o )-    [139 of 279] Compiling Annex.Content    ( Annex/Content.hs, tmp/Annex/Content.o )-    [140 of 279] Compiling Remote.S3        ( Remote/S3.hs, tmp/Remote/S3.o )-    [141 of 279] Compiling Remote.Directory ( Remote/Directory.hs, tmp/Remote/Directory.o )-    [142 of 279] Compiling Remote.Rsync     ( Remote/Rsync.hs, tmp/Remote/Rsync.o )-    [143 of 279] Compiling Remote.Web       ( Remote/Web.hs, tmp/Remote/Web.o )-    [144 of 279] Compiling Remote.Hook      ( Remote/Hook.hs, tmp/Remote/Hook.o )-    [145 of 279] Compiling Upgrade.V2       ( Upgrade/V2.hs, tmp/Upgrade/V2.o )-    [146 of 279] Compiling Annex.Ssh        ( Annex/Ssh.hs, tmp/Annex/Ssh.o )-    [147 of 279] Compiling Remote.Helper.Ssh ( Remote/Helper/Ssh.hs, tmp/Remote/Helper/Ssh.o )-    [148 of 279] Compiling Remote.Bup       ( Remote/Bup.hs, tmp/Remote/Bup.o )-    [149 of 279] Compiling Annex.Version    ( Annex/Version.hs, tmp/Annex/Version.o )-    [150 of 279] Compiling Init             ( Init.hs, tmp/Init.o )-    [151 of 279] Compiling Checks           ( Checks.hs, tmp/Checks.o )-    [152 of 279] Compiling Remote.Git       ( Remote/Git.hs, tmp/Remote/Git.o )-    [153 of 279] Compiling Remote.List      ( Remote/List.hs, tmp/Remote/List.o )-    [154 of 279] Compiling Logs.Trust       ( Logs/Trust.hs, tmp/Logs/Trust.o )-    [155 of 279] Compiling Remote           ( Remote.hs, tmp/Remote.o )-    [156 of 279] Compiling Assistant.Alert  ( Assistant/Alert.hs, tmp/Assistant/Alert.o )-    Loading package ghc-prim ... linking ... done.-    Loading package integer-gmp ... linking ... done.-    Loading package base ... linking ... done.-    Loading object (static) Utility/libdiskfree.o ... done-    Loading object (static) Utility/libmounts.o ... done-    final link ... done-    Loading package pretty-1.1.1.0 ... linking ... done.-    Loading package filepath-1.3.0.0 ... linking ... done.-    Loading package old-locale-1.0.0.4 ... linking ... done.-    Loading package old-time-1.1.0.0 ... linking ... done.-    Loading package bytestring-0.9.2.1 ... linking ... done.-    Loading package unix-2.5.1.0 ... linking ... done.-    Loading package directory-1.1.0.2 ... linking ... done.-    Loading package process-1.1.0.1 ... linking ... done.-    Loading package array-0.4.0.0 ... linking ... done.-    Loading package deepseq-1.3.0.0 ... linking ... done.-    Loading package time-1.4 ... linking ... done.-    Loading package containers-0.4.2.1 ... linking ... done.-    Loading package text-0.11.2.0 ... linking ... done.-    Loading package blaze-builder-0.3.1.0 ... linking ... done.-    Loading package blaze-markup-0.5.1.1 ... linking ... done.-    Loading package blaze-html-0.5.1.0 ... linking ... done.-    Loading package hashable-1.1.2.5 ... linking ... done.-    Loading package case-insensitive-0.4.0.3 ... linking ... done.-    Loading package primitive-0.5.0.1 ... linking ... done.-    Loading package vector-0.10.0.1 ... linking ... done.-    Loading package random-1.0.1.1 ... linking ... done.-    Loading package dlist-0.5 ... linking ... done.-    Loading package data-default-0.5.0 ... linking ... done.-    Loading package transformers-0.3.0.0 ... linking ... done.-    Loading package mtl-2.1.1 ... linking ... done.-    Loading package parsec-3.1.2 ... linking ... done.-    Loading package network-2.3.0.13 ... linking ... done.-    Loading package failure-0.2.0.1 ... linking ... done.-    Loading package template-haskell ... linking ... done.-    Loading package shakespeare-1.0.2 ... linking ... done.-    Loading package hamlet-1.1.1.1 ... linking ... done.-    Loading package http-types-0.7.3.0.1 ... linking ... done.-    Loading package base-unicode-symbols-0.2.2.4 ... linking ... done.-    Loading package transformers-base-0.4.1 ... linking ... done.-    Loading package monad-control-0.3.1.4 ... linking ... done.-    Loading package lifted-base-0.2 ... linking ... done.-    Loading package resourcet-0.4.3 ... linking ... done.-    Loading package semigroups-0.8.4.1 ... linking ... done.-    Loading package void-0.5.8 ... linking ... done.-    Loading package conduit-0.5.4.1 ... linking ... done.-    Loading package unordered-containers-0.2.2.1 ... linking ... done.-    Loading package vault-0.2.0.1 ... linking ... done.-    Loading package wai-1.3.0.1 ... linking ... done.-    Loading package date-cache-0.3.0 ... linking ... done.-    Loading package unix-time-0.1.2 ... linking ... done.-    Loading package fast-logger-0.3.1 ... linking ... done.-    Loading package attoparsec-0.10.2.0 ... linking ... done.-    Loading package cookie-0.4.0.1 ... linking ... done.-    Loading package shakespeare-css-1.0.2 ... linking ... done.-    Loading package syb-0.3.6.1 ... linking ... done.-    Loading package aeson-0.6.0.2 ... linking ... done.-    Loading package shakespeare-js-1.1.0 ... linking ... done.-    Loading package ansi-terminal-0.5.5 ... linking ... done.-    Loading package blaze-builder-conduit-0.5.0.2 ... linking ... done.-    Loading package stringsearch-0.3.6.4 ... linking ... done.-    Loading package byteorder-1.0.3 ... linking ... done.-    Loading package wai-logger-0.3.0 ... linking ... done.-    Loading package zlib-0.5.3.3 ... linking ... done.-    Loading package zlib-bindings-0.1.1.1 ... linking ... done.-    Loading package zlib-conduit-0.5.0.2 ... linking ... done.-    Loading package wai-extra-1.3.0.4 ... linking ... done.-    Loading package monad-logger-0.2.1 ... linking ... done.-    Loading package cereal-0.3.5.2 ... linking ... done.-    Loading package base64-bytestring-1.0.0.0 ... linking ... done.-    Loading package cipher-aes-0.1.2 ... linking ... done.-    Loading package entropy-0.2.1 ... linking ... done.-    Loading package largeword-1.0.3 ... linking ... done.-    Loading package tagged-0.4.4 ... linking ... done.-    Loading package crypto-api-0.10.2 ... linking ... done.-    Loading package cpu-0.1.1 ... linking ... done.-    Loading package crypto-pubkey-types-0.1.1 ... linking ... done.-    Loading package cryptocipher-0.3.5 ... linking ... done.-    Loading package cprng-aes-0.2.4 ... linking ... done.-    Loading package skein-0.1.0.9 ... linking ... done.-    Loading package clientsession-0.8.0.1 ... linking ... done.-    Loading package path-pieces-0.1.2 ... linking ... done.-    Loading package shakespeare-i18n-1.0.0.2 ... linking ... done.-    Loading package yesod-routes-1.1.1.1 ... linking ... done.-    Loading package yesod-core-1.1.5 ... linking ... done.-    [157 of 279] Compiling Assistant.Types.DaemonStatus ( Assistant/Types/DaemonStatus.hs, tmp/Assistant/Types/DaemonStatus.o )-    [158 of 279] Compiling Assistant.Monad  ( Assistant/Monad.hs, tmp/Assistant/Monad.o )-    [159 of 279] Compiling Assistant.Types.NamedThread ( Assistant/Types/NamedThread.hs, tmp/Assistant/Types/NamedThread.o )-    [160 of 279] Compiling Assistant.Common ( Assistant/Common.hs, tmp/Assistant/Common.o )-    [161 of 279] Compiling Assistant.XMPP   ( Assistant/XMPP.hs, tmp/Assistant/XMPP.o )-    [162 of 279] Compiling Assistant.XMPP.Buddies ( Assistant/XMPP/Buddies.hs, tmp/Assistant/XMPP/Buddies.o )-    [163 of 279] Compiling Assistant.NetMessager ( Assistant/NetMessager.hs, tmp/Assistant/NetMessager.o )--    Assistant/NetMessager.hs:12:1:-        Warning: The import of `Types.Remote' is redundant-                   except perhaps to import instances from `Types.Remote'-                 To import instances alone, use: import Types.Remote()--    Assistant/NetMessager.hs:13:1:-        Warning: The import of `Git' is redundant-                   except perhaps to import instances from `Git'-                 To import instances alone, use: import Git()--    Assistant/NetMessager.hs:20:1:-        Warning: The import of `Data.Text' is redundant-                   except perhaps to import instances from `Data.Text'-                 To import instances alone, use: import Data.Text()-    [164 of 279] Compiling Assistant.Pushes ( Assistant/Pushes.hs, tmp/Assistant/Pushes.o )-    [165 of 279] Compiling Assistant.ScanRemotes ( Assistant/ScanRemotes.hs, tmp/Assistant/ScanRemotes.o )-    [166 of 279] Compiling Assistant.Install ( Assistant/Install.hs, tmp/Assistant/Install.o )-    [167 of 279] Compiling Assistant.XMPP.Client ( Assistant/XMPP/Client.hs, tmp/Assistant/XMPP/Client.o )-    [168 of 279] Compiling Assistant.Commits ( Assistant/Commits.hs, tmp/Assistant/Commits.o )-    [169 of 279] Compiling Assistant.BranchChange ( Assistant/BranchChange.hs, tmp/Assistant/BranchChange.o )-    [170 of 279] Compiling Assistant.Changes ( Assistant/Changes.hs, tmp/Assistant/Changes.o )-    [171 of 279] Compiling Assistant.WebApp.Types ( Assistant/WebApp/Types.hs, tmp/Assistant/WebApp/Types.o )-    Loading package unix-compat-0.4.0.0 ... linking ... done.-    Loading package file-embed-0.0.4.6 ... linking ... done.-    Loading package system-filepath-0.4.7 ... linking ... done.-    Loading package system-fileio-0.3.10 ... linking ... done.-    Loading package cryptohash-0.7.8 ... linking ... done.-    Loading package crypto-conduit-0.4.0.1 ... linking ... done.-    Loading package http-date-0.0.2 ... linking ... done.-    Loading package mime-types-0.1.0.0 ... linking ... done.-    Loading package wai-app-static-1.3.0.4 ... linking ... done.-    Loading package yesod-static-1.1.1.1 ... linking ... done.-    [172 of 279] Compiling Assistant.WebApp ( Assistant/WebApp.hs, tmp/Assistant/WebApp.o )-    Loading package network-conduit-0.6.1.1 ... linking ... done.-    Loading package safe-0.3.3 ... linking ... done.-    Loading package simple-sendfile-0.2.8 ... linking ... done.-    Loading package warp-1.3.4.4 ... linking ... done.-    Loading package yaml-0.8.1 ... linking ... done.-    Loading package yesod-default-1.1.2 ... linking ... done.-    [173 of 279] Compiling Assistant.WebApp.OtherRepos ( Assistant/WebApp/OtherRepos.hs, tmp/Assistant/WebApp/OtherRepos.o )-    [174 of 279] Compiling Limit            ( Limit.hs, tmp/Limit.o )-    [175 of 279] Compiling Option           ( Option.hs, tmp/Option.o )-    [176 of 279] Compiling Seek             ( Seek.hs, tmp/Seek.o )-    [177 of 279] Compiling Command          ( Command.hs, tmp/Command.o )-    [178 of 279] Compiling CmdLine          ( CmdLine.hs, tmp/CmdLine.o )-    [179 of 279] Compiling Command.ConfigList ( Command/ConfigList.hs, tmp/Command/ConfigList.o )-    [180 of 279] Compiling Command.InAnnex  ( Command/InAnnex.hs, tmp/Command/InAnnex.o )-    [181 of 279] Compiling Command.DropKey  ( Command/DropKey.hs, tmp/Command/DropKey.o )-    [182 of 279] Compiling Command.SendKey  ( Command/SendKey.hs, tmp/Command/SendKey.o )-    [183 of 279] Compiling Command.RecvKey  ( Command/RecvKey.hs, tmp/Command/RecvKey.o )-    [184 of 279] Compiling Command.TransferInfo ( Command/TransferInfo.hs, tmp/Command/TransferInfo.o )-    [185 of 279] Compiling Command.Commit   ( Command/Commit.hs, tmp/Command/Commit.o )-    [186 of 279] Compiling Command.Add      ( Command/Add.hs, tmp/Command/Add.o )-    [187 of 279] Compiling Command.Unannex  ( Command/Unannex.hs, tmp/Command/Unannex.o )-    [188 of 279] Compiling Command.FromKey  ( Command/FromKey.hs, tmp/Command/FromKey.o )-    [189 of 279] Compiling Command.ReKey    ( Command/ReKey.hs, tmp/Command/ReKey.o )-    [190 of 279] Compiling Command.Fix      ( Command/Fix.hs, tmp/Command/Fix.o )-    [191 of 279] Compiling Command.Describe ( Command/Describe.hs, tmp/Command/Describe.o )-    [192 of 279] Compiling Command.InitRemote ( Command/InitRemote.hs, tmp/Command/InitRemote.o )-    [193 of 279] Compiling Command.Unlock   ( Command/Unlock.hs, tmp/Command/Unlock.o )-    [194 of 279] Compiling Command.Lock     ( Command/Lock.hs, tmp/Command/Lock.o )-    [195 of 279] Compiling Command.PreCommit ( Command/PreCommit.hs, tmp/Command/PreCommit.o )-    [196 of 279] Compiling Command.Log      ( Command/Log.hs, tmp/Command/Log.o )-    [197 of 279] Compiling Command.Merge    ( Command/Merge.hs, tmp/Command/Merge.o )-    [198 of 279] Compiling Command.Group    ( Command/Group.hs, tmp/Command/Group.o )-    [199 of 279] Compiling Command.Ungroup  ( Command/Ungroup.hs, tmp/Command/Ungroup.o )-    [200 of 279] Compiling Command.Import   ( Command/Import.hs, tmp/Command/Import.o )-    [201 of 279] Compiling Logs.Unused      ( Logs/Unused.hs, tmp/Logs/Unused.o )-    [202 of 279] Compiling Command.AddUnused ( Command/AddUnused.hs, tmp/Command/AddUnused.o )-    [203 of 279] Compiling Command.Find     ( Command/Find.hs, tmp/Command/Find.o )-    [204 of 279] Compiling Logs.PreferredContent ( Logs/PreferredContent.hs, tmp/Logs/PreferredContent.o )-    [205 of 279] Compiling Annex.Wanted     ( Annex/Wanted.hs, tmp/Annex/Wanted.o )-    [206 of 279] Compiling Command.Whereis  ( Command/Whereis.hs, tmp/Command/Whereis.o )-    [207 of 279] Compiling Command.Trust    ( Command/Trust.hs, tmp/Command/Trust.o )-    [208 of 279] Compiling Command.Untrust  ( Command/Untrust.hs, tmp/Command/Untrust.o )-    [209 of 279] Compiling Command.Semitrust ( Command/Semitrust.hs, tmp/Command/Semitrust.o )-    [210 of 279] Compiling Command.Dead     ( Command/Dead.hs, tmp/Command/Dead.o )-    [211 of 279] Compiling Command.Vicfg    ( Command/Vicfg.hs, tmp/Command/Vicfg.o )-    [212 of 279] Compiling Command.Map      ( Command/Map.hs, tmp/Command/Map.o )-    [213 of 279] Compiling Command.Init     ( Command/Init.hs, tmp/Command/Init.o )-    [214 of 279] Compiling Command.Uninit   ( Command/Uninit.hs, tmp/Command/Uninit.o )-    [215 of 279] Compiling Command.Version  ( Command/Version.hs, tmp/Command/Version.o )-    [216 of 279] Compiling Upgrade.V1       ( Upgrade/V1.hs, tmp/Upgrade/V1.o )-    [217 of 279] Compiling Upgrade.V0       ( Upgrade/V0.hs, tmp/Upgrade/V0.o )-    [218 of 279] Compiling Upgrade          ( Upgrade.hs, tmp/Upgrade.o )-    [219 of 279] Compiling Command.Upgrade  ( Command/Upgrade.hs, tmp/Command/Upgrade.o )-    [220 of 279] Compiling Command.Drop     ( Command/Drop.hs, tmp/Command/Drop.o )-    [221 of 279] Compiling Command.Move     ( Command/Move.hs, tmp/Command/Move.o )-    [222 of 279] Compiling Command.Copy     ( Command/Copy.hs, tmp/Command/Copy.o )-    [223 of 279] Compiling Command.Get      ( Command/Get.hs, tmp/Command/Get.o )-    [224 of 279] Compiling Command.TransferKey ( Command/TransferKey.hs, tmp/Command/TransferKey.o )-    [225 of 279] Compiling Command.DropUnused ( Command/DropUnused.hs, tmp/Command/DropUnused.o )-    [226 of 279] Compiling Command.Fsck     ( Command/Fsck.hs, tmp/Command/Fsck.o )-    [227 of 279] Compiling Command.Reinject ( Command/Reinject.hs, tmp/Command/Reinject.o )-    [228 of 279] Compiling Command.Migrate  ( Command/Migrate.hs, tmp/Command/Migrate.o )-    [229 of 279] Compiling Command.Unused   ( Command/Unused.hs, tmp/Command/Unused.o )-    [230 of 279] Compiling Command.Status   ( Command/Status.hs, tmp/Command/Status.o )-    [231 of 279] Compiling Command.Sync     ( Command/Sync.hs, tmp/Command/Sync.o )-    [232 of 279] Compiling Command.Help     ( Command/Help.hs, tmp/Command/Help.o )-    [233 of 279] Compiling Command.AddUrl   ( Command/AddUrl.hs, tmp/Command/AddUrl.o )-    [234 of 279] Compiling Assistant.DaemonStatus ( Assistant/DaemonStatus.hs, tmp/Assistant/DaemonStatus.o )-    [235 of 279] Compiling Assistant.Sync   ( Assistant/Sync.hs, tmp/Assistant/Sync.o )-    [236 of 279] Compiling Assistant.MakeRemote ( Assistant/MakeRemote.hs, tmp/Assistant/MakeRemote.o )-    [237 of 279] Compiling Assistant.XMPP.Git ( Assistant/XMPP/Git.hs, tmp/Assistant/XMPP/Git.o )-    [238 of 279] Compiling Command.XMPPGit  ( Command/XMPPGit.hs, tmp/Command/XMPPGit.o )-    [239 of 279] Compiling Assistant.Threads.NetWatcher ( Assistant/Threads/NetWatcher.hs, tmp/Assistant/Threads/NetWatcher.o )-    [240 of 279] Compiling Assistant.NamedThread ( Assistant/NamedThread.hs, tmp/Assistant/NamedThread.o )-    [241 of 279] Compiling Assistant.WebApp.Notifications ( Assistant/WebApp/Notifications.hs, tmp/Assistant/WebApp/Notifications.o )--    Assistant/WebApp/Notifications.hs:39:11:-        No instances for (Text.Julius.ToJavascript String,-                          Text.Julius.ToJavascript Text)-          arising from a use of `Text.Julius.toJavascript'-        Possible fix:-          add instance declarations for-          (Text.Julius.ToJavascript String, Text.Julius.ToJavascript Text)-        In the first argument of `Text.Julius.Javascript', namely-          `Text.Julius.toJavascript delay'-        In the expression:-          Text.Julius.Javascript (Text.Julius.toJavascript delay)-        In the first argument of `Data.Monoid.mconcat', namely-          `[Text.Julius.Javascript-              ((Data.Text.Lazy.Builder.fromText . Text.Shakespeare.pack')-                 "function longpoll_"),-            Text.Julius.Javascript (Text.Julius.toJavascript ident),-            Text.Julius.Javascript-              ((Data.Text.Lazy.Builder.fromText . Text.Shakespeare.pack')-                 "() {\-                 \\tlongpoll(longpoll_"),-            Text.Julius.Javascript (Text.Julius.toJavascript ident), ....]'-    make: *** [git-annex] Error 1--> Reproduced this and confirmed it's fixed in git. --[[Joey]] [[done]]
− doc/bugs/Android:_500___47__etc__47__resolv.conf_does_not_exist.mdwn
@@ -1,26 +0,0 @@-### Please describe the problem.--When entering Jabber account data, the assistant responds with:--    Internal Server Error: /etc/resolv.conf does not exist (No such file or directory).--### What steps will reproduce the problem?--Get a jabber account at http://jit.si. Enter your jabber name and password on Android assistant, and click "Use This Account". The dark overlay and progress message appears. After about 30 seconds the browser forwards to the "Internal Server Error: /etc/resolv.conf does not exist (No such file or directory)" page.--### What version of git-annex are you using? On what operating system?--Android 4.2 on Lenovo 780p. This model is only for sale in China and India and has been rooted, but the original ROM is still on. Often this makes no difference but you might want to confirm with another device.--git-annex version 5.20131127-g736ce5e--### 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.-"""]]--> [[fixed|done]] --[[Joey]] 
− doc/bugs/Android_:_handling_DCIM__47__Camera_not_being_configurable.mdwn
@@ -1,16 +0,0 @@-### Please describe the problem.--In order to handle the fact that the directory where pictures are saved is not configurable on my phone, I set up a second git annex repository with the Repository group "file source".--### What version of git-annex are you using? On what operating system?--5.20140108-gce9652--### Please provide any additional information below.--In the log, there are many "too many open files" errors like these :--git:createProcess: runInteractiveProcess: pipe: resource exhausted (Too many open files)--[[!tag moreinfo]]-[[!meta title="too many open files on android"]]
− doc/bugs/Build_error:_Ambiguous_occurrence___96__callCommand__39__.mdwn
@@ -1,74 +0,0 @@-### Please describe the problem.--I get the following error when building:--[[!format sh """-$ cabal install git-annex --bindir=$HOME/bin -f"-assistant -webapp -webdav -pairing -xmpp -dns"--...--Configuring git-annex-5.20140127...-Building git-annex-5.20140127...-Preprocessing executable 'git-annex' for git-annex-5.20140127...-[  1 of 281] Compiling Utility.Dot      ( Utility/Dot.hs, dist/build/git-annex/git-annex-tmp/Utility/Dot.o )-[  2 of 281] Compiling BuildFlags       ( BuildFlags.hs, dist/build/git-annex/git-annex-tmp/BuildFlags.o )-[  3 of 281] Compiling Utility.Shell    ( Utility/Shell.hs, dist/build/git-annex/git-annex-tmp/Utility/Shell.o )--...--[111 of 281] Compiling Backend.Hash     ( Backend/Hash.hs, dist/build/git-annex/git-annex-tmp/Backend/Hash.o )-[112 of 281] Compiling Annex.Queue      ( Annex/Queue.hs, dist/build/git-annex/git-annex-tmp/Annex/Queue.o )-[113 of 281] Compiling RunCommand       ( RunCommand.hs, dist/build/git-annex/git-annex-tmp/RunCommand.o )--RunCommand.hs:44:17:-    Ambiguous occurrence `callCommand'-    It could refer to either `RunCommand.callCommand',-                             defined at RunCommand.hs:62:1-                          or `Common.Annex.callCommand',-                             imported from `Common.Annex' at RunCommand.hs:12:1-19-                             (and originally defined in `System.Process')-cabal: Error: some packages failed to install:-git-annex-5.20140127 failed during the building phase. The exception was:-ExitFailure 1-"""]]--### What steps will reproduce the problem?--Try building the same version.--### What version of git-annex are you using? On what operating system?--Building git-annex-5.20140127...--[[!format sh """-$ cabal --version-cabal-install version 0.14.0-using version 1.14.0 of the Cabal library--$ ghc --version-The Glorious Glasgow Haskell Compilation System, version 7.4.1--$ lsb_release -a -No LSB modules are available.-Distributor ID:	Ubuntu-Description:	Ubuntu 12.04.3 LTS-Release:	12.04-Codename:	precise--$ uname -a-Linux sahnlpt0116 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux-"""]]--### Please provide any additional information below.--Sorry but I don't know what else could help you.--[[!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.-"""]]--> fixed in git and will update cabal soon [[done]] --[[Joey]]
− doc/bugs/Building_fails:_Could_not_find_module___96__Text.Blaze__39__.mdwn
@@ -1,105 +0,0 @@-What steps will reproduce the problem?--<pre>-dominik@Atlantis:/var/tmp$ git clone git://github.com/joeyh/git-annex.git-Cloning into 'git-annex'...-remote: Counting objects: 40580, done.-remote: Compressing objects: 100% (10514/10514), done.-remote: Total 40580 (delta 29914), reused 40502 (delta 29837)-Receiving objects: 100% (40580/40580), 9.17 MiB | 238 KiB/s, done.-Resolving deltas: 100% (29914/29914), done.-dominik@Atlantis:/var/tmp$ cd git-annex/-dominik@Atlantis:/var/tmp/git-annex$ cabal update-Downloading the latest package list from hackage.haskell.org-dominik@Atlantis:/var/tmp/git-annex$ cabal install --only-dependencies-Resolving dependencies...-All the requested packages are already installed:-Use --reinstall if you want to reinstall anyway.-dominik@Atlantis:/var/tmp/git-annex$ cabal configure-Resolving dependencies...-[ 1 of 21] Compiling Utility.FileSystemEncoding ( Utility/FileSystemEncoding.hs, dist/setup/Utility/FileSystemEncoding.o )-[ 2 of 21] Compiling Utility.Applicative ( Utility/Applicative.hs, dist/setup/Utility/Applicative.o )-[ 3 of 21] Compiling Utility.PartialPrelude ( Utility/PartialPrelude.hs, dist/setup/Utility/PartialPrelude.o )-[ 4 of 21] Compiling Utility.UserInfo ( Utility/UserInfo.hs, dist/setup/Utility/UserInfo.o )-[ 5 of 21] Compiling Utility.Monad    ( Utility/Monad.hs, dist/setup/Utility/Monad.o )-[ 6 of 21] Compiling Utility.Path     ( Utility/Path.hs, dist/setup/Utility/Path.o )-[ 7 of 21] Compiling Utility.OSX      ( Utility/OSX.hs, dist/setup/Utility/OSX.o )-[ 8 of 21] Compiling Utility.Exception ( Utility/Exception.hs, dist/setup/Utility/Exception.o )-[ 9 of 21] Compiling Utility.TempFile ( Utility/TempFile.hs, dist/setup/Utility/TempFile.o )-[10 of 21] Compiling Utility.Misc     ( Utility/Misc.hs, dist/setup/Utility/Misc.o )-[11 of 21] Compiling Utility.Process  ( Utility/Process.hs, dist/setup/Utility/Process.o )-[12 of 21] Compiling Utility.FreeDesktop ( Utility/FreeDesktop.hs, dist/setup/Utility/FreeDesktop.o )-[13 of 21] Compiling Assistant.Install.AutoStart ( Assistant/Install/AutoStart.hs, dist/setup/Assistant/Install/AutoStart.o )-[14 of 21] Compiling Utility.SafeCommand ( Utility/SafeCommand.hs, dist/setup/Utility/SafeCommand.o )-[15 of 21] Compiling Utility.Directory ( Utility/Directory.hs, dist/setup/Utility/Directory.o )-[16 of 21] Compiling Common           ( Common.hs, dist/setup/Common.o )-[17 of 21] Compiling Locations.UserConfig ( Locations/UserConfig.hs, dist/setup/Locations/UserConfig.o )-[18 of 21] Compiling Build.TestConfig ( Build/TestConfig.hs, dist/setup/Build/TestConfig.o )-[19 of 21] Compiling Build.Configure  ( Build/Configure.hs, dist/setup/Build/Configure.o )-[20 of 21] Compiling Build.InstallDesktopFile ( Build/InstallDesktopFile.hs, dist/setup/Build/InstallDesktopFile.o )-[21 of 21] Compiling Main             ( Setup.hs, dist/setup/Main.o )-Linking ./dist/setup/setup ...-  checking version... 3.20121018-  checking git... yes-  checking git version... 1.7.10.4-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking uuid generator... uuidgen-  checking xargs -0... yes-  checking rsync... yes-  checking curl... yes-  checking wget... yes-  checking bup... no-  checking gpg... yes-  checking lsof... yes-  checking host... no-  checking ssh connection caching... yes-  checking sha1... sha1sum-  checking sha256... sha256sum-  checking sha512... sha512sum-  checking sha224... sha224sum-  checking sha384... sha384sum-Configuring git-annex-3.20121018...-dominik@Atlantis:/var/tmp/git-annex$ cabal build-Building git-annex-3.20121018...-Preprocessing executable 'git-annex' for git-annex-3.20121018...--Assistant/Alert.hs:21:8:-    Could not find module `Text.Blaze'-    It is a member of the hidden package `blaze-markup-0.5.1.1'.-    Perhaps you need to add `blaze-markup' to the build-depends in your .cabal file.-    Use -v to see a list of the files searched for.-</pre>--What is the expected output? What do you see instead?--I expect the latest git HEAD to build without an error message or provide me with a package I need to install. Instead the error above is shown. In fact the package requested is installed:--<pre>-dominik@Atlantis:/var/tmp/git-annex$ cabal install blaze-markup-Resolving dependencies...-All the requested packages are already installed:-blaze-markup-0.5.1.1-Use --reinstall if you want to reinstall anyway.-</pre>--What version of git-annex are you using? On what operating system?--git HEAD, Ubuntu 12.10--Please provide any additional information below.--<pre>-$ cabal --version-cabal-install version 0.14.0-using version 1.14.0 of the Cabal library --$ ghc --version-The Glorious Glasgow Haskell Compilation System, version 7.4.2--$ uname -a-Linux Atlantis 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux-</pre>--> [[done]] --[[Joey]]
− doc/bugs/Building_fails:_Not_in_scope:___96__myHomeDir__39___.mdwn
@@ -1,56 +0,0 @@-What steps will reproduce the problem?--Building of the current github HEAD fails with a strange error message regarding OSX. I'm not using OSX but Ubuntu 12.10, why is cabal trying to build these files?--<pre>-dominik@Atlantis:/var/tmp$ git clone git://github.com/joeyh/git-annex.git-Cloning into 'git-annex'...-remote: Counting objects: 40243, done.-remote: Compressing objects: 100% (10568/10568), done.-remote: Total 40243 (delta 29647), reused 40044 (delta 29449)-Receiving objects: 100% (40243/40243), 9.12 MiB | 184 KiB/s, done.-Resolving deltas: 100% (29647/29647), done.-dominik@Atlantis:/var/tmp$ cd git-annex/-dominik@Atlantis:/var/tmp/git-annex$ cabal update-Downloading the latest package list from hackage.haskell.org-dominik@Atlantis:/var/tmp/git-annex$ cabal install --only-dependencies-Resolving dependencies...-All the requested packages are already installed:-Use --reinstall if you want to reinstall anyway.-dominik@Atlantis:/var/tmp/git-annex$ cabal configure-Resolving dependencies...-[ 1 of 21] Compiling Utility.FileSystemEncoding ( Utility/FileSystemEncoding.hs, dist/setup/Utility/FileSystemEncoding.o )-[ 2 of 21] Compiling Utility.Applicative ( Utility/Applicative.hs, dist/setup/Utility/Applicative.o )-[ 3 of 21] Compiling Utility.PartialPrelude ( Utility/PartialPrelude.hs, dist/setup/Utility/PartialPrelude.o )-[ 4 of 21] Compiling Utility.UserInfo ( Utility/UserInfo.hs, dist/setup/Utility/UserInfo.o )-[ 5 of 21] Compiling Utility.Monad    ( Utility/Monad.hs, dist/setup/Utility/Monad.o )-[ 6 of 21] Compiling Utility.Path     ( Utility/Path.hs, dist/setup/Utility/Path.o )-[ 7 of 21] Compiling Utility.OSX      ( Utility/OSX.hs, dist/setup/Utility/OSX.o )--Utility/OSX.hs:22:17: Not in scope: `myHomeDir'-</pre>--What is the expected output? What do you see instead?--I expect cabal to build git-annex. --What version of git-annex are you using? On what operating system?--github HEAD on Ubuntu 12.10--Please provide any additional information below.--<pre>-$ cabal --version-cabal-install version 0.14.0-using version 1.14.0 of the Cabal library --$ ghc --version-The Glorious Glasgow Haskell Compilation System, version 7.4.2--$ uname -a-Linux Atlantis 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux--</pre>--> [[fixed|done]] --[[Joey]] 
− doc/bugs/Error_when_dropping___34__hGetLine:_end_of_file__34__.mdwn
@@ -1,31 +0,0 @@-Running 3.20121112 on Debian Squeeze.--Since adding a certain directory of files (just a bunch of PDFs) yesterday I am getting errors when I try to use `git annex drop .` when the files aren't present, rather doing nothing or saying 'ok', as it used to do/should do.  The errors are of the form `git-annex: fd:10: hGetLine: end of file` and sometimes of the form `git-annex: fd:17: hFlush: resource vanished (Broken pipe)`.  In my `daemon.log`, I have the errors--    (scanning...) Already up-to-date.-    Already up-to-date.-    TransferScanner crashed: fd:26: hGetLine: end of file-    Already up-to-date.-    (started...) git-annex: fd:25: hGetLine: end of file-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    git-annex: fd:24: hFlush: resource vanished (Broken pipe)-    [many more repetitions]--If I `git annex get` the files and then drop them again, a further attempt at a drop gives all these errors again.--> So in summary, a git-annex built against the old version of git in-> debian stable fails to work with a newer version of git, and rebuilding-> fixes it. FWIW, the git-annex backport to stable does not have this-> problem, because it checks git version at runtime. But I want to avoid-> the overhead of that check in git-annex mainline, because this old git-> version is well, very old and increasingly unlikely to be used. So,-> I don't think any changes to git-annex are warrented. [[done]] --[[Joey]]
− doc/bugs/Feature_request:___34__quvi__34___flag.mdwn
@@ -1,14 +0,0 @@-### Please describe the problem.-git-annex v4.20130827 can't be built on ARM. Technically it's vector that can't be built due to a lack of Template Haskell compilers for this architecture. Vector is a dependency of aeson, which is a dependency of git-annex, which therefore fails to compile.--The only functionality that relies on aeson is, to my knowledge, quvi. Thus my feature request: If you were to introduce a flag to switch quvi support on or off, ARM users like me could circumvent the aeson dependency at build time. In this case we weren't stuck with 4.20130815 (the latest version to not depend on aeson) and could use current and future versions of git-annex. I would appreciate it.---### What steps will reproduce the problem?-See above.---### What version of git-annex are you using? On what operating system?-I'm running Raspbian Wheezy on a Raspberry Pi. The git-annex version to be built is 4.20130827. --> [[done]] --[[Joey]]
+ doc/bugs/Git-Annex_requires_all_repositories_to_repair.mdwn view
@@ -0,0 +1,2 @@+I recently had my git-annex repository die and it needed to be repaired. Two of my repositories are external hard drives. When I tried to use git-annex repair, it would churn for some hours, then error because the external hard drives were not plugged in. When I brought the two hard drives home from the various places that they are (safely) stored, it all worked fine, but it would have been great if git-annex repair could somehow do what it could with what was connected and do the rest as and when the other drives are plugged in. This must only become more of a problem as git-annex is used for longer, as one may have a handful of USB keys storing a little on each.+
− doc/bugs/Internal_Server_Error:_Unknown_UUID.mdwn
@@ -1,37 +0,0 @@-### Please describe the problem.--One of my repositories has no name:-http://screencast.com/t/3OjxFzpz--And when I try to disable it I get this error:--    Internal Server Error-    Unknown UUID--When I try to delete it I get this error:--    Internal Server Error-    unknown UUID; cannot modify--I think this was the result of adding a Local Computer Repo, and then that computer signed off.  Maybe.--### What version of git-annex are you using? On what operating system?--git-annex version 4.20130601-g2b6c3f2-Mac OS 10.7.5--### Please provide any additional information below.--Maybe it's a glitch that only will happen this once, the problem is I can't get rid of it!  Are there anyways of manually getting rid of a repo with uid?--> Also reported here:-> [[Missing_repo_uuid_after_local_pairing_with_older_annex]] and-> [[Internal_Server_Error_unknown_UUID;_cannot_modify]]-> and [[Local_network___40__ssh__41___fails_to_pair__47__sync]]-> and [[Internal_Server_Error:_Unknown_UUID]]-> --[[Joey]] --[[!meta title="local pairing leads to unknown UUID"]]--> This bug is [[fixed|done]]. The webapp will detect the problem and-> provides an interface to correct it. --[[Joey]]
− doc/bugs/Local_pairing_fails:_PairListener_crashed.mdwn
@@ -1,18 +0,0 @@-What steps will reproduce the problem?--Attempting to pair between a local repository and a repository on a remote computer on my LAN. Pairing is initiated from my local machine and I'm interacting with the webapp on the remote machine via firefox running over an ssh -X connection. Pairing appears to work up to a point: I enter the secret at one end, the pairing request shows up at the other end. I then enter the secret at that end.--What is the expected output? What do you see instead?--Pairing should complete successfully. Instead I get the error message "PairListener crashed: bad comment in public key", followed by the public key. The pairing process then does not move beyond the 'awaiting pairing' pages.--What version of git-annex are you using? On what operating system?--Local Machine: 3.20121127, Debian Wheezy/Sid (the only package from unstable is git-annex).-Remote Machine: 3.20121113, Arch Linux (I installed the version from: https://aur.archlinux.org/packages/git-annex-bin/, which is supposedly the same as above, but reports the version specified here).--Please provide any additional information below.--None as yet. Let me know if there are any log files, etc. that I can post.--> So it was the period in the hostname! [[fixed|done]] --[[Joey]]
− doc/bugs/Local_pairing_fails:_received_PairMsg_loop.mdwn
@@ -1,39 +0,0 @@-### Please describe the problem.-Pairing over my local network doesn't work.  The pairing process never finishes.  The log shows that the same PairMsg messages are repeated endlessly.--### What steps will reproduce the problem?---### What version of git-annex are you using? On what operating system?-I'm on Ubuntu Raring 13.04.  I installed git-annex 4.20131024 from the Precise PPA.  It is working fine with a remote ssh repo, just not local pairing.--### 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-[2013-11-01 16:55:21 CDT] main: Pairing in progress-[2013-11-01 16:55:55 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"Onyx\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBT0Y6TTzTg8nWwonmgUPPwJmPIaJzfEoJl8DbuylpgXqGCQ4doJXuvBODHIehPfyMr1xCWqNlNNLkcWg/a/eHFceyt3IlcD9XaZ1aKPzPmpjYKKf5amiYd6mAssw8zFaZUvwaXkNuHZpXVZyg6C6TkT6kdfln+6fOJZpSGQzksy0jka/Rzx0KXjsp3oqO4tQJbC7AX0nvmD0zvLtyCURzfGV+n2IqQxpPf2nP75Evt8jamcuqm6pWoe+hj9zjGytIXpSKe35wzRwUAUrjgmZ9NweuWfi2uMPJlDv8/n+Q3HyjygA+GzixBGuYXDt1CD8ISZvuoygS+9+jeY9uYH8b me@Onyx\\n\", pairUUID = UUID \"834b4f39-ca66-4baf-9323-57ef7058d7d0\"},IPv4Addr 2281744576), verifiableDigest = \"8d5d380542f7377f09a4584a38b0dbcea9ea215c\"})"-[2013-11-01 16:55:56 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"kubbie\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvBEWT+AiAmehOFyTQWlSdwDs7DDbkw7rfZ4W/IeG5awZjMgT5BefIv9cmar8vGIIEFMZLpf8cL3xIargDz0xE2wuqj5CLkdz+DKp5f2FGs11Ax/62DZr+eCiVtPnwijFw0Cz0wMRzkN93uedrvzP/KkNRcczgWh3aZqn8WxlkCia1fyykm/pP3W80MNkiJYX5vXpu1NCV5KLu+UXQzKhM2njOauJ3W5wsMvSl8faZIpEmKVCD3BMDDruxTIxggA3kt9GCGvIbPawy+fGOpp/j6pHqnX3GB2kkT47RIZKYEv99HuLyvea+oY5R11FsC2yYY3ujIdUU0fXnV8pvrqSv me@kubbie\\n\", pairUUID = UUID \"fd6a6858-76c9-4eea-b733-9359c7313e72\"},IPv4Addr 1879091392), verifiableDigest = \"cbd8197c3d78c8c68bb30f63aa974cd88dd0fb13\"})"-[2013-11-01 16:55:57 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"Onyx\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBT0Y6TTzTg8nWwonmgUPPwJmPIaJzfEoJl8DbuylpgXqGCQ4doJXuvBODHIehPfyMr1xCWqNlNNLkcWg/a/eHFceyt3IlcD9XaZ1aKPzPmpjYKKf5amiYd6mAssw8zFaZUvwaXkNuHZpXVZyg6C6TkT6kdfln+6fOJZpSGQzksy0jka/Rzx0KXjsp3oqO4tQJbC7AX0nvmD0zvLtyCURzfGV+n2IqQxpPf2nP75Evt8jamcuqm6pWoe+hj9zjGytIXpSKe35wzRwUAUrjgmZ9NweuWfi2uMPJlDv8/n+Q3HyjygA+GzixBGuYXDt1CD8ISZvuoygS+9+jeY9uYH8b me@Onyx\\n\", pairUUID = UUID \"834b4f39-ca66-4baf-9323-57ef7058d7d0\"},IPv4Addr 2281744576), verifiableDigest = \"8d5d380542f7377f09a4584a38b0dbcea9ea215c\"})"-[2013-11-01 16:55:58 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"kubbie\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvBEWT+AiAmehOFyTQWlSdwDs7DDbkw7rfZ4W/IeG5awZjMgT5BefIv9cmar8vGIIEFMZLpf8cL3xIargDz0xE2wuqj5CLkdz+DKp5f2FGs11Ax/62DZr+eCiVtPnwijFw0Cz0wMRzkN93uedrvzP/KkNRcczgWh3aZqn8WxlkCia1fyykm/pP3W80MNkiJYX5vXpu1NCV5KLu+UXQzKhM2njOauJ3W5wsMvSl8faZIpEmKVCD3BMDDruxTIxggA3kt9GCGvIbPawy+fGOpp/j6pHqnX3GB2kkT47RIZKYEv99HuLyvea+oY5R11FsC2yYY3ujIdUU0fXnV8pvrqSv me@kubbie\\n\", pairUUID = UUID \"fd6a6858-76c9-4eea-b733-9359c7313e72\"},IPv4Addr 1879091392), verifiableDigest = \"cbd8197c3d78c8c68bb30f63aa974cd88dd0fb13\"})"-[2013-11-01 16:55:59 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"Onyx\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBT0Y6TTzTg8nWwonmgUPPwJmPIaJzfEoJl8DbuylpgXqGCQ4doJXuvBODHIehPfyMr1xCWqNlNNLkcWg/a/eHFceyt3IlcD9XaZ1aKPzPmpjYKKf5amiYd6mAssw8zFaZUvwaXkNuHZpXVZyg6C6TkT6kdfln+6fOJZpSGQzksy0jka/Rzx0KXjsp3oqO4tQJbC7AX0nvmD0zvLtyCURzfGV+n2IqQxpPf2nP75Evt8jamcuqm6pWoe+hj9zjGytIXpSKe35wzRwUAUrjgmZ9NweuWfi2uMPJlDv8/n+Q3HyjygA+GzixBGuYXDt1CD8ISZvuoygS+9+jeY9uYH8b me@Onyx\\n\", pairUUID = UUID \"834b4f39-ca66-4baf-9323-57ef7058d7d0\"},IPv4Addr 2281744576), verifiableDigest = \"8d5d380542f7377f09a4584a38b0dbcea9ea215c\"})"-[2013-11-01 16:56:00 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"kubbie\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvBEWT+AiAmehOFyTQWlSdwDs7DDbkw7rfZ4W/IeG5awZjMgT5BefIv9cmar8vGIIEFMZLpf8cL3xIargDz0xE2wuqj5CLkdz+DKp5f2FGs11Ax/62DZr+eCiVtPnwijFw0Cz0wMRzkN93uedrvzP/KkNRcczgWh3aZqn8WxlkCia1fyykm/pP3W80MNkiJYX5vXpu1NCV5KLu+UXQzKhM2njOauJ3W5wsMvSl8faZIpEmKVCD3BMDDruxTIxggA3kt9GCGvIbPawy+fGOpp/j6pHqnX3GB2kkT47RIZKYEv99HuLyvea+oY5R11FsC2yYY3ujIdUU0fXnV8pvrqSv me@kubbie\\n\", pairUUID = UUID \"fd6a6858-76c9-4eea-b733-9359c7313e72\"},IPv4Addr 1879091392), verifiableDigest = \"cbd8197c3d78c8c68bb30f63aa974cd88dd0fb13\"})"-[2013-11-01 16:56:01 CDT] PairListener: received "PairMsg (Verifiable {verifiableVal = (PairReq,PairData {remoteHostName = Just \"Onyx\", remoteUserName = \"me\", remoteDirectory = \"~/annex\", remoteSshPubKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBT0Y6TTzTg8nWwonmgUPPwJmPIaJzfEoJl8DbuylpgXqGCQ4doJXuvBODHIehPfyMr1xCWqNlNNLkcWg/a/eHFceyt3IlcD9XaZ1aKPzPmpjYKKf5amiYd6mAssw8zFaZUvwaXkNuHZpXVZyg6C6TkT6kdfln+6fOJZpSGQzksy0jka/Rzx0KXjsp3oqO4tQJbC7AX0nvmD0zvLtyCURzfGV+n2IqQxpPf2nP75Evt8jamcuqm6pWoe+hj9zjGytIXpSKe35wzRwUAUrjgmZ9NweuWfi2uMPJlDv8/n+Q3HyjygA+GzixBGuYXDt1CD8ISZvuoygS+9+jeY9uYH8b me@Onyx\\n\", pairUUID = UUID \"834b4f39-ca66-4baf-9323-57ef7058d7d0\"},IPv4Addr 2281744576), verifiableDigest = \"8d5d380542f7377f09a4584a38b0dbcea9ea215c\"})"-...and so on and so on...-# End of transcript or log.-"""]]--> I was able to reproduce something very like this by starting-> pairing separately on both computers under poor network conditions (ie,-> weak wifi on my front porch).-> -> So, I've made a new PairReq message that has not been seen before -> always make the alert pop up, even if the assistant thinks it is-> in the middle of its own pairing process (or even another pairing process-> with a different box on the LAN).->-> (This shouldn't cause a rogue PairAck to disrupt a pairing process part-> way through.)-> -> [[done]] --[[Joey]]
− doc/bugs/OSX_git-annex.app_error:__LSOpenURLsWithRole__40____41__.mdwn
@@ -1,26 +0,0 @@-**What steps will reproduce the problem?**--Either double click on the app or from the terminal--    $ open /Applications/git-annex.app--**What is the expected output? What do you see instead?**--I'd expect to see git-annex run.  "git-annex" doesn't run and what I see (in the terminal) is:--    LSOpenURLsWithRole() failed with error -10810 for the file /Applications/git-annex.app.--**What version of git-annex are you using? On what operating system?**--*git-annex*: 3.20121017--*git-annex.app*: ???--*OS*: OSX 10.6.8 64 bit---**Please provide any additional information below.**--[[!tag /design/assistant/OSX]]--> This was fixed a while ago. [[done]] --[[Joey]] 
− doc/bugs/OS_X_10.8:_Can__39__t_reopen_webapp.mdwn
@@ -1,31 +0,0 @@-### Please describe the problem.--If the assistant is not running, I can successfully open the git-annex application, which will trigger my browser to open a new tab with the assistant interface.--However, once that has been done one time, there appears to be no way to get back to the assistant if the tab is closed.  Attempting to open the application again while the assistant is running in the background results in nothing happening at all. --### What steps will reproduce the problem?--1. Open git-annex.app-2. See assistant and then close the browser tab-3. Open git-annex.app again-4. Nothing happens--### What version of git-annex are you using? On what operating system?--Version 4.20130723-ge023649 on OS X 10.8.4.--### Please provide any additional information below.--From .git/annex/daemon.log:--[[!format sh """-[2013-07-28 00:01:08 CDT] main: starting assistant version 4.20130723-ge023649--(scanning...) [2013-07-28 00:01:08 CDT] Watcher: Performing startup scan-(started...)-"""]]--> [[done]]; I added the `&` to git-annex-shell.-> Hopefully that does not cause any other unwanted behavior..-> --[[Joey]]
− doc/bugs/Problem_with_bup:_cannot_lock_refs.mdwn
@@ -1,52 +0,0 @@-Hi!--Using bup for storing seems a good idea to save space, but I still have a problem when trying to copy files to my local git repo.-I have two partitions:--- /Data (NTFS)--- / (ext4)--I turned the directory /Data/Audio into a git-annex repo, and cloned it into /home/me/AudioClone.-I added the remote bup to AudioClone by doing:--    git annex initremote mybup type=bup encryption=none buprepo=--But when I try to copy some files that I have previously got by "git annex get" by doing:--    [~/AudioClone]$ git annex copy someartist/somealbum --to mybup--it fails and tells me:--    copy Order To Die/01 Morituri Te Salutant.flac (to mybup...) -    fatal: Cannot lock the ref 'refs/heads/WORM-s7351771-m1318841909--01 Morituri Te Salutant.flac'.-    Traceback (most recent call last):-      File "/usr/lib/bup/cmd/bup-split", line 170, in <module>-        git.update_ref(refname, commit, oldref)-      File "/usr/lib/bup/bup/git.py", line 835, in update_ref-        _git_wait('git update-ref', p)-      File "/usr/lib/bup/bup/git.py", line 930, in _git_wait-        raise GitError('%s returned %d' % (cmd, rv))-    bup.git.GitError: git update-ref returned 128--for each file, **except for the album cover file**, which is a simple JPG that bup doesn't try to split. This one gets copied nicely but the big FLAC files don't.--I tried to restart my session, in case bup adds my username to a group or something.--(I'm using Ubuntu 11.10)--> Apparently bup-split does not allow storing data using filenames with-> spaces in them. I can reproduce the same bug using the same filename;-> if I remove the spaces all is well.-> -> Since bup-split -n uses git branches, I guess git-annex needs to avoid-> giving it any names containing spaces, or anything else not allowed-> in a git branch name. The rules for legal git branch names are quite complex-> (see git-check-ref-format(1)) so it will take me some times to code-> this up.-> -> A workaround is to switch to the SHA256 backend-> (`git annex migrate --backend=SHA256`), which avoids spaces in its keys.-> --[[Joey]]-->> Now fixed in git. [[done]] --[[Joey]] 
− doc/bugs/WORM:_Handle_long_filenames_correctly.mdwn
@@ -1,4 +0,0 @@-I have files with very long filenames on an xfs at home. On my laptop the annex should have been checked out on an encfs, but there filenames can't be as long as on the xfs. So perhaps it would be good to limit the keysize to a sane substring of the filename e.g. use only the first 120 characters.--> Since there seems no strong argument for a WORM100, and better options-> exist, closing. [[done]] --[[Joey]] 
− doc/bugs/Watcher_crashed:_addWatch:_does_not_exist.mdwn
@@ -1,25 +0,0 @@-### Please describe the problem.--When starting an git annex webapp in my documents repository, i get the error message, that the watcher thread has died. The error message seems to be arising from the fact, that a watcher thread for an empty string should be started, which does not work.--### What steps will reproduce the problem?--I've no idea, how to reproduce this in another repostory.--### What version of git-annex are you using? On what operating system?--ii  git-annex  4.20130709   i386   manage files with git, without checking their contents into git--### 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--Watcher crashed: addWatch: does not exist (No such file or directory)-[2013-07-14 10:30:35 CEST] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory)--# End of transcript or log.-"""]]--> [[done]]; see my comment --[[Joey]]
− doc/bugs/__34__fatal:_bad_config_file__34__.mdwn
@@ -1,14 +0,0 @@-### Please describe the problem.--When running a command like `git annex copy --not --in bucket --to bucket`, I got:--`fatal: bad config file line 1 in /home/jim/tmp/git-annex14898.tmp`--I caught `git-annex14898.tmp` before it was deleted and it contained an HTML error page.-I have a remote `https://git.example.com/jim/annex.git`, and it appears that git-annex-is requesting `https://git.example.com/jim/annex.git/config`.  My server returns a 401 -Forbidden and an error page for that URL, but git-annex tries to use the response as a config file anyway.--Jim--> [[fixed|done]] --[[Joey]] 
− doc/bugs/amd64_i386_standalone:_no_SKEIN.mdwn
@@ -1,41 +0,0 @@-### Please describe the problem.--git-annex standalone has no SKEIN backends on i386 and amd64. OSX and Android standalones have them, debian package had it in version 4.20131106 and probably still does.--### What steps will reproduce the problem?--1. download git-annex standalone for amd64 or i386-2. extract-3. git-annex.linux/git-annex version--Expect key/value backends row to mention SKEIN. It does on other platforms, but not here.--Trying to e.g. get SKEIN-hashed files produces error messages.--### What version of git-annex are you using? On what operating system?-amd64 and i386 standalones 5.20140103 on Ubuntu Precise/12.04 (Mint 13)--### Please provide any additional information below.--[[!format sh """-clacke@acozed:~$ /usr/bin/git-annex version-git-annex version: 4.20131106-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA CryptoHash-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook-clacke@acozed:~$ ~/.local/libexec/git-annex.linux-5.20140103/git-annex version-git-annex version: 5.20131230-g4aa88d8-build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook external-clacke@acozed:~$ ~/.local/libexec/git-annex.linux-5.20140103_i386/git-annex version-git-annex version: 5.20131230-g52a46585-build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook external-"""]]---- [[clacke]]--> [[done]] The autobuilds are now running debian unstable, and SKEIN is included-> now. --[[Joey]] 
− doc/bugs/amd64_standalone:_ld-linux-x86-64.so.2:_not_found.mdwn
@@ -1,21 +0,0 @@-### Please describe the problem.-While trying to diagnose [[bugs/armel_standalone:_git-upload-pack_and_-receive-pack_not_shimmed/]] I updated the version of the standalone git-annex on Server A from 3.20121017 to the latest not daily build.--### What steps will reproduce the problem?-1. download git-annex standalone for amd64 (I did both the normal not-daily build, and the daily build, same thing in both)-2. extract-3. ./runshell--### What version of git-annex are you using? On what operating system?-Debian amd64 (yes... I know, blame asheesh)--### Please provide any additional information below.--[[!format sh """-greg@rose:~/bin/git-annex.linux$ ./runshell -exec: 2: /home/greg/bin/git-annex.linux/lib64/ld-linux-x86-64.so.2: not found-"""]]---### Indeed a dupe ###-Thanks clacke, [[done]] - Greg
− doc/bugs/android:_high_CPU_usage__44___unclear_how_to_quit.mdwn
@@ -1,28 +0,0 @@-### Please describe the problem.--I installed git-annex on my android device (Nook HD+, with Cyanogenmod 10.1 installed) for the first time today and was excited to get it working.  However, I noticed the device warming alarmingly, and, after installing a CPU usage monitor, it became clear that git annex was the problem, as it was hovering around 30-40% even when idle.--I tried quitting git-annex using the webapp's "Shutdown Daemon" menu option, and it seemed to shut down successfully, but the CPU monitor still showed that process present and taking up high amounts of CPU (sometimes well over 50%).  I used the android app switcher and noticed that the terminal emulator for git annex was still running; I tried to quit this by using the X button and it seemed to close, but the CPU monitor still showed the git-annex process consuming large amounts of CPU.  Finally I had to quit the process forcefully from the monitor.--### What steps will reproduce the problem?--Install & run; observe CPU.  I used a dedicated CPU monitor to stop it the first time; another time, I tried stopping it by going to Preferences, Apps, Running Applications, where it told me it had one process and one service running.  I stopped the service without issue; it said the process could not be safely stopped but I stopped it anyway and that successfully stopped the app.---### What version of git-annex are you using? On what operating system?--the current (4.20130826-g46f422) version on Android.--### 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--(I'm not sure how to get a log out of the web app to paste here unfortunately.--# End of transcript or log.-"""]]--> [[done]]; I fixed the bug which turned out to be a stupid-> minunderstanding of how a java library worked. --[[Joey]]
− doc/bugs/annex_get_fails:___34__No_such_file_or_directory__34__.mdwn
@@ -1,68 +0,0 @@-**What steps will reproduce the problem?**--I did a basic git annex setup with two repositories talking to each other.  They are on the same macine, but I identified them via the hostname, because I intend to set up my production systems on two machines.  Since I am new to annex, I'll reproduce the full sequence of commands to create the repos and sync them.  *I* noticed the trouble at the last step, when `git annex get` failed.--Here is the full sequence of commands:--    >>> cd /scr/wandschn/hackNtest/distributed/nyc/STU_files-    >>> git init-    >>> git annex init nyc-    >>> cd /scr/wandschn/hackNtest/distributed/pdx--    >>> git clone xerxes:/scr/wandschn/hackNtest/distributed/nyc/STU_files-    >>> git annex init pdx-    >>> git remote add nyc xerxes:/scr/wandschn/hackNtest/distributed/nyc/STU_files--    >>> cd /scr/wandschn/hackNtest/distributed/nyc/STU_files-    >>> git remote add pdx xerxes:/scr/wandschn/hackNtest/distributed/pdx/STU_files--    >>> mkdir shared-    >>> cp ../../../files/shared/* shared/.-    >>> git annex add shared-    >>> git commit -a -m "initial add of shared files"--    >>> cd /scr/wandschn/hackNtest/distributed/pdx/STU_files-    >>> git fetch nyc-    >>> git merge nyc/master-    >>> ls shared/135.mae-    shared/135.mae-    >>> git annex whereis shared/135.mae-    whereis shared/135.mae (1 copy)-            6f0368db-f1b1-4192-9200-3575c16c2ef1 -- origin (nyc)-    ok-    >>> git annex get shared/135.mae-    fatal: Could not switch to '../.git/annex/objects/KV/5f/SHA256-s1499628--4a7e2ba13096ee2d1a6b3c3b314efae623516d200c09d35ff0f695395b6ad47a': No such file or directory--    git-annex: <file descriptor: 4>: hGetLine: end of file-    failed-    git-annex: get: 1 failed--**What is the expected output? What do you see instead?**--I expected the file shared/135.mae to be copied from the remote repo to the local repo.  Instead, this command failed, and said that there was a missing file.  This file path is the one that the broken link points to, and it exists on the remote repo.--**What version of git-annex are you using? On what operating system?**--git version 1.7.9.6--git-annex 3.20120523--CentOS 6.3 (kernel 2.6.32)--64bit Xeon processor---**Please provide any additional information below.**--> Thanks for the command sequence, which I have tested here is ok with-> a current version of git-annex (except for one cd you left out..).-> -> You version of git-annex is quite old, and this-> particular bug was fixed in version 3.20120721.-> -> The bug is that it fails to correctly determine the git version at-> compile time, and I think it thinks you have an old version of git-> from before 1.7.7, which changed some behavior of `git check-attr`.-> -> Upgrading git-annex should fix this, please let me know if not. [[done]]-> --[[Joey]] 
doc/bugs/assistant_eats_all_CPU.mdwn view
@@ -520,3 +520,10 @@ 13761 23:56:38 Z ?        00:00:00      \_ [git] <defunct>  6252 12:56:59 S ?        00:01:09 /usr/bin/emacs23 """]]++#### This bug is fixed++> [[fixed|done]]. This was a Cronner bug, triggered when you had a+> scheduled fsck job that runs monthly at any time, and the last time it ran was on a day of a+> month > 12. Workaround: Disable scheduled fsck jobs, or change them to+> run on a specific day of the month. Or upgrade. --[[Joey]]
− doc/bugs/commitBuffer:_invalid_argument___40__invalid_character__41__.mdwn
@@ -1,228 +0,0 @@-What steps will reproduce the problem?--    $ git init a.git-    Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/-    $ cd a.git-    $ git annex init a-    init a ok-    (Recording state in git...)-    $ touch Ren$'\351'-    $ git annex add Ren$'\351'-    add René (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Added Rene'."-    [master (root-commit) a61b796] Added Rene'.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 "Ren\351"-    $ cd ..-    $ git clone -o a a.git b.git-    Cloning into b.git...-    remote: Counting objects: 13, done.-    remote: Compressing objects: 100% (9/9), done.-    remote: Total 13 (delta 1), reused 0 (delta 0)-    Receiving objects: 100% (13/13), done.-    Resolving deltas: 100% (1/1), done.-    $ cd b.git-    $ git annex copy --from=a --fast -v-    (merging a/git-annex into git-annex...)-    copy René -    git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)-    failed-    (Recording state in git...)-    git-annex: copy: 1 failed--What is the expected output? What do you see instead?--Expect that files will be copied, but they are not.--What version of git-annex are you using? On what operating system?--    $ echo $LANG-    en_US.UTF-8-    $ lsb_release -a-    No LSB modules are available.-    Distributor ID:	Ubuntu-    Description:	Ubuntu 11.10-    Release:	11.10-    Codename:	oneiric-    $ uname -a-    Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux-    $ bash --version-    GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)-    Copyright (C) 2011 Free Software Foundation, Inc.-    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>--    This is free software; you are free to change and redistribute it.-    There is NO WARRANTY, to the extent permitted by law.-    $ ghc --version-    The Glorious Glasgow Haskell Compilation System, version 7.4.2-    $ git annex version-    git-annex version: 3.20120807-    local repository version: 3-    default repository version: 3-    supported repository versions: 3-    upgrade supported from repository versions: 0 1 2--Please provide any additional information below.--The problem is related to weird characters in file names.  In the-above example, the "weird character" is an accented 'e' (entered with-$'\351' in bash and zsh).  I am able to add the files with weird-characters in their name to one annex, but I cannot copy them to other-annexes using `git annex copy`.--The above example is a simplification of a real problem I am-experiencing.  In my real scenario, the file is not empty.  See the-attachment for some variations, including with non-empty-files. UPDATE: I'm not allowed to add attachments. See below.--May be related to these (long-ago fixed) bugs:-http://git-annex.branchable.com/todo/support-non-utf8-locales/---"Attachment": Here are my notes, including more examples:--    Programs I'm using:--    $ echo $LANG-    en_US.UTF-8-    $ lsb_release -a-    No LSB modules are available.-    Distributor ID:	Ubuntu-    Description:	Ubuntu 11.10-    Release:	11.10-    Codename:	oneiric-    $ uname -a-    Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux-    $ bash --version-    GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)-    Copyright (C) 2011 Free Software Foundation, Inc.-    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>--    This is free software; you are free to change and redistribute it.-    There is NO WARRANTY, to the extent permitted by law.-    $ ghc --version-    The Glorious Glasgow Haskell Compilation System, version 7.4.2-    $ git annex version-    git-annex version: 3.20120807-    local repository version: 3-    default repository version: 3-    supported repository versions: 3-    upgrade supported from repository versions: 0 1 2---    Simplest way to see problem: one empty file with weird character-    (accented e: $'\351') in name:--    $ git init a.git-    Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/-    $ cd a.git-    $ git annex init a-    init a ok-    (Recording state in git...)-    $ touch Ren$'\351'-    $ git annex add Ren$'\351'-    add René (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Added Rene'."-    [master (root-commit) a61b796] Added Rene'.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 "Ren\351"-    $ cd ..-    $ git clone -o a a.git b.git-    Cloning into b.git...-    remote: Counting objects: 13, done.-    remote: Compressing objects: 100% (9/9), done.-    remote: Total 13 (delta 1), reused 0 (delta 0)-    Receiving objects: 100% (13/13), done.-    Resolving deltas: 100% (1/1), done.-    $ cd b.git-    $ git annex copy --from=a --fast -v-    (merging a/git-annex into git-annex...)-    copy René -    git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)-    failed-    (Recording state in git...)-    git-annex: copy: 1 failed---    Problem disappears with two empty files:--    $ cd ..-    $ git init a2.git-    Initialized empty Git repository in /var/tmp/git-annex-bug/a2.git/.git/-    $ cd a2.git-    $ git annex init a2-    init a2 ok-    (Recording state in git...)-    $ touch Ren$'\351'-    $ git annex add Ren$'\351'-    add René (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Add Ren$'\351'."-    [master (root-commit) 62ac1c8] Add Ren$'\351'.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 "Ren\351"-    $ touch Rene-    $ git annex add Rene-    add Rene (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Add Rene."-    [master c455523] Add Rene.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 Rene-    $ cd ..-    $ git clone -o a2 a2.git b2.git-    Cloning into b2.git...-    done.-    $ cd b2.git-    $ git annex copy --from=a2 --fast -v-    (merging a2/git-annex into git-annex...)-    copy Rene (from a2...) ok-    (Recording state in git...)---    Problem returns with two non-empty files:--    $ cd ..-    $ git init a4.git-    Initialized empty Git repository in /var/tmp/git-annex-bug/a4.git/.git/-    $ cd a4.git-    $ git annex init a4-    init a4 ok-    (Recording state in git...)-    $ touch Ren$'\351'-    $ rm Ren$'\351'-    $ ls-    $ echo "some content" > Ren$'\351'-    $ git annex add Ren$'\351'-    add René (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Add Ren$'\351'."-    [master (root-commit) f090d90] Add Ren$'\351'.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 "Ren\351"-    $ echo "some other content" > Rene-    $ git annex add Rene-    add Rene (checksum...) ok-    (Recording state in git...)-    $ git ci -m "Add Rene."-    [master 97c20cd] Add Rene.-     1 files changed, 1 insertions(+), 0 deletions(-)-     create mode 120000 Rene-    $ cd ..-    $ git clone -o a4 a4.git b4.git-    Cloning into b4.git...-    done.-    $ cd b4.git-    $ git annex copy --from=a4 --fast -v-    (merging a4/git-annex into git-annex...)-    copy Rene (from a4...) ok-    copy René -    git-annex: /var/tmp/git-annex-bug/b4.git/.git/annex/transfer/download/a5fcd0d4-e8c8-11e1-bb41-43ce1cb9a9f1/SHA256-s13--1c87b6727f523662df714f06a94ea27fa4d9050c38f4f7712bd4663ffbfdfa01: commitBuffer: invalid argument (invalid character)-    failed-    (Recording state in git...)-    git-annex: copy: 1 failed--> [[Fixed|done]]. Sorry this took so long, I was at a very busy point when-> you filed this and am only just getting caught up. --[[Joey]]
− doc/bugs/conq:_invalid_command_syntax.mdwn
@@ -1,30 +0,0 @@-I've been getting an occasional error from git-annex.--The error is:   'conq: invalid command syntax.'--For example, the last two commands I ran are:--    $ git annex unused-    unused . (checking for unused data...) (checking master...) (checking origin/master...) -      Some annexed data is no longer used by any files:-        NUMBER  KEY-        1       SHA256-s.....-      (To see where data was previously used, try: git log --stat -S'KEY')-      -      To remove unwanted data: git-annex dropunused NUMBER-      -    ok-    -    $ git annex dropunused 1-    dropunused 1 conq: invalid command syntax.-    ok----*OS:*  OSX + port installs of the GNU tools--*git-annex-version:*  3.20111211--*git-version:*  1.7.7.4--> [[done]], apparently not a git-annex bug --[[Joey]] 
− doc/bugs/fatal:_empty_ident_name.mdwn
@@ -1,51 +0,0 @@-**What steps will reproduce the problem?**--    stone@skynet ~/annex $ git init-    Initialized empty Git repository in /home/stone/annex/.git/-    stone@skynet ~/annex $ git annex init "work"-    init work -    *** Please tell me who you are.-    -    Run-    -      git config --global user.email "you@example.com"-      git config --global user.name "Your Name"-    -    to set your account's default identity.-    Omit --global to set the identity only in this repository.-    -    fatal: empty ident name (for <stone@skynet>) not allowed-    git-annex: git ["--git-dir=/home/stone/annex/.git","--work-tree=/home/stone/annex","commit-tree","4b825dc652cb6eb9a060e64bf8d69288fbee4904"] exited 128-    stone@skynet ~/annex $ git config -l-    user.email=stone@nospam.hu-    user.name=Stone-    core.editor=nano-    color.ui=auto-    core.repositoryformatversion=0-    core.filemode=true-    core.bare=false-    core.logallrefupdates=true-    annex.uuid=499fb545-0b98-4bfc-816c-fb3704f3aaa0-    stone@skynet ~/annex $ cat ~/.gitconfig -    [user]-    	email = stone@nospam.hu-    	name = Stone-    [core]-    	editor = nano-    [color]-    	ui = auto-    stone@skynet ~/annex $ --**What is the expected output? What do you see instead?**---**What version of git-annex are you using? On what operating system?**--commit 56c037c69e75def74d6ea90de8aa8a1954c52178 Arch Linux--**Please provide any additional information below.**--> [[done]] by adding name to the user, in /etc/passwd. --Stone-->> Actually, [[done]] by avoiding clobbering HOME when running some git->> commands. --[[Joey]]
− doc/bugs/fatal:_git-write-tree:_error_building_trees.mdwn
@@ -1,103 +0,0 @@-### Please describe the problem.-Not able to successfully git-annex sync with a remote due to a git fatal. Caused by masters diverging?--### What steps will reproduce the problem?-git-annex sync, or, letting the assistant try.--### What version of git-annex are you using? On what operating system?-git-annex version: 5.20131221+b1 on my laptop-git-annex version: 5.20131224-g6ca5271 on the remote server--### Please provide any additional information below.--Output of a manual git-annex sync in the directory:--[[!format sh """-greg@x200s:~/Documents$ git-annex sync-commit  (Recording state in git...)-Copyright Office/Orphan Works/ARROW/170409_ARROW_Leaflet.pdf: unmerged (783afced6bc43138373fda43edfda0c33be36525)-Copyright Office/Orphan Works/ARROW/ARROWproject_results1.pdf: unmerged (b536e5f3d93e7905e05510f26db1f743e9eae16e)-Copyright Office/Orphan Works/ARROW/ARROWproject_results1.ppt: unmerged (5543049b8940cc5702d37aff18b03c67d9c8374d)-Copyright Office/Orphan Works/ARROW/ARROWstandardPresent2010.pdf: unmerged (54d751bc98cb5da29d3d568856b74675e842072e)-Copyright Office/Orphan Works/ARROW/ARROWstandardPresent2010.ppt: unmerged (efe0e94b51eccb9a6a0c352f4a210bd5a6105050)-Copyright Office/Orphan Works/ARROW/ARROWtrifoldMAR2011.pdf: unmerged (b52ff16178e29261fe00a518c23610a3b0826482)-Copyright Office/Orphan Works/Documentation/20110531/Documentation.doc.odt: unmerged (1348d5f42f7e34706407f7936f4fb0438e4b8ffa)-Copyright Office/Orphan Works/Documentation/AAPpublishers.pdf: unmerged (3f448a03d31a38adb095e3031e4ee13771d22d70)-Copyright Office/Orphan Works/Documentation/Documentation.doc: unmerged (265fdff7787f560e3ba20789a12e15ffb165ec7f)-Copyright Office/Orphan Works/Documentation/Documentation.pdf: unmerged (7a9ff92663ed42b42b9baaefaf4721499d18d82d)-...-fatal: git-write-tree: error building trees-git-annex: failed to read sha from git write-tree-"""]]--See also:--1. the [partial daemon log](http://paste.debian.net/73176/) from the assistant running in that directory on the laptop and -2. the output of [git fsck](http://paste.debian.net/73175/) on the remote.--git-annex repair on the laptop and the server:-[[!format sh """-greg@x200s:~/Documents$ git-annex repair-Running git fsck ...-No problems found.-ok-"""]]---### How I ended up fixing it:-[[!format sh """-greg@x200s:~/Documents$ killall git-annex-greg@x200s:~/Documents$ git-annex indirect-blah...............-indirect  ok-ok-greg@x200s:~/Documents$ git status-On branch master-Your branch and 'rose/master' have diverged,-and have 294 and 1 different commit each, respectively.-  (use "git pull" to merge the remote branch into yours)--Untracked files:-  (use "git add <file>..." to include in what will be committed)--	.gitrefs/--nothing added to commit but untracked files present (use "git add" to track)-greg@x200s:~/Documents$ git pull-Merge made by the 'recursive' strategy.- Copyright Office/Orphan Works/staging/reporting/process_report.txt.2 | 1 +- Copyright Office/Orphan Works/staging/reporting/with-title.xls       | 1 +- Copyright Office/Orphan Works/staging/with-title.xls                 | 1 +- Copyright Office/Orphan Works/worker_emails.txt                      | 1 +- git.fsck.log                                                         | 1 +- 5 files changed, 5 insertions(+)- create mode 120000 Copyright Office/Orphan Works/staging/reporting/process_report.txt.2- create mode 120000 Copyright Office/Orphan Works/staging/reporting/with-title.xls- create mode 120000 Copyright Office/Orphan Works/staging/with-title.xls- create mode 120000 Copyright Office/Orphan Works/worker_emails.txt- create mode 120000 git.fsck.log-greg@x200s:~/Documents$ git-annex sync-commit  ok-pull rose --Already up-to-date.-ok-push rose -Counting objects: 1658, done.-Delta compression using up to 2 threads.-Compressing objects: 100% (904/904), done.-Writing objects: 100% (1604/1604), 138.97 KiB | 0 bytes/s, done.-Total 1604 (delta 892), reused 1298 (delta 688)-To greg@rose.makesad.us:/home/greg/Documents/-   f1d206e..e836b9b  master -> synced/master-ok-greg@x200s:~/Documents$-"""]]--I restarted the assistant and the daemon.log looks good.--After sync'ing on the server, it appears that this has been the case for quite some time (based off of what symlinks were created).--Lastly: Joey, this is probably what caused that weird behavior in the webapp where it showed the bad transfer each day after the fsck at noon. I never diagnosed that more but I bet I won't see it tomorrow.--[[!tag moreinfo]]
− doc/bugs/feature_request:_addhash.mdwn
@@ -1,29 +0,0 @@-### Use case 1--I have a big repo using a SHA256E back-end. Along comes a new shiny SKEIN512E back-end and I would like to transition to using that, because it's faster and moves from ridiculously to ludicrously low risk of collisions.--I can set `.gitattributes` to use the new back-end for any new files added, but then I when I import some arbitrary mix of existing and new files to the repo it will not deduplicate any more, it will add all the files under the new hash scheme.--### Use case 2--I have a big repo of files I have added using `addurl --fast`. I download the files, and they are in the repo.-- - I cannot verify later that none of them have been damaged.- - If I come across an offline collection of some of the files, I cannot easily get them into the annex by a simple import.--### Workaround--In both these cases, what I can do is <del>unlock (maybe?) or unannex (definitely) all of the files, and then re-add them using the new hash</del> <em>use `migrate` to relink the files using the new scheme</em>. In both use cases this means I now risk having duplicates in various clones of the repo, and would have to clean them up with `drop-unused` -- after first having re-copied them from a repo that has them under the new hash <em>or `migrate`d them in each clone using the pre-migration commit; Either way is problematic for special remotes, in particular glacier</em>. I also lose the continuity of the history of that object.--<del>In use case 2 I also lose the URLs of the files and would have to re-add them using `addurl`.</del> <em>This is probably not true when using `migrate`.</em>--... which brings me to the proposed feature.--### addhash--Symmetrical to `addurl`, which in one form can take an existing hashed (or URL-sourced) file and add an URL source to it, `addhash` can take an existing URL-sourced (or hashed) file and add a hash reference to it (given that the file is in the annex so that the hash may be calculated) -- an alias under which it may also be identified, in addition to the existing URL or hash.-- - Any file added to the annex after `addhash` will use the symlink name of the original hash if their hash matches the `addhash`ed one.- - An `fsck` run will use one of the available hashes to verify the integrity of the file, maybe according to some internal order of preference, or possibly a configurable one.--> [[done]] --[[Joey]]
− doc/bugs/git-annex-shell:_gcryptsetup_permission_denied.mdwn
@@ -1,48 +0,0 @@-### Please describe the problem.-I followed the tip on [fully encrypted git repositories with gcrypt](http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) to create encrypted git-annex repository on a ssh server. When I try to checkout the repository, things break as follows:--`git clone gcrypt::ssh://my.server/home/me/encryptedrepo myrepo` --works as expected but when in the myrepo directory, --`git annex enableremote encryptedrepo gitrepo=ssh://my.server/home/me/encryptedrepo`--issues the following text (among normal messages):--`git-annex-shell: gcryptsetup permission denied`--Then while the links are there, --`git annex get --from encryptedrepo`--does nothing (in the sense that the content is not retrieved). --This seems to have everything to do with git-annex-shell as the exact same manipulations but with a local repository work perfectly. Unfortunately, I don't know haskell so [this code](https://github.com/joeyh/git-annex/blob/master/Command/GCryptSetup.hs) is cryptic to me. I can guess there is a problem getting the uuid of the repository, but as far as I can tell the bare distant repo looks fine. --### What steps will reproduce the problem?--Create a standard git annex local repository and then follow the [fully encrypted git repositories with gcrypt tip](http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) to create an encrypted git-annex repository on a ssh server. Then follow the instructions in the same tip to clone the remote repository. --### What version of git-annex are you using? On what operating system?-Both computers run ubuntu 12.04 with all updates and the latest git annex from the ppa, that is:--git-annex version: 4.20131024--build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA--key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL--remote types: git gcrypt S3 bup directory rsync web webdav glacier hook---### 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.-"""]]--> [[fixed|done]] --[[Joey]]
− doc/bugs/git-annex:_Argument_list_too_long.mdwn
@@ -1,40 +0,0 @@-### Please describe the problem.--Creating a SSH remote git-annex repository using the assisstant gives transcript:--Initialized empty shared Git repository in /home/flindner/annex2/-exec: 76: git-annex: Argument list too long--### What steps will reproduce the problem?--Using assistent: Creating a new empty local repository. Next, add another remote server repository using SSH. Checking the server went fine. I choose creating git repository. After about 5 minutes the error message above appears. In that time on the server runshell and git take plenty of CPU power but almost no memory. The directory on the server is created, but pairing was not successfull.--### What version of git-annex are you using? On what operating system?--Local: git-annex-standalone 4.20130909-1 from Archlinux AUR-Remote: git-annex-standalone-i386.tar.gz as of 13. sept. 13. on Debian Squeeze.--### 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--daemon.log is empty.--Log from the web GUI:--[2013-09-13 12:34:11 CEST] main: starting assistant version 4.20130827-g4f18612--  No known network monitor available through dbus; falling back to polling-(scanning...) [2013-09-13 12:34:11 CEST] Watcher: Performing startup scan-(started...) ---# End of transcript or log.-"""]]--> [[done]]; I have added a guard to runshell to detect when it has-> started to loop. Although I don't understand how a system could be-> misconfigured to let that happen, without going far out of your way to -> mess it up, it's a failure mode that's worth guarding against. --[[Joey]]
− doc/bugs/git-annex:_Cannot_decode_byte___39____92__xfc__39__.mdwn
@@ -1,34 +0,0 @@-What steps will reproduce the problem?--    alip@hayalet /tmp/aaa (git)-[master] % git annex init aaa-    init aaa ok-    (Recording state in git...)-    alip@hayalet /tmp/aaa (git)-[master] % git remote add çüş /tmp/çüş-    alip@hayalet /tmp/aaa (git)-[master] % git annex sync --debug-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","symbolic-ref","HEAD"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","show-ref","git-annex"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","show-ref","--hash","refs/heads/git-annex"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","log","refs/heads/git-annex..bc45cd9c2cb7c9b0c7a12a4c0210fe6a262abac9","--oneline","-n1"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","log","refs/heads/git-annex..9220bfedd1e13b2d791c918e2d59901af353825f","--oneline","-n1"]-    (merging origin/git-annex into git-annex...)-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","cat-file","--batch"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","update-index","-z","--index-info"]-    git ["--git-dir=/tmp/aaa/.git","--work-tree=/tmp/aaa","diff-index","--raw","-z","-r","--no-renames","-l0","--cached","9220bfedd1e13b2d791c918e2d59901af353825f"]-    git-annex: Cannot decode byte '\xfc': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream-    1 alip@hayalet /tmp/aaa (git)-[master] % --What is the expected output? What do you see instead?--Syncing a repository under a path with utf-8 characters in its name fails.--What version of git-annex are you using? On what operating system?--git-annex version: 3.20120624--On Exherbo, linux-3.4--Please provide any additional information below.--'\xfc' is valid UTF-8: 'LATIN SMALL LETTER U WITH DIAERESIS'--> closing as non-reproducible and presumably fixed. [[done]] --[[Joey]] 
− doc/bugs/git-annex:_Not_in_a_git_repository._.mdwn
@@ -1,22 +0,0 @@-What steps will reproduce the problem?--As a default user i want to start git-annex assistent with--`$ git-annex webapp`--`git-annex: Not in a git repository.`--What is the expected output? What do you see instead?--I would expect the assistent to popup in a opened browser window.--What version of git-annex are you using? On what operating system?--Debian wheezy with git-annex version: 3.20130114--Please provide any additional information below.--Its working if i start `git-annex webapp` as root. I had the same error on previous version.--> I've made some improvements. Think this was user error. [[done]]-> --[[Joey]]
− doc/bugs/git-annex:_fd:14:_hGetLine:_end_of_file.mdwn
@@ -1,51 +0,0 @@-[[!tag moreinfo]]--### Please describe the problem.--git-annex webapp won't run --### What steps will reproduce the problem?--[[!format sh """-arthur@machine:~/annex$ git-annex --debug webapp-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","show-ref","git-annex"]-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","show-ref","--hash","refs/heads/git-annex"]-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..a2b8f10ef258dff1a91e0354b2e2a58241631c9a","--oneline","-n1"]-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..8d4b8e04ccf0092d625f680b42e73d7bf15c6517","--oneline","-n1"]-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..6b2665208c11c9ecf969294bf45baac31894d8a7","--oneline","-n1"]-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..9d8429668f2148ea43760fb430e5950fbf42751e","--oneline","-n1"]-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt-[2013-07-29 15:02:15 CEST] chat: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","cat-file","--batch"]--git-annex: fd:14: hGetLine: end of file-failed-[2013-07-29 15:02:15 CEST] read: ssh ["-O","stop","-S","/home/arthur/annex/.git/annex/ssh/arthur@git-annex-hostname-arthur_annex","-o","ControlMaster=auto","-o","ControlPersist=yes","arthur@git-annex-hostname-arthur_annex"]-git-annex: webapp: 1 failed-"""]]---### What version of git-annex are you using? On what operating system?---$ git-annex version-git-annex version: 4.20130516.1-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP-local repository version: 3-default repository version: 3-supported repository versions: 3 4-upgrade supported from repository versions: 0 1 2--$ git --version-git version 1.7.9.5---### Please provide any additional information below.--
− doc/bugs/git-annex:_getUserEntryForID:_failed___40__Success__41__.mdwn
@@ -1,13 +0,0 @@-What steps will reproduce the problem?- Start "./git-annex-webapp"--What is the expected output? What do you see instead?- The webapp should start, but I get the error "git-annex: getUserEntryForID: failed (Success)"--What version of git-annex are you using? On what operating system?- 3.20121017 on "Ubuntu 10.04.4 LTS" 32-Bit--Please provide any additional information below.---> [[fixed|done]] --[[Joey]] 
− doc/bugs/git-annex:_status:_1_failed.mdwn
@@ -1,25 +0,0 @@-Hi--I have a 1 To repository on my local linux box--when i try :--    git annex status--i get :--    git-annex: /media/malima/nazare/.git/annex/tmp/0723300. Everywhere I Dub --: getFileStatus: does not exist (No such file or directory)-    failed--how could i fix this issue ?--many thanks for help--> [[done]]; I managed to reproduce this bug by making a temp file named-> ".git/annex/tmp/foo-", or indeed with any dash in it. This is enough-> to make git-annex think it's a key, but badly formed enough that-> it fails trying to use that key. Fixed to ignore such non-key files.-> -> I'm unsure why `.git/annex/tmp` would have such files in it.-> Perhaps the assistant was running, but crashed while adding files?-> --[[Joey]]
− doc/bugs/git-annex_get:_requested_key_is_not_present.mdwn
@@ -1,41 +0,0 @@-### Please describe the problem.--I setup 3 repositories on my laptop and 3 on my server using the webapp, see the following scheme:--Laptop <- sync with -> Server--    /home/fabian/Dokumente (Client) <-> /mnt/raid/Dokumente (Full-Backup)-    /home/fabian/Bilder (Client)    <-> /mnt/raid/Bilder (Full-Backup)-    /mnt/data-common/Audio (Manual) <-> /mnt/raid/Audio (Full-Backup)--As you can see, the Audio folder is in manual mode on the laptop, so it does not get any files automatically.-If I now want to get a folder with 'git-annex get' I get the following error:--    fabian@fabian-thinkpad /mnt/data-common/Audio $ git-annex get Musik-    get Musik/+⁄-/2003 - You Are Here (Bonus Disc)/01 - I've Been Lost.ogg (from eifel.fritz.box__mnt_raid_Audio...) -      requested key is not present-    rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]-    rsync error: error in rsync protocol data stream (code 12) at io.c(605) [Receiver=3.0.9]--      Unable to access these remotes: eifel.fritz.box__mnt_raid_Audio-    -      Try making some of these repositories available:-      	efe13d8c-2b02-455f-9874-b7043caa332f -- eifel.fritz.box__mnt_raid_Audio (fabian@eifel:/mnt/raid/Audio)-    failed--### What steps will reproduce the problem?--I do not really know the minimal setup to reproduce this problem.--### What version of git-annex are you using? On what operating system?--git-annex 4.20130417 on Gentoo Linux using Ebuilds from Haskell overlay--> I suspect this was some kind of misconfiguration, or -> one of the kinds of data corruption that git-annex can automatically heal from. -> -> I am pretty sure I didn't make any changes to git-annex that caused-> the problem to stop happening!-> -> While it would be very good to get to the bottom of this, I don't see-> any benefit to keeping this report open without more info. [[done]] --[[Joey]]
− doc/bugs/hGetContents:_user_error.mdwn
@@ -1,38 +0,0 @@-### Please describe the problem.-My server is on debian testing.  After an upgrade (git annex: 3.20120629 → 4.20130521) I can't do anything in my repository anymore.  git itself works, but invoking any git-annex command leads to:--    git-annex: fd:6: hGetContents: user error (Pattern match failure in do expression at libraries/base/GHC/Event/Thread.hs:90:3-10)--This repo is handled by a script, which invokes only the following git/git-annex commands:--    $ git annex sync-    $ git annex add-    $ git commit -m "…"--I realized this after trying to move files from my server to my local repo.  My local machine runs debian sid.  When trying to transfer files, this happens:--    $ git annex sync-    → ok-    $ git annex move --from origin .-    move x.zip (from origin...) -    user@host's password: ← pw ok-    git-annex-shell: fd:6: hGetContents: user error (Pattern match failure in do expression at libraries/base/GHC/Event/Thread.hs:90:3-10)-    rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]-    rsync error: error in rsync protocol data stream (code 12) at io.c(605) [Receiver=3.0.9]-    failed--I updated git-annex on both machines to 4.20130627 (rest of server is still on debian testing), but it didn't change anything.--The server was not down since the last successful transfer, so I can't imagine anything interrupting any git-annex process.--### What steps will reproduce the problem?-See above.--### What version of git-annex are you using? On what operating system?-Server: 4.20130521 on debian testing (now: 4.20130627)-Local: 4.20130621 on debian sid (now: 4.20130627)--[[!meta title="fails to run on Linux with libc 2.17 and old kernel 2.6.32"]]--> Closing this since it's a bad kernel and there is a workaround to build-> a git-annex that will work with this kernel (see comments).  [[done]] --[[Joey]]
− doc/bugs/internal_server_error:_unknown_UUID_on_webapp.mdwn
@@ -1,147 +0,0 @@-### Please describe the problem.--I am having trouble using the webapp with a setup I did on the commandline that was working fine.--I have two machines: one, a server called `marcos`, is available on the internetz and I cloned a repo from there into `markov`, a workstation that is hidden behind a NAT connexion (so I can't add it as a remote).--It seems that because the remote is not locally available as a git remote, the webapp is freaking out because it doesn't recognize `markov` as a proper remote.--### What steps will reproduce the problem?--1. setup git annex locally (on `marcos`) in a repository (probably `git annex init; git annex direct; git annex add .` i somewhat followed [[tips/Git_annex_and_Calibre/]])-2. `git clone` that repo on a remote, unaccessible (NAT'd) server (`markov`)-3. start doing some git annex get, get tired, run the web app on `markov`-4. let that run over there, go back to `marcos`-5. be curious about what is going on on `markov`, run the webapp and enter the path to the repository created in step one when prompted (it's the first time i run the webapp)-6. it starts up fine, but doesn't seem to detect `markov`, marking transfers as going to the remote named `unknown`-7. click on the `unknown` link, crash-8. go back to the dashboard, crash--From there on, the webapp is pretty much crashed, starting it from scratch asks me if i want to create a git annex repo.--### What version of git-annex are you using? On what operating system?--4.20130921-gd4739c5 compiled and installed by hand on debian wheezy.--### Please provide any additional information below.--[[!format sh """-# Here's everything that has been logged by the git-annex assistant, as well as by programs it has run.--[2013-11-04 22:42:50 EST] main: starting assistant version 4.20130921-gd4739c5-(merging synced/git-annex into git-annex...)-(Recording state in git...)--  No known network monitor available through dbus; falling back to polling-Already up-to-date.--(scanning...) [2013-11-04 22:42:50 EST] Watcher: Performing startup scan-04/Nov/2013:22:42:51 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:42:52 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:42:52 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-(Recording state in git...)-(Recording state in git...)-(started...) --  metadata.db still has writers, not adding-[2013-11-04 22:42:59 EST] Committer: Adding cover.jpg Ars Techn..ibre.epub Cyberpres..ibre.epub cover.jpg cover.jpg Ars Techn..ibre.epub cover.jpg Democracy..ibre.epub cover.jpg and 11 other files-add Calibre/Ars Technica [dim., 03 nov. 2013] (645)/cover.jpg (checksum...) ok-add Calibre/Ars Technica [dim., 03 nov. 2013] (645)/Ars Technica [dim., 03 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Cyberpresse [lun., 04 nov. 2013] (647)/Cyberpresse [lun., 04 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Cyberpresse [lun., 04 nov. 2013] (647)/cover.jpg (checksum...) ok-add Calibre/Ars Technica [sam., 02 nov. 2013] (642)/cover.jpg (checksum...) ok-add Calibre/Ars Technica [sam., 02 nov. 2013] (642)/Ars Technica [sam., 02 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Democracy now! [lun., 04 nov. 2013] (649)/cover.jpg (checksum...) ok-add Calibre/Democracy now! [lun., 04 nov. 2013] (649)/Democracy now! [lun., 04 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/xkcd [lun., 04 nov. 2013] (646)/cover.jpg (checksum...) ok-add Calibre/xkcd [lun., 04 nov. 2013] (646)/xkcd [lun., 04 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Cyberpresse [dim., 03 nov. 2013] (644)/cover.jpg (checksum...) ok-add Calibre/Cyberpresse [dim., 03 nov. 2013] (644)/Cyberpresse [dim., 03 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Le Devoir [sam., 02 nov., 2013] (640)/cover.jpg (checksum...) ok-add Calibre/Le Devoir [sam., 02 nov., 2013] (640)/Le Devoir [sam., 02 nov., 2013] - Calibre.epub (checksum...) ok-add Calibre/Le Devoir [lun., 04 nov., 2013] (648)/cover.jpg (checksum...) ok-add Calibre/Le Devoir [lun., 04 nov., 2013] (648)/Le Devoir [lun., 04 nov., 2013] - Calibre.epub (checksum...) ok-add Calibre/Cyberpresse [sam., 02 nov. 2013] (641)/cover.jpg (checksum...) ok-add Calibre/Cyberpresse [sam., 02 nov. 2013] (641)/Cyberpresse [sam., 02 nov. 2013] - Calibre.epub (checksum...) ok-add Calibre/Le Devoir [dim., 03 nov., 2013] (643)/cover.jpg (checksum...) ok-add Calibre/Le Devoir [dim., 03 nov., 2013] (643)/Le Devoir [dim., 03 nov., 2013] - Calibre.epub (checksum...) [2013-11-04 22:43:01 EST] Committer: Committing changes to git-ok-(Recording state in git...)-(Recording state in git...)-04/Nov/2013:22:43:51 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:47:24 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:47:24 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:47:24 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:52:29 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:52:30 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:52:30 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:56:47 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-[2013-11-04 22:57:08 EST] Committer: Adding metadata.db-journal-add metadata.db-journal (checksum...) [2013-11-04 22:57:08 EST] Committer: Committing changes to git-[2013-11-04 22:57:09 EST] Committer: Adding metadata.db-journal metadata.db-ok-(Recording state in git...)-(Recording state in git...)-add metadata.db (checksum...) [2013-11-04 22:57:09 EST] Committer: Committing changes to git-ok-(Recording state in git...)-(Recording state in git...)-04/Nov/2013:22:57:12 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:57:15 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:57:18 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-04/Nov/2013:22:57:20 -0500 [Error#yesod-core] Unknown UUID @(yesod-core-1.2.4.2:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:485:5)-"""]]--> I wonder if this couldn't be related to [[cannot determine uuid for origin]], although in this case the remote is just not added to `.git/config`. --[[anarcat]]--> This was fixed in commit 44e1524be53373ddbf28d643bedf5455433c2b2e-> on Sep 29th. You should update. [[done]]-> -> (It also sounds like your repository on markov is for some reason not-> able to push its git repository to marcos. You might need to fix-> something in your setup to get syncing working) --[[Joey]]-> -> > Humm.. Weird. Upgrading fixes the crash, but `marcos` still sees only-> > one repository. It sees some syncs going on from `unknown`, and when-> > I click on that `unknown` link, I get to edit that repository, and-> > it sees it as `here`. So I am not sure I understand what is going -> > on here.-> >-> > (As for the repo on `markov`, it does sync properly:-> > -> >     anarcat@desktop008:books$ git annex sync-> >     commit-> >     ok-> >     pull origin-> >     From anarc.at:/srv/books-> >        3b4fa7b..c35b13e  git-annex  -> origin/git-annex-> >     ok-> > -> > Or rather - it doesn't fail. But it doesn't push!-> > -> >     anarcat@desktop008:books$ git push-> >     Everything up-to-date-> > -> > Note that git on `marcos` is the 1.8.4 backport for some reason.-> > I know that branch tracking changed with that release, maybe -> > that's the problem? --[[anarcat]])-> > -> > > So yep, I confirm that even in 4.20131105-g8efdc1a, the webapp-> > > doesn't find the `markov` remote properly, even though-> > > `git annex status` can:-> > > -> > >     $ git annex status-> > >     repository mode: direct-> > >     trusted repositories: 0-> > >     semitrusted repositories: 3-> > >             00000000-0000-0000-0000-000000000001 -- web-> > >             a75cbbf7-e055-423e-b375-443e0552c9e2 -- here (anarcat@marcos:/srv/books)-> > >             aa500f29-42d9-4777-ae02-4a2c3d47db44 -- anarcat@markov:~/books-> > > -> > > I see transfers happening, but they go to "unknown". The link is:-> > > -> > > http://127.0.0.1:56577/config/repository/edit/UUID%20%22aa500f29-42d9-4777-ae02-4a2c3d47db44%22?auth=...-> > > -> > > -- [[anarcat]]-> > > -> > > > I have filed this as a separate bug to close the discussion properly here, sorry for the noise. :) see [[bugs/remote_not_showing_up_in_webapp]] --[[anarcat]]
− doc/bugs/minor_bug:_errors_are_not_verbose_enough.mdwn
@@ -1,26 +0,0 @@-Current:--    % git annex status-    git-annex: unknown command--Better: --    % git annex status-    git-annex: status: unknown command--Current:--    % git annex fsck-    [...]-    git-annex: 18 failed--Better:--    % git annex fsck-    [...]-    git-annex: fsck: 18 failed---etc pp.--> [[done]] --[[Joey]] 
− doc/bugs/rename:_permission_denied__44___after_direct_mode_switch.mdwn
@@ -1,81 +0,0 @@-### Please describe the problem.--On Mac OS X, I tried to switch a repository to direct mode, but there was a-problem in the middle of the switch (permission denied) and the switch-aborted, leaving the repository in a half switched state.--I tried different manipulations, one of which was a checkout (oops), switch-back to indirect, then direct again, and now I have the repository in direct-mode except one file which caused the permission denied error.--### What steps will reproduce the problem?--Do not know exactly why this file is special. I still have the repository, and-each time I try to get this file, it fails with the same error message.--### What version of git-annex are you using? On what operating system?--On Umba, git-annex version: 4.20130723, on Mac OS X 10.6.8.--### Please provide any additional information below.--Umba is the Mac OS X, camaar and riva are Debian machines.--[[!format sh """-Umba$ git annex version-git-annex version: 4.20130723-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS-Umba$--Umba$ git annex get --from riva --not --in here-get 2013-07-31/2013-07-31_180411.jpg (from riva...) -Password: -SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-     2819887 100%  943.08kB/s    0:00:02 (xfer#1, to-check=0/1)--sent 42 bytes  received 2820397 bytes  433913.69 bytes/sec-total size is 2819887  speedup is 1.00-failed-git-annex: get: 1 failed-Umba$ find . -name SHA256-s2819887-\*-./.git/annex/objects/wq/3j/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-./.git/annex/objects/wq/3j/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c.cache-./.git/annex/objects/wq/3j/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c.map-./.git/annex/transfer/failed/download/13fd5d5a-ed97-11e2-9178-574d3b1c0618/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-./.git/annex/transfer/failed/download/95443f2e-ed96-11e2-9d3f-8ffa5b1aae7a/SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-Umba$ git annex fsck-fsck 2013-07-31/2013-07-31_180411.jpg ok-(Recording state in git...)-Umba$ git annex drop 2013-07-31/2013-07-31_180411.jpg -Umba$ git annex get --from riva --not --in here-get 2013-07-31/2013-07-31_180411.jpg (from riva...) -Password: -SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-     2819887 100%  949.58kB/s    0:00:02 (xfer#1, to-check=0/1)--sent 42 bytes  received 2820397 bytes  512807.09 bytes/sec-total size is 2819887  speedup is 1.00-failed-git-annex: get: 1 failed-Umba$--camaar% git annex copy --to umba --not --in umba-copy 2013-07-31/2013-07-31_180411.jpg (checking umba...) (to umba...)-SHA256-s2819887--987f9811d7b5c7a287a74b7adbb852be4d18eeda61c3507f4e08c534d2356f4c-     2819887 100%    4.19MB/s    0:00:00 (xfer#1, to-check=0/1)-git-annex: //Users/nicolas/Pictures/Petites Boutes/.git/annex/tmp/2013-07-31_18041141700.jpg: rename: permission denied (Operation not permitted)-git-annex-shell: recvkey: 1 failed--sent 2820393 bytes  received 42 bytes  1128174.00 bytes/sec-total size is 2819887  speedup is 1.00-rsync error: syntax or usage error (code 1) at main.c(1070) [sender=3.0.9]-  -  rsync failed -- run git annex again to resume file transfer-failed-git-annex: copy: 1 failed-camaar%-"""]]--> Put in a fix that works, although perhaps not ideal as I do not-> understand how the repo got into the original problem state. [[done]]-> --[[Joey]]
− doc/bugs/rsync_transport:_username_not_respected.mdwn
@@ -1,43 +0,0 @@-### Please describe the problem.--I created an encrypted rsync remote with a username (user@host). The rsync command issued by git-annex doesn't contain the username. I solved the problem using .ssh/config.--### What steps will reproduce the problem?---[[!format sh """-# Add remote like that-git-annex initremote encrsync type=rsync rsyncurl=user@xxx.rsync.net:rsync/X keyid=0xXXX-# Sync it-git-annex sync --content---# You'll see-$> ps ax | grep rsync-30652 pts/3    S+     0:00 /home/ganwell/bin/git-annex.linux//lib64/ld-linux-x86-64.so.2 --library-path /home/ganwell/bin/git-annex.linux//etc/ld.so.conf.d:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu/gconv:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu/libc:/home/ganwell/bin/git-annex.linux//usr/lib:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu:/home/ganwell/bin/git-annex.linux//lib64:/home/ganwell/bin/git-annex.linux//lib/x86_64-linux-gnu: /home/ganwell/bin/git-annex.linux/shimmed/rsync/rsync xxx.rsync.net:rsync/X/9fa/634/'GPGHMACSHA1--X/GPGHMACSHA1--X-"""]]----### What version of git-annex are you using? On what operating system?--OS: Linux--Ver: git-annex version: 5.20140210-g1e0a3ad--Type: prebuilt--### 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.-"""]]--> Argh! How did that break? I know it used to work.-> I have fixed it, unfortunately the fix was too late for today's release,-> but it will be available in autobuilds shortly.-> [[fixed|done]] --[[Joey]] 
− doc/bugs/ssh:_unprotected_private_key_file.mdwn
@@ -1,62 +0,0 @@-### Please describe the problem.--When pairing two machines with git-annex assistant, the assistant kept asking for the ssh password.  Checking the git-annex daemon logs, I saw that ssh was refusing to use the key the assistant had created because it was group readable (see below for the log extract).--### What steps will reproduce the problem?--The assistant was installed from the ubuntu precise ppa backport on an up-to-date copy of ubuntu precise.-It was started using "git-annex webapp --listen=XYZ".-This was done on two machines on the same network.-Created a repository using the web-app, the same on both machines.-Did a pair request.  This initially worked fine, until it got to the point of using ssh, when it started asking for the password many many  times.--### What version of git-annex are you using? On what operating system?--git-annex version: 5.20140306-build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA CryptoHash-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external-local repository version: 5-supported repository version: 5-upgrade supported from repository versions: 0 1 2 4--Ubuntu 12.04.4 LTS--### 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--(started...) Generating public/private rsa key pair.-Your identification has been saved in /tmp/git-annex-keygen.0/key.-Your public key has been saved in /tmp/git-annex-keygen.0/key.pub.-The key fingerprint is:-2b:f4:28:35:72:2c:9e:5b:d3:1d:d1:a1:b7:c7:a5:34 ABC@XYZ-The key's randomart image is:-+--[ RSA 2048]----+-|            .    |-|           o .   |-|          o o E .|-|     .     o + + |-|    o * S . . +  |-|   . B = o . .   |-|    + = + .      |-|     + o         |-|    .            |-+-----------------+-[2014-03-14 13:35:45 GMT] main: Pairing in progress-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-Permissions 0620 for 'ABC/.ssh/git-annex/key.git-annex-XYZ_annex' are too open.-It is required that your private key files are NOT accessible by others.-This private key will be ignored.-bad permissions: ignore key: ABC/.ssh/git-annex/key.git-annex-XYZ_annex-(merging XYZ_annex/git-annex into git-annex...)--# End of transcript or log.-"""]]--> [[Fixed|done]]; the code made sure the file did not have any group or-> world read bits, but did not clear write bits. --[[Joey]]
− doc/bugs/unlock_not_working_on_os_x_10.6_-_cp:_illegal_option_--_-_.mdwn
@@ -1,22 +0,0 @@-What steps will reproduce the problem?--    try to unlock a file in a git annex checkout--What is the expected output? What do you see instead?--    % git annex unlock FILENAME-    unlock FILENAME (copying...) cp: illegal option -- --    usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file-           cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory-    git-annex: copy failed!--    (should unlock the file)--What version of git-annex are you using? On what operating system?--    latest git annex osx build as of yesterday (12-11-03)---> I've made the `cp` command be included in the OSX standalone build, -> so it will use the same one it's built with. So the next time we get-> an OSX build this will be fixed. [[done]] --[[Joey]]
− doc/bugs/view_logs_fails:_Internal_Server_Error__internal_liftAnnex.mdwn
@@ -1,20 +0,0 @@-### Please describe the problem.-I tried to setup a fresh local repository and got an error:-> Internal Server Error-> user error (git ["--git-dir=/home/jana/Bilder/Fotos/.git","--work-tree=/home/jana/Bilder/Fotos","commit-tree","4b825dc642cb6eb9a060e54bf8d69288fbee4904"] exited 128)--When clicking on "View logs", I get the following error:--> Internal Server Error-> internal liftAnnex--### What steps will reproduce the problem?-1. Run git-annex from programs menu-2. Click "Make repository"--### What version of git-annex are you using? On what operating system?-- git-annex 4.20130627 on Ubuntu 13.10, installed from debian unstable (sid) repository.-- git version 1.8.1.2--> I've made it detect systems that lack a FQDN and set user.email-> automatically. [[done]] --[[Joey]] 
− doc/bugs/webapp:_difficult_to_abort_adding_a_repository.mdwn
@@ -1,24 +0,0 @@-### Please describe the problem.-I could not find a way to abort the addition of a new remote repository.--### What steps will reproduce the problem?-- start adding a remote repository (unencrypted, with git-annex installed);-- forget to create the folder on the remote host;-- navigate away from the repository page;-- the dashboard says the repository is partially set-up, and the only thing one can do is look at the log (which says the folder is missing).--I was able to solve it by creating another repository with the exact same data.--### What version of git-annex are you using? On what operating system?--Version: 4.20131002-gf25991c on OS X 10.8.5--### 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.-"""]]
− doc/bugs/webapp_usability:_fails_mysteriously_on_newer_repo_layouts.mdwn
@@ -1,34 +0,0 @@-### Please describe the problem.--Starting the webapp on a repository that was hastily created by copying an existing one with an older version yields an undecipherable error.--Rather minor.--### What steps will reproduce the problem?--1. Install git-annex from git-2. make a repo-3. copy it over to an external hard drive-4. connect that drive to a wheezy box running git-annex from backports-5. add the external hard drive to the webapp as a new repo-6. boom--I expected git-annex to tell me:--    git-annex: Repository version 5 is not supported. Upgrade git-annex.--Instead, it popped a red box saying a scary "Internal server error". I couldn't read the daemon logs either.--### What version of git-annex are you using? On what operating system?--original version is:--    git-annex version: 5.20131109-gf2cb5b9--the failing version is running the one from wheezy backports.--### Please provide any additional information below.--screenshot coming up.--> [[fixed|done]] --[[Joey]]
− doc/bugs/webapp_usability:_put_the_notices_on_the_right.mdwn
@@ -1,18 +0,0 @@-### Please describe the problem.--The colored notices on the left of the screen are a little off. When they disappear, it also leaves a huge gap on the left side.--### What steps will reproduce the problem?--Click the `X` on all the messages on the left.--### What version of git-annex are you using? On what operating system?--4.20130815~bpo70+1 on Debian Wheezy, with Chromium Version 29.0.1547.57 Debian 7.1 (217859)--### Please provide any additional information below.--This is admittedly a very mild problem, but from a usability perspective, it would be less confusing to show those on the right. When they were gone, I thought git-annex was broken somewhat... -- [[anarcat]]--> [[done]], although I'm not sure I'm sold on their being on the right-> being better. --[[Joey]]
+ doc/contribute.mdwn view
@@ -0,0 +1,15 @@+Help make git-annex better!++* This website is a wiki, so you can edit and improve any page.+* Write a [[new_tip|tips]] explaining how to accomplish something with+  git-annex.+* [[download]] the source code and send patches!+* If you know Haskell, git-annex has lots of Haskell code that+  could be improved. See the [[coding_style]] and have at it.+* If you don't know Haskell, git-annex has many other coding opportunities.+  You could work to improve the Android port (Java etc) or improve the+  Javascript and CSS of the git-annex webapp, or work on porting libraries+  needed by the Windows port.++To send patches, either include the patch in a bug report (small patch)+or put up a branch in a git repository containing your changes.
doc/design/assistant.mdwn view
@@ -3,7 +3,7 @@ Parts of the design is still being fleshed out, still many ideas and use cases to add. Feel free to chip in with comments! --[[Joey]] -See [[roadmap]] for current plans.+See [[roadmap]] for current plans, as this list was mostly completed.  ## initial development kickstarter year overview (2012-2013) 
− doc/design/assistant/blog/day_150__12:12.mdwn
@@ -1,53 +0,0 @@-Yesterday I cut another release. However, getting an OSX build took until-12:12 pm today because of a confusion about the location of lsof on OSX. The-OSX build is now available, and I'm looking forward to hearing if it's working!--------Today I've been working on making `git annex sync` commit in direct mode.--For this I needed to find all new, modified, and deleted files, and I also-need the git SHA from the index for all non-new files. There's not really-an ideal git command to use to query this. For now I'm using-`git ls-files --others --stage`, which works but lists more files than I-really need to look at. It might be worth using one of the Haskell libraries-that can directly read git's index.. but for now I'll stick with `ls-files`.--It has to check all direct mode files whose content is present, which means-one stat per file (on top of the stat that git already does), as well as one-retrieval of the key per file (using the single `git cat-file` process that-git-annex talks to).--This is about as efficient as I can make it, except that unmodified-annexed files whose content is not present are listed due to --stage,-and so it has to stat those too, and currently also feeds them into `git add`.--The assistant will be able to avoid all this work, except once at startup.--Anyway, direct mode committing is working!--For now, `git annex sync` in direct mode also adds new files. This because-`git annex add` doesn't work yet in direct mode.--It's possible for a direct mode file to be changed during a commit,-which would be a problem since committing involves things like calculating-the key and caching the mtime/etc, that would be screwed up. I took-care to handle that case; it checks the mtime/etc cache before and after-generating a key for the file, and if it detects the file has changed,-avoids committing anything. It could retry, but if the file is a VM disk-image or something else that's constantly modified, commit retrying forever-would not be good.--------For `git annex sync` to be usable in direct mode, it still needs-to handle merging. It looks like I may be able to just enhance the automatic-conflict resolution code to know about typechanged direct mode files.--The other missing piece before this can really be used is that currently-the key to file mapping is only maintained for files added locally, or-that come in via `git annex sync`. Something needs to set up that mapping-for files present when the repo is initally cloned. Maybe the thing-to do is to have a `git annex directmode` command that enables/disables-direct mode and can setup the the mapping, as well as any necessary unlocks-and setting the trust level to untrusted.
doc/design/git-remote-daemon.mdwn view
@@ -37,35 +37,24 @@  # design -Let git-remote-daemon be the name. It runs in a repo and-either:--* forks to background and performs configured actions (ie, `git pull`)-* with --foreground, communicates over stdio-  with its caller using a simple protocol (exiting when its caller closes its-  stdin handle so it will stop when the assistant stops).--It is configured entirely by .git/config.--# encryption & authentication+Let git-remote-daemon be the name. Or for git-annex,+`git annex remotedaemon`. -For simplicity, the network transports have to do their own end-to-end-encryption. Encryption is not part of this design.+It runs in one of two ways: -(XMPP does not do end-to-end encryption, but might be supported-transitionally.)+1. Forked to background, using a named pipe for the control protocol.+2. With --foreground, the control protocol goes over stdio. -Ditto for authentication that we're talking to who we indend to talk to.-Any public key data etc used for authenticion is part of the remote's-configuration (or hidden away in a secure chmodded file, if neccesary).-This design does not concern itself with authenticating the remote node,-it just takes the auth token and uses it.+Either way, behavior is the same: -For example, in telehash, each node has its own keypair, which is used-or authentication and encryption, and is all that's needed to route-messages to that node.+* Get a list of remotes to act on by looking at .git/config+* Automatically notices when a remote has changes to branches+  matching remote.$name.fetch, and pulls them down to the appropriate+  location.+* When the control protocol informs it about a new ref that's available,+  it offers the ref to any interested remotes. -# stdio protocol+# control protocol  This is an asynchronous protocol. Ie, either side can send any message at any time, and the other side does not send a reply.@@ -82,25 +71,21 @@  * `CONNECTED $remote` -  Send when a connection has been made with a remote.+  Sent when a connection has been made with a remote.  * `DISCONNECTED $remote` -  Send when connection with a remote has been lost.--* `CHANGED $remote $sha ...`--  This indicates that refs in the named git remote have changed,-  and indicates the new shas.+  Sent when connection with a remote has been lost. -* `STATUS $remote $string`+* `SYNCING $remote` -  A user-visible status message about a named remote.+  Indicates that a pull or a push with a remote is in progress.+  Always followed by DONESYNCING. -* `ERROR $remote $string`+* `DONESYNCING 1|0 $remote` -  A user-visible error about a named remote.  -  (Can continue running past this point, for this or other remotes.)+  Indicates that syncing with a remote is done, and either succeeded+  (1) or failed (0).  ## consumed messages @@ -119,22 +104,45 @@    Affects all remotes. -* `PUSH $remote`+* `CHANGED ref ...` -  Requests that a git push be done with the remote over the network-  transport when next possible. May be repeated many times before the push-  finally happens.+  Indicates that a ref is new or has changed. These can be offered to peers,+  and peers that are interested in them can pull the content.  * `RELOAD`    Indicates that configs have changed. Daemon should reload .git/config   and/or restart. -# send-pack and receive-pack+  Possible config changes include adding a new remote, removing a remote,+  or setting `remote.<name>.annex-sync` to configure whether to sync with a+  particular remote. -Done as the assistant does with XMPP currently. Does not involve-communication over the above stdio protocol.+* `STOP` +  Shut down git-remote-daemon++  (When using stdio, it also should shutdown when it reaches EOF on +  stdin.)++# encryption & authentication++For simplicity, the network transports have to do their own end-to-end+encryption. Encryption is not part of this design.++(XMPP does not do end-to-end encryption, but might be supported+transitionally.)++Ditto for authentication that we're talking to who we indend to talk to.+Any public key data etc used for authenticion is part of the remote's+configuration (or hidden away in a secure chmodded file, if neccesary).+This design does not concern itself with authenticating the remote node,+it just takes the auth token and uses it.++For example, in telehash, each node has its own keypair, which is used+or authentication and encryption, and is all that's needed to route+messages to that node.+ # network level protocol  How do peers communicate with one another over the network?@@ -143,17 +151,27 @@ one design, and git-annex-shell on a central ssh server has a very different (and much simpler) design. -## git-annex-shell+## ssh -Speak a subset of the stdio protocol between git-annex-shell and-git-remote-daemon, over ssh.+`git-annex-shell notifychanges` is run, and speaks a simple protocol+over stdio to inform when refs on the remote have changed. -Only thing that seems to be needed is CHANGED, actually!+No pushing is done for CHANGED, since git handles ssh natively. +TODO:++* Remote system might not be available. Find a smart way to detect it,+  ideally w/o generating network traffic. One way might be to check+  if the ssh connection caching control socket exists, for example.+* Remote system might be available, and connection get lost. Should+  reconnect, but needs to avoid bad behavior (ie, constant reconnect+  attempts.)+* Detect if old system had a too old git-annex-shell and avoid bad behavior+ ## telehash   TODO -## XMPP+## xmpp  Reuse [[assistant/xmpp]]
doc/design/roadmap.mdwn view
@@ -11,7 +11,7 @@ * Month 5 user-driven features and polishing * Month 6 get Windows out of beta, [[!traillink design/metadata text="metadata and views"]] * Month 7 user-driven features and polishing-* **Month 8 [[!traillink assistant/telehash]]**+* **Month 8 [[!traillink git-remote-daemon]] [[!traillink assistant/telehash]]** * Month 9 [[!traillink assistant/gpgkeys]] [[!traillink assistant/sshpassword]] * Month 10 get [[assistant/Android]] out of beta * Month 11 [[!traillink assistant/chunks]] [[!traillink assistant/deltas]]
+ doc/devblog/day_147__git-annex_remotedaemon.mdwn view
@@ -0,0 +1,5 @@+Built `git-annex remotedaemon` command today. It's buggy, but it already+works! If you have a new enough git-annex-shell on a remote server, you can+run "git annex remotedaemon" in a git-annex repository, and it will notice+any pushes that get made to that remote from any other clone, and pull down+the changes.
+ doc/devblog/day_148__too_many_documents.mdwn view
@@ -0,0 +1,8 @@+Various bug triage today. Was not good for much after shuffling paper for+the whole first part of the day, but did get a few little things done.++Re <http://heartbleed.com/>, git-annex does not use OpenSSL itself,+but when using XMPP, the remote server's key could have been intercepted+using this new technique. Also, the git-annex autobuilds and this website+are served over https -- working on generating new https certificates now.+Be safe out there..
+ doc/devblog/day_149__remote_control_working.mdwn view
@@ -0,0 +1,15 @@+[[design/git-remote-daemon]] is tied into the assistant, and working!+Since it's not really ready yet, this is in the `remotecontrol` branch.++My test case for this is two client repositories, both running+the assistant. Both have a bare git repository, accessed over ssh,+set up as their only remote, and no other way to keep in touch with+one-another. When I change a file in one repository,+the other one instantly notices the change and syncs.++This is gonna be *awesome*. Much less need for XMPP. Windows will be fully+usable even without XMPP. Also, most of the work I did today will be fully+reused when the telehash backend gets built. The telehash-c developer is+making noises about it being almost ready for use, too!++Today's work was sponsored by Frédéric Schütz.
+ doc/devblog/day_149__signal.mdwn view
@@ -0,0 +1,16 @@+[[!meta title="day 150 signal"]]++The git-remote-daemon now robustly handles loss of signal, with+reconnection backoffs. And it detects if the remote ssh server has a too+old version of git-annex-shell and the webapp will display a warning+message.++[[!img /assistant/connection.png]]++Also, made the webapp show a network signal bars icon next to both+ssh and xmpp remotes that it's currently connected with. And, updated the+webapp's nudging to set up XMPP to now suggest either an XMPP or a ssh remote.++I think that the `remotecontrol` branch is nearly ready for merging!++Today's work was sponsored by Paul Tagliamonte.
+ doc/encryption/comment_2_f19c9bb519a7017f0731fd0e8780ed74._comment view
@@ -0,0 +1,22 @@+[[!comment format=mdwn+ username="https://openid.stackexchange.com/user/e65e6d0e-58ba-41de-84cc-1f2ba54cf574"+ nickname="Mica Semrick"+ subject="Encrypt with pub or sub?"+ date="2014-04-08T03:56:36Z"+ content="""+Forgive me, I'm a bit new to PGP.++I do: ++    $ gpg --list-keys+    /home/user/.gnupg/pubring.gpg+    ------------------------------+    pub   2048R/41363A6A 2014-04-03+    uid                  A Guy (git-annex key) <A@guy.com>+    sub   2048R/77998J8TDY 2014-04-03++and see the pub and the sub key.++When I init a new special remote and want encryption, should I give the init command the pub or the sub key? Or does git annex sort that out itself?++"""]]
− doc/forum/Advice_needed:_git-annex_slows_down_my_macbook.mdwn
@@ -1,21 +0,0 @@-I need some advice from more experienced users. --I've created four repositories on my macbook and paired them with repos on my ubuntu desktop. They are all created with the webapp so they might have some configurations that are not optimal for me.--In fact, when I start my macbook it is unusual for more than an hour because git-annex is reading and writing to and from the disk in the background. --I don't change much in three of the four repos, only one repo contains my daily work. --What configuration would enhance my situation?--The four repos are called:--- movies-- pictures-- music-- documents (many changes each day)--I have also problems to switch to the documents repo in the webapp.--TIA-juh
− doc/forum/Android:_is_constant_high_cpu_usage_to_be_expected__63__.mdwn
@@ -1,3 +0,0 @@-While running the Git Annex App on Android, the app causes a constant cpu usage of about 50% when idling. I've seen this behavior on two devices (phone and tablet) with a CM 10.1 nightly build. The app causes this high cpu usage even when it is in the background, not performing any synchronization and managing only one repository containing just one file. Unfortunately I couldn't figure out what causes the cpu usage. The daemon.log file remains unchanged and I couldn't find any other log files.--Is this expected behavior or unusual high cpu usage?
− doc/forum/Assistant:_configure_auto-sync.mdwn
@@ -1,11 +0,0 @@-I have large central repositories of data. Therefore, on each client I want to save part data(to save space of disk). In command line I do --	[...]-	git-annex webapp-	git-annex drop [DeleteContentDirectory]-	[...]--After this command Assistant performs automatic synchronization getting content of files from this directory(DeleteContentDirectory), but I don't want. I want it's was only symlink of file in this directory.--How can I configure Assistant which files have to get content on the client?  It's possible?- 
+ doc/forum/Automatically_dropping_files.mdwn view
@@ -0,0 +1,7 @@+I can make `git-annex` automatically fetch files with the [[/preferred content]] setting and the `--auto` flag, and it works almost exactly like I expect it to work.++What I am missing is a way to make `git annex drop --auto` drop all files that are not wanted.++I would like to work with metadata and tags in such a way that I can have clones (with views) that have only exactly those files available which carry a tag (done), and all other files automatically removed from the annex (unless that would be unsafe).++Does anyone know how to achieve this?
− doc/forum/Cabal:_Could_not_resolve_dependencies___40__yesod__41__.mdwn
@@ -1,19 +0,0 @@-Hi,--I try to install git-annex master with cabal, so I cloned the git repo and run "cabal install --only-dependencies". This gives me the following error:--    Resolving dependencies...-    cabal: Could not resolve dependencies:-    trying: git-annex-3.20120826 (user goal)-    trying: git-annex-3.20120826:+oldyesod-    trying: git-annex-3.20120826:+currentyesod-    next goal: yesod-default (dependency of git-annex-3.20120826:+oldyesod)-    rejecting: yesod-default-1.1.0 (conflict: git-annex-3.20120826:oldyesod =>-    yesod-default(<=1.0.1.1))-    rejecting: yesod-default-1.0.1.1, 1.0.1, 1.0.0, 0.6.1, 0.5.0, 0.4.1, 0.4.0,-    0.3.1 (conflict: git-annex-3.20120826:currentyesod => yesod-default(>=1.1.0))--Any idea how to fix this? (PS: I'm running Kubuntu 12.04)--Cheers,-Tobias
− doc/forum/Can__39__t_install:_Mac_OS_10.8.2.mdwn
@@ -1,36 +0,0 @@-###Tried to install git-annex.app--- App hangs up-- Cpu "git" load is 100-- Had to force quite git-annex--###Install thru command line: using Brew--- Installed haskell-- updated cabal-- But when I do:--`-cabal install git-annex --bindir=$HOME/bin-`--**I get this**--    Resolving dependencies...-    Configuring gnuidn-0.2...-    cabal: The program c2hs is required but it could not be found.-    Configuring libxml-sax-0.7.3...-    cabal: The pkg-config package libxml-2.0 is required but it could not be found.-    cabal: Error: some packages failed to install:-    git-annex-3.20121127.1 depends on libxml-sax-0.7.3 which failed to install.-    gnuidn-0.2 failed during the configure step. The exception was:-    ExitFailure 1-    libxml-sax-0.7.3 failed during the configure step. The exception was:-    ExitFailure 1-    network-protocol-xmpp-0.4.4 depends on libxml-sax-0.7.3 which failed to install.--Any help would be greatly appreciated. --Thanks,--Carlito
− doc/forum/Feature_Request:_add_filename_to_hash_objects.mdwn
@@ -1,6 +0,0 @@-hi,  -i just did git annex unused in 2 repos, one with WORM and one with SHA1.   -with WORM i instantly could see which file it was, with SHA1 not.  --so would it be possible to just add the first seen filename to the hashes identifier? the name could just be ignored but it would help with unused to see which file i am searching for.  -thanks!
− doc/forum/Feature_request:_Multiple_concurrent_transfers.mdwn
@@ -1,19 +0,0 @@-I'm sitting on a pretty fast connection, and often git-annex isn't using my entire upstream to fill the remotes.--Lets say i have an annex with 10 x 100mb files. and my git-annex has 5 special remotes that needs to be filled.--I would like to have git-annex do 5 concurrent uploads(one to each remote). Currently git-annex only uploads to one special-remote at a time (meaning the 4 remaining servers are just waiting).--It would also be nice to have a per remote number of threads. Especially if adding a directory with 1000 small files in it(say 100bytes each), having 5 transfer threads to each remote would make the sync complete much faster.---For now i've made a shell script that i call:--    # for j in `seq -w 0 10`; do echo DOING $j; for i in `curl "http://127.0.0.1:$1/?auth=$2" | grep "continue" | gawk -F\"  ' { print $8 } '`; do curl "http://127.0.0.1:$1$i"; sleep 0; done; done--But it is very rough, and basically just starts all transfers on the page. Which means i currently have 315 active transfers running. whoops.--I could improve the shell script. But it really would be quite a bit niftier to have it as settings in git-annex.--Sincerely-Tobias
− doc/forum/Feature_request:_git_annex_copy_--auto_does_the_right_thing.mdwn
@@ -1,5 +0,0 @@-I'm not sure of the right place for feature requests; sorry if this is incorrect.--It occurred to me that it would be neat if running git annex copy --auto copied enough copies of the file to connected remotes that don't have it to fulfil numcopies (if possible). Further coolness could come from choosing the remotes smartly (based, for example, on availability, access cost, remote disk space, trust level... you get the idea)--Having an option like this would allow the user to use numcopies to backup files to wherever possible, if they don't really care about where those copies go.
− doc/forum/Feature_request:_webapp_support_for_centralized_bare_repos.mdwn
@@ -1,1 +0,0 @@-I would like it if the webapp could support setting up [bare remotes](http://git-annex.branchable.com/tips/centralized_git_repository_tutorial/) to assist with syncing between two machines that are never online at the same time.
− doc/forum/Git_Annex_Assistant:_How_to_add_a_remote__63__.mdwn
@@ -1,11 +0,0 @@-Hi,--I am trying to use Git Annex Assistant on my Fedora Linux computer. I currently have a local repository that assistant monitors, but now I want to use my personal server as a git remote for the repository. I click on Configuration > Remote server and it prompts me for my server login credentials and then click the "Check this server" button. After this I am shown a screen that assistant is "Ready to add remote server" and then states:-> The server <MY IP ADDRESS HERE> can be used as is, but installing git-annex on it would make it work better, and provide more options below.->-> If you're able to install software on the server, do so and click Retry--The information shown below this message is regarding encrypting the data (if I have git-annex installed on the server, which I don't). So my question is, what do I do now? There is no button to just add the remote from within git annex assistant? I created a bare repository on my server and added a remote manually inside the repository on my local machine, but git annex assistant doesn't notice it. I'm clueless on what git annex assistant is expecting from me at this point. I would think what I'm trying to do is one of the most common use cases for git annex, but I can't find any documentation or materials on the correct procedure for this. Any help is appreciated.--Regards,-Blake
− doc/forum/Stupid_mistake:_recoverable__63__.mdwn
@@ -1,31 +0,0 @@-Hi,--I was a bit hasty the other day and did something stupid.  I-added a new folder to git annex.  Something like--    git annex add my-important folder--my-important folder contains a lot of files and it took a couple-of minutes to add.  When I then tried to do--    git commit -am 'added files'--per the walkthrough I got an error (9, as I recall).  I thought-I'd added too many files or something so I wanted to start over-and perhaps I didn't fully understand the mechanisms of annex I-did the following--    git reset --hard .--Unfortunately, did replaced my files with a bunch of symlinks,-rather than making git annex forget and go back to the previous-stage as I had hoped.--I have managed to recover most of my files from backup, but some-of them I still can't recover.  Is there any way back?  It seems-I still have the files in my git folder.--Thanks,-Rasmus--PS: Sorry, I shouldn't have made this text rather than Markdown.
− doc/forum/Suggestion:_Put_ssh_server_back_into_android_version.mdwn
@@ -1,9 +0,0 @@-Hi!--Just tried various android ssh servers which do work, but have no access to the command line tools shipped with git annex.--From what I gather from the planning docs, sshd was stripped from the android tools to save space. If this were the case, it (naively) seems to me it would have to be simple to re-enable.--Rationale: It would make it super convenient to use command line git annex on my phone alongside the assistant, through letting me type on my desktop. Not to mention that the command line tools shipped with git annex are by far the best around for android work.--Carlo
− doc/forum/WARNING:_linker:git-annex_has_text_relocations....mdwn
@@ -1,7 +0,0 @@-I have configured git-annex on my Nexus 5. Even though it works fantastic, it shows some warning messages.--1: 'git-annex sync' :  WARNING: linker: git-annex has text relocations. This is wasting memory and is a security risk. Please fix.--2: 'git log': error: cannot run less. No such file or directory.--Both the commands will work has expected with these warnings. What could be the issue here.
+ doc/forum/Walkthrough_for_direct_mode__63__.mdwn view
@@ -0,0 +1,1 @@+Hello Joey, I would be very much interested in a walkthrough for direct mode, as detailed as the one currently published. I see the comments in the current walkthrough on some differences to direct mode, but to me it is not obvious what best practices for git-annex use would be in direct mode, with and without the assistant. For a mix of Linux, OS X and Windows installations in the homes, it may also be interesting to see how to best set up the individual machines. Many thanks - 
− doc/forum/Wishlist:_Bittorrent-like_transfers.mdwn
@@ -1,5 +0,0 @@-**EDIT: Mistakenly posted this thread in the forum.  I created a new post in [[todo|todo/Bittorrent-like_features]]--Do you think it would be possible to have bittorrent-like transfers between remotes, so that no one remote gets pegged too hard with transfers? It would be great if you distribute your files between multiple bandwidth-capped remotes, and want fast down speed.  Obviously, this isn't a simple task, but the protocol is already there, it just needs to be adapted for the purpose (and re-written in Haskell...).  Maybe some day in the future after the more important stuff gets taken care of?  It could be an enticing stretch goal.--PS: still working on getting BTC, will be donating soon!
− doc/forum/Wishlist:_Don__39__t_make_files_readonly.mdwn
@@ -1,3 +0,0 @@-Maybe this explained somewhere else, but what is the purpose of marking files readonly. To me this is an annoyance that doesn't make sense. I want to be able to change my files, having to go through an unlock step, to do that seems like unnecessary work. Interestingly, Microsoft's Team Foundation Server source control does the same thing and I don't like it there either.--In addition why replace files with symlinks? Why not just leave the real files in place, or do the reverse and put the symlink to the file in the repository.
− doc/forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.mdwn
@@ -1,15 +0,0 @@-It would be extremely useful to have some additional ways to select files (for git annex copy/move/get and maybe others) based on the meta-information available to git-annex, rather than just by file or directory name.--An example of what I'd like to do is this:--    host1$ git annex copy --to usb-drive --missing-on host2--This would check location tracking information and copy each file from host1's annex which is not present on host2 onto the usb-drive annex -- i.e. it's what I want when I need to do a sneakernet synchronisation of host1 and host2 (for backup purposes, for example). Note that of course I could copy --to host2, assuming network connectivity, but that would take a long time.--There's probably other selectors that we can imagine; an obvious one could be --present-on <annex> -- useful for judiciously dropping only those files that you have easily available in a local annex (as you may want to keep files that are hard to make available even if --numcopies would nominally be satisfied).--Other similar ideas for file content selectors:-- * Files that have less than n, exactly n or more than n copies -- for when you need to satisfy your --numcopies policy over sneakernet.- * Files that are present (or not present) on some trusted annex -- for making sure you have trusted copies of everything.- * Boolean combinations of these filters -- "git annex drop --present-on lanserver1 --or --present-on lanserver2" or similar syntax, although obviously doing this in full generality may be quite fiddly.
− doc/forum/Wishlist:_automatic_reinject.mdwn
@@ -1,14 +0,0 @@-I think it would be useful to supplement the `reinject` command with an automatic-mode which calculates the checksum of the source file and injects the file if it-is known to the repository (without the need to provide a destination filename).-In addition, this could be done recursively if the user provides a directory to-inject. All this can probably be done already with some plumbing, but a simple-`reinject --auto` (or `scour`, or `scavenge`, if you like) would be a nice addition.-Of course this would only work for the checksum backends.--Example use cases would be:--* Recovering data from lost+found easily-* Making use of old (pre-git-annex) archival volumes with useful files-  scattered among non-useful files-* Sneaker-netting files between disconnected git-annex repositories
− doc/forum/Wishlist:_getting_the_disk_used_by_a_subtree_of_files.mdwn
@@ -1,10 +0,0 @@-I'm not sure if this _feature_ exists already wrapped or provided as a recipe for users or not yet. But it would be nice to be able to do a--    git annex du [PATH]--Such that the output that git annex would return is the total disk used locally in the PATH and the theoretical disk used by the PATH if it was fully populated locally. e.g.--    $ git annex du FSL0001_ANALYSIS-    $ Local: 1000kb, Annex: 2000kb--or something along the lines of that?
− doc/forum/Wishlist:_mark_remotes_offline.mdwn
@@ -1,12 +0,0 @@-I have several remotes which are not always accessible. For example they can-be on hosts only accessible by LAN or on a portable hard drive which is not-plugged in. When running sync these remotes are checked as well, leading to-unnecessary error messages and possibly git-annex waiting for a few minutes-on each remote for a timeout.--In this situation it would be useful to mark some remotes as offline-(`git annex offline <remotename>`), so that git-annex would not even attempt-to contact them. Then, I could configure my system to automatically, for example,-mark a portable hard disk remote online when plugging it in, and offline when-unplugging it, and similarly marking remotes offline and online depending on-whether I have an internet connection or a connection to a specific network.
− doc/forum/Wishlist:_options_for_syncing_meta-data_and_data.mdwn
@@ -1,13 +0,0 @@-Since _transfer queueing_  and syncing of data works now in the assistant branch (been playing with it), there are times when I really don't want to sync the data, I would like to just sync meta-data and manually do a _get_ on files that I would want or selectively sync data in a subtree.--It would be nice to have the syncing/watch feature to have the option of syncing only *meta-data* or *meta-data and data*, I think this sort of option was already planned? It would also be nice to be able to automatically sync data for only a subtree.--My use case is, I have a big stash of files somewhere at home or work, and I want to keep what I am actually using on my laptop and be able to selectively just take a subtree or a set of subtree's of files. I would not always want to suck down all the data but still have the functionally to add files and push them upstream and sync meta-data.--that is...--> * Site A: big master annex in a server room with lots of disk (or machines), watches a directory and syncs both data and meta-data, it should always try and pull data from all it's child repos. That way I will always have a master copy of my data somewhere, it would be even nicer if I could have clones of the annex, where each annex is on a different machine which is configured to only sync a subtree of files so I can distribute my annex across different systems and disks.->   * Site A: machine A: syncs Folder A->   * Site A: machine B: syncs Folder B->   * and so on with selectively syncing sites and directories-> * Laptop: has a clone of the annex, and watches a directory, syncs meta-data as usual and only uploads files to a remote (all or a designated one) but it never downloads files automatically or it should only occur inside a selected subtree.
− doc/forum/_preferred_content:_lastpresent.mdwn
@@ -1,1 +0,0 @@-Is there any kind of "lastpresent" in the preferred-content expression? If set, git-annex would see if "git log --follow $path -n 1" (or some configurable -n) was present.
− doc/forum/assitant:_special_remote_server___40__needs_ssh_tunnel__41__.mdwn
@@ -1,10 +0,0 @@-To connect to a remote server I have to tunnel it through a server I have access to. My .ssh/config for this connection looks like this:---    Host server-at-home-        HostName foo.bar.de-        User foo-        Port 222-        ProxyCommand /usr/bin/ssh me@server-i-have-access-to /bin/nc -w 3700 %h %p--Is it possible to create a connection using a similar configuration via the git-annex assistant?
− doc/forum/bainstorming:_git_annex_push___38___pull.mdwn
@@ -1,28 +0,0 @@-Wouldn't it make sense to offer--    git annex pull--which would basically do--    git pull-    git annex get--and--    git annex push--which would do--    git annex commit .-    git annex put # (the proposed "send to default annex" command)-    git commit -a -m "$HOST $(date +%F-%H-%M-%S)" # or similar-    git push--Resulting in commands that are totally analogous to git push & pull: Sync all data from/to a remote.--> Update:--This is useful:--    git config [--global] alias.annex-push '!git pull && git annex add . && git annex copy . --to $REMOTE --fast --quiet && git commit -a -m "$HOST $(date +%F--%H-%M-%S-%Z)" && git push'-
+ doc/forum/git_annex_assistant_-_Changing_repository_information.mdwn view
@@ -0,0 +1,1 @@+Here's one thing I don't fully understand yet. If I add a remote repository, like an archive repository on Box—or if I want to change a transfer repository to an archive repository—do I need to add it or change it separately on each of my computers? Or just one? 
− doc/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.mdwn
@@ -1,22 +0,0 @@-This is work in progress, since there is now a [[special_remotes/hook]] for users to plug in whatever they want as a remote, here's my recipe for using tahoe-lafs as a remote, this is a copy and paste the relavent section from my .git/config file--        tahoe-store-hook = tahoe put $ANNEX_FILE tahoe:$ANNEX_KEY-        tahoe-retrieve-hook = tahoe get tahoe:$ANNEX_KEY $ANNEX_FILE-        tahoe-remove-hook = tahoe rm tahoe:$ANNEX_KEY-        tahoe-checkpresent-hook = tahoe ls tahoe:$ANNEX_KEY 2>&1 || echo FAIL--Where `tahoe:` is a tahoe-lafs alias, ideally you should create a new alias (DIR-CAP or whatever the terminolgy is) to store your files, I just used the default `tahoe:` alias for testing.--The only quirk I've noticed is this...--<pre>-$ git annex whereis .-whereis frink.jar (2 copies) -  	084603a8-7243-11e0-b1f5-83102bcd7953  -- here (testtest)-   	1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a-ok-</pre>--1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a is my [[!google tahoe-lafs]] remote, but there is no label/description on it. The checkpresent-hook was a little confusing when I was setting it up, I'm currently unsure if I am doing the right thing or not with my hook. My get and put commands are a little verbose for now, i might redirect it to /dev/null once I am happier with the overall performance/behaviour my setup.--Other than the quirks above, I am able to put and get files from my tahoe-lafs remote. The only thing that I have not figured out is how to "remove a file" on the remote to free up space on the remote.
− doc/forum/trusted_repositories:_fatal:_not_a_git_repo.mdwn
@@ -1,32 +0,0 @@-When issuing a `git annex info`, I get:--~~~-$ git-annex info-repository mode: indirect-trusted repositories: fatal: Not a git repository: '/home/micas/Music/.git' fatal: Not a git repository: '/home/micas/Music/.git' 0-semitrusted repositories: 3-	00000000-0000-0000-0000-000000000001 -- web- 	85f8a5ea-6278-11e2-9978-ebb59e8f37a2 -- here (Music annex backup)- 	9aff38f2-6447-11e2-8c89-ef50e6c0ea6c -- backupone (Music annex backupone)-untrusted repositories: 0-transfers in progress: none-available local disk space: 174.28 gigabytes (+1 megabyte reserved)-local annex keys: 5348-local annex size: 25.62 gigabytes-annexed files in working tree: 5374-size of annexed files in working tree: 25.68 gigabytes-bloom filter size: 16 mebibytes (1.1% full)-backend usage: -	SHA256: 10692-	SHA256E: 30-~~~--The troubling part (I think) is `trusted repositories: fatal: Not a git repository: '/home/micas/Music/.git' fatal: Not a git repository: '/home/micas/Music/.git' 0`--Is there a command I can use to show all the uuid of known remotes? I thought I had marked all remotes pointing to /home/micas/Music/.git as `dead`--Is there another reason for the output? How can I get trusted repos back to 0?--**EDIT:**--I removed the folder (was not a git repo at the time of the error) `/home/micas/Music` and the error went away.
− doc/forum/wishlist:_get__47__drop_via_webapp_file_explorer.mdwn
@@ -1,1 +0,0 @@-Know what'd be a sweet feature?  A file explorer in the webapp that lets you get and drop files (for a Manual local repository).  Especially when the webapp becomes available on Android.  I'd love to be able to select what is and isn't present on a small device by some means other than moving files around.
− doc/forum/wishlist:_make_copy_stop_on_exhausted_disk_space.mdwn
@@ -1,4 +0,0 @@-I'm trying to distribute a large annex to a number of smaller archive drives.--While copying to a directory special remote, the current behaviour is to continue trying copying files into a remote, even as diskspace there has been exhausted.-It would make sense for git-annex copy to actually stop instead.
doc/git-annex-shell.mdwn view
@@ -67,7 +67,7 @@  * notifychanges -  This is used by `git-annex remote-daemon` to be notified when+  This is used by `git-annex remotedaemon` to be notified when   refs in the remote repository are changed.  * gcryptsetup gcryptid@@ -105,6 +105,9 @@ * GIT_ANNEX_SHELL_READONLY    If set, disallows any command that could modify the repository.++  Note that this does not prevent passing commands on to git-shell.+  For that, you also need ...  * GIT_ANNEX_SHELL_LIMITED 
doc/git-annex.mdwn view
@@ -268,7 +268,7 @@    Use `--template` to control where the files are stored.   The default template is '${feedtitle}/${itemtitle}${extension}'-  (Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid)+  (Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate)    The `--relaxed` and `--fast` options behave the same as they do in addurl.   @@ -921,6 +921,10 @@   This runs git-annex's built-in test suite.    There are several parameters, provided by Haskell's tasty test framework.++* `remotedaemon`++  Detects when remotes have changed and fetches from them.  * `xmppgit` 
doc/index.mdwn view
@@ -39,7 +39,8 @@  ---- -git-annex is [[Free Software|license]]+git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).+You can [[contribute]]!  git-annex's wiki is powered by [Ikiwiki](http://ikiwiki.info/) and hosted by [Branchable](http://branchable.com/).
doc/metadata.mdwn view
@@ -12,7 +12,7 @@   or without particular metadata.   For example `git annex find --metadata tag=foo --or --metadata tag=bar` * Using it in [[preferred_content]] expressions. -  For example "tag=important or not author=me"+  For example "metadata=tag=important or not metadata=author=me"  Each file (actually the underlying key) can have any number of metadata fields, which each can have any number of values. For example, to tag
− doc/news/version_5.20140221.mdwn
@@ -1,28 +0,0 @@-git-annex 5.20140221 released with [[!toggle text="these changes"]]-[[!toggleable text="""-   * metadata: New command that can attach metadata to files.-   * --metadata can be used to limit commands to acting on files-     that have particular metadata.-   * Preferred content expressions can use metadata=field=value-     to limit them to acting on files that have particular metadata.-   * view: New command that creates and checks out a branch that provides-     a structured view of selected metadata.-   * vfilter, vadd, vpop, vcycle: New commands for operating within views.-   * pre-commit: Update metadata when committing changes to locations-     of annexed files within a view.-   * Add progress display for transfers to/from external special remotes.-   * unused: Fix to actually detect unused keys when in direct mode.-   * fsck: When run with --all or --unused, while .gitattributes-     annex.numcopies cannot be honored since it's operating on keys-     instead of files, make it honor the global numcopies setting,-     and the annex.numcopies git config setting.-   * trust, untrust, semitrust, dead: Warn when the trust level is-     overridden in .git/config.-   * glacier: Do not try to run glacier value create when an existing glacier-     remote is enabled.-   * fsck: Refuse to do anything if more than one of --incremental, --more,-     and --incremental-schedule are given, since it's not clear which option-     should win.-   * Windows webapp: Can set up box.com, Amazon S3, and rsync.net remotes-   * Windows webapp: Can create repos on removable drives.-   * Windows: Ensure HOME is set, as needed by bundled cygwin utilities."""]]
− doc/news/version_5.20140227.mdwn
@@ -1,32 +0,0 @@-git-annex 5.20140227 released with [[!toggle text="these changes"]]-[[!toggleable text="""-   * metadata: Field names limited to alphanumerics and a few whitelisted-     punctuation characters to avoid issues with views, etc.-   * metadata: Field names are now case insensative.-   * When constructing views, metadata is available about the location of the-     file in the view's reference branch. Allows incorporating parts of the-     directory hierarchy in a view.-     For example `git annex view tag=* podcasts/=*` makes a view in the form-     tag/showname.-   * --metadata field=value can now use globs to match, and matches-     case insensatively, the same as git annex view field=value does.-   * annex.genmetadata can be set to make git-annex automatically set-     metadata (year and month) when adding files.-   * Make annex.web-options be used in several places that call curl.-   * Fix handling of rsync remote urls containing a username,-     including rsync.net.-   * Preserve metadata when staging a new version of an annexed file.-   * metadata: Support --json-   * webapp: Fix creation of box.com and Amazon S3 and Glacier-     repositories, broken in 5.20140221.-   * webdav: When built with DAV 0.6.0, use the new DAV monad to avoid-     locking files, which is not needed by git-annex's use of webdav, and-     does not work on Box.com.-   * webdav: Fix path separator bug when used on Windows.-   * repair: Optimise unpacking of pack files, and avoid repeated error-     messages about corrupt pack files.-   * Add build dep on regex-compat to fix build on mipsel, which lacks-     regex-tdfa.-   * Disable test suite on sparc, which is missing optparse-applicative.-   * Put non-object tmp files in .git/annex/misctmp, leaving .git/annex/tmp-     for only partially transferred objects."""]]
− doc/news/version_5.20140306.mdwn
@@ -1,34 +0,0 @@-git-annex 5.20140306 released with [[!toggle text="these changes"]]-[[!toggleable text="""-   * sync: Fix bug in direct mode that caused a file that was not-     checked into git to be deleted when there was a conflicting-     merge with a remote.-   * webapp: Now supports HTTPS.-   * webapp: No longer supports a port specified after --listen, since-     it was buggy, and that use case is better supported by setting up HTTPS.-   * annex.listen can be configured, instead of using --listen-   * annex.startupscan can be set to false to disable the assistant's startup-     scan.-   * Probe for quvi version at run time.-   * webapp: Filter out from Switch Repository list any-     repositories listed in autostart file that don't have a-     git directory anymore. (Or are bare)-   * webapp: Refuse to start in a bare git repository.-   * assistant --autostart: Refuse to start in a bare git repository.-   * webapp: Don't list the public repository group when editing a-     git repository; it only makes sense for special remotes.-   * view, vfilter: Add support for filtering tags and values out of a view,-     using !tag and field!=value.-   * vadd: Allow listing multiple desired values for a field.-   * view: Refuse to enter a view when no branch is currently checked out.-   * metadata: To only set a field when it's not already got a value, use-     -s field?=value-   * Run .git/hooks/pre-commit-annex whenever a commit is made.-   * sync: Automatically resolve merge conflict between and annexed file-     and a regular git file.-   * glacier: Pass --region to glacier checkpresent.-   * webdav: When built with a new enough haskell DAV (0.6), disable-     the http response timeout, which was only 5 seconds.-   * webapp: Include no-pty in ssh authorized\_keys lines.-   * assistant: Smarter log file rotation, which takes free disk space-     into account."""]]
+ doc/news/version_5.20140405.mdwn view
@@ -0,0 +1,7 @@+git-annex 5.20140405 released with [[!toggle text="these changes"]]+[[!toggleable text="""+   * git-annex-shell: Added notifychanges command.+   * Improve display of dbus notifications. Thanks, Johan Kiviniemi.+   * Fix nautilus script installation to not crash when the nautilus script dir+     does not exist. Instead, only install scripts when the directory already+     exists."""]]
+ doc/news/version_5.20140411.mdwn view
@@ -0,0 +1,13 @@+git-annex 5.20140411 released with [[!toggle text="these changes"]]+[[!toggleable text="""+   * importfeed: Filename template can now contain an itempubdate variable.+     Needs feed 0.3.9.2.+   * Fix rsync progress parsing in locales that use comma in number display.+     Closes: #[744148](http://bugs.debian.org/744148)+   * assistant: Fix high CPU usage triggered when a monthly fsck is scheduled,+     and the last time the job ran was a day of the month &gt; 12. This caused a+     runaway loop. Thanks to Anarcat for his assistance, and to Maximiliano+     Curia for identifying the cause of this bug.+   * Remove wget from OSX dmg, due to issues with cert paths that broke+     git-annex automatic upgrading. Instead, curl is used, unless the+     OSX system has wget installed, which will then be used."""]]
+ doc/news/version_5.20140412.mdwn view
@@ -0,0 +1,3 @@+git-annex 5.20140412 released with [[!toggle text="these changes"]]+[[!toggleable text="""+   * Last release didn't quite fix the high cpu issue in all cases, this should."""]]
doc/preferred_content.mdwn view
@@ -144,6 +144,16 @@ expression tuned for your needs, and every repository you put in this group and make its preferred content be "groupwanted" will use it. +### difference: metadata matching++This:++	git annex get --metadata tag=done++becomes++	metadata=tag=done+ ## upgrades  It's important that all clones of a repository can understand one-another's
− doc/tips/centralised_repository:_starting_from_nothing.mdwn
@@ -1,75 +0,0 @@-If you are starting from nothing (no existing `git` or `git-annex` repository) and want to use a server as a centralised repository, try the following steps.--On the server where you'll hold the "master" repository:--	server$ cd /one/git-	server$ mkdir m-	server$ cd m-	server$ git init --bare-	Initialized empty Git repository in /one/git/m/-	server$ git annex init origin-	init origin ok-	server$ --Clone that to the laptop:--	laptop$ cd /other-	laptop$ git clone ssh://server//one/git/m-	Cloning into 'm'...-	Warning: No xauth data; using fake authentication data for X11 forwarding.-	remote: Counting objects: 5, done.        -	remote: Compressing objects: 100% (3/3), done.        -	remote: Total 5 (delta 0), reused 0 (delta 0)        -	Receiving objects: 100% (5/5), done.-	warning: remote HEAD refers to nonexistent ref, unable to checkout.--	laptop$ cd m-	laptop$ git annex init laptop-	init laptop ok-        laptop$ --Merge the `git-annex` repository (this is the bit that is often-overlooked!):--	laptop$ git annex merge	-	merge . (merging "origin/git-annex" into git-annex...)-	ok-	laptop$ --Add some content:--	laptop$ git annex addurl http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg-	"kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg"-	addurl kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg (downloading http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg ...) --2011-12-15 08:13:10--  http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg-	Resolving kitenet.net (kitenet.net)... 2001:41c8:125:49::10, 80.68.85.49-	Connecting to kitenet.net (kitenet.net)|2001:41c8:125:49::10|:80... connected.-	HTTP request sent, awaiting response... 200 OK-	Length: 39362757 (38M) [audio/ogg]-	Saving to: `/other/m/.git/annex/tmp/URL--http&c%%kitenet.net%~joey%screencasts%git-annex_coding_in_haskell.ogg'--	100%[======================================>] 39,362,757  2.31M/s   in 17s     --	2011-12-15 08:13:27 (2.21 MB/s) - `/other/m/.git/annex/tmp/URL--http&c%%kitenet.net%~joey%screencasts%git-annex_coding_in_haskell.ogg' saved [39362757/39362757]--	(checksum...) ok-	(Recording state in git...)-	laptop$ git commit -m 'See Joey play.'-	[master (root-commit) 106e923] See Joey play.-	 1 files changed, 1 insertions(+), 0 deletions(-)-	  create mode 120000 kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg-	laptop$ --All fine, now push it back to the centralised master:--	laptop$ git push-	Counting objects: 20, done.-	Delta compression using up to 4 threads.-	Compressing objects: 100% (11/11), done.-	Writing objects: 100% (18/18), 1.50 KiB, done.-	Total 18 (delta 1), reused 1 (delta 0)-	To ssh://server//one/git/m-	   3ba1386..ad3bc9e  git-annex -> git-annex-	laptop$ --You can add more "client" repositories by following the `laptop`-sequence of operations.
doc/tips/downloading_podcasts.mdwn view
@@ -23,7 +23,8 @@ `--template='${feedtitle}/${itemtitle}${extension}'`  Other available template variables:  -feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid+feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid,+itempubdate  ## catching up 
doc/tips/using_gitolite_with_git-annex.mdwn view
@@ -3,8 +3,6 @@ `git annex copy` files to a gitolite repository, and `git annex get` files from it. -Warning : The method described here works with gitolite version g2, avaible in the g2 branch on github. There is an experimental support for g3 in the git-annex branch, if you tested it please add some feedback.- A nice feature of using gitolite with git-annex is that users can be given read-only access to a repository, and this allows them to `git annex get` file contents, but not change anything.@@ -12,7 +10,8 @@ First, you need new enough versions:  * gitolite 2.2 is needed -- this version contains a git-annex-shell ADC-  and supports "ua" ADCs.+  and supports "ua" ADCs. Alternatively, gitoline g3 also recently added+  support for git-annex. * git-annex 3.20111016 or newer needs to be installed on the gitolite   server. Don't install an older version, it wouldn't be secure! @@ -37,6 +36,13 @@ <pre>    cd /usr/local/lib/gitolite/adc/ua/ cp gitolite/contrib/adc/git-annex-shell .+</pre>++If using gitolite g3, an additional setup step is needed:+In the ENABLE list in the rc file, add an entry like this:++<pre>+	'git-annex-shell ua', </pre>  Now all gitolite repositories can be used with git-annex just as any
− doc/todo/Enhancement:_git_annex_whereis_KEY.mdwn
@@ -1,19 +0,0 @@-### Please describe the problem.--Great work on git annex! One possible enhancement occured to me: It would be very useful though if the "whereis" command would support looking up the location of files by arbitrary keys. This way one could inspect the location of old content which is not currently checked-out in the tree.--In a related vein, the "unused" command could report old filenames or describe the associated commits. Tracking old versions is a great feature of your git-based approach, but currently, tasks such as pruning selected content seem unwiedly. Though I might be missing existing solutions. You can easily "cut-off" the history by forcing a drop of all unused content. It would be cool if one could somehow "address" old versions by filename and commit/date and selectively drop just these. The same could go for the "whereis" command, where one could e.g. query which remote holds content which was stored under some filename at some specific date.--Thanks Cheers!--> I agree that it's useful to run whereis on a specific key. This can-> now be done using `git annex whereis --key KEY`-> [[done]] --[[Joey]]-> -> To report old filenames, unused would have to search back through the-> contents of symlinks in old versions of the repo, to find symlinks that-> referred to a key. The best way I know how to do that is `git log -S$KEY`,-> which is what unused suggests you use. But this is slow ---> searching for a single key in one of my repos takes 25 seconds.-> That's why it doesn't do it for you.-> 
− doc/todo/Feature_Request:_Sync_Now_Button_in_Webapp.mdwn
@@ -1,3 +0,0 @@-One Problem I am having is that I could never get the xmpp pairing to work so whenever I switch machines I have to manually run sync once on the command line to get the changes. Is it possible to have a sync now button of some sort that will trigger a sync on the repos?--> moved from forum; [[done]] --[[Joey]] 
+ doc/todo/LIst_of_Available_Remotes_in_Webapp.mdwn view
@@ -0,0 +1,1 @@+When using git-annex in a distributed fashion (lots of repos everywhere) It is easy to lose track of which remotes has a particular repo and enable it. Currently I have to run `git annex info` and see which remotes are available then add them through the webapp. Would it be possible to make webapp show all repos not just the ones it is syncing give an option to enable it.
+ doc/todo/Time_Stamping_of_Events_in_Webapp.mdwn view
@@ -0,0 +1,1 @@+Currently events happening in the webapp (sync upload etc. on the right) has no time stamp thus user has no way to tell when was the last sync happened. Which is problematic when not using XMPP and repos lag behind.
− doc/todo/Wishlist:_Import_youtube_playlists.mdwn
@@ -1,30 +0,0 @@-Hi,--it would be great if the importfeed command would be able to read feeds generated by youtube (like for playlists). The youtube playlist feed contains links to separate youtube video pages, which quvi handles just fine. Currently I use the following python script:--    #!/usr/bin/env python-    import feedparser-    import sys-    d = feedparser.parse('http://gdata.youtube.com/feeds/api/playlists/%s' % sys.argv[1])-    for entry in d.entries:-        print entry.link--and then --    kasimon@pc:~/annex/YouTube/debconf13$ youtube-playlist-urls PLz8ZG1e9MPlzefklz1Gv79icjywTXycR- | xargs git annex addurl --fast -    addurl Welcome_talk.webm ok-    addurl Bits_from_the_DPL.webm ok-    addurl Debian_Cosmology.webm ok-    addurl Bits_from_the_DPL.webm ok-    addurl Debian_Cosmology.webm ok-    addurl Debian_on_Google_Compute_Engine.webm ok-    ^C--to create a backup of youtube media I'd like to keep.--It would be great if this functionality could be integrated directly into git annex.--Best-Karsten--> [[done]] --[[Joey]] 
− doc/todo/Wishlist:_additional_environment_variables_for_hooks.mdwn
@@ -1,14 +0,0 @@-It would be nice if a couple of additional environment variables to be set for hook uses.--In particular:--    GIT_ANNEX_DIRECT=`git config annex.direct`--and--    GIT_TOP_LEVEL=`git rev-parse --show-toplevel`---I've made some changes to flickrannex to allow the sub-directories above the uploaded image to be added as tags.  This change has been merged into trunk: [[https://github.com/TobiasTheViking/flickrannex]]--What I needed was both the environment variables mentioned above.  One is set as part of the annex-hook and the other I guestimate from the file path.  If it was set in git-annex it would be much cleaner (and accurate).  So...I think this info would be useful for other hook.
− doc/todo/Wishlist:_sanitychecker_fix_wrong_UUID__47__duplicate_remote.mdwn
@@ -1,7 +0,0 @@-In certain situations different client annexes might get the same remote repository added, but before being synced.--Once the two clients sync they will both have two remotes with the same name. But only one UUID will have any content(Assuming only one client pushed).--It would be nice to have some (automatic?) way to resolve this conflict.--Not sure if anything sane can be done if both clients have pushed?
− doc/todo/importfeed:_allow___36____123__itemdate__125___with_--template.mdwn
@@ -1,5 +0,0 @@-It would be great to be able to use the pubDate of the entries with the --template option of importfeed.--Text.Feed.Query has a getItemPublishDate (and a getFeedPubDate, if we want some kind of ${feeddate}).--The best would be to allow a reformating of the date(s) with (for example) %Y-%m-%D
+ doc/todo/make___34__itemdate__34___valid_importfeed_template_option.mdwn view
@@ -0,0 +1,18 @@+Some podcasts don't include a sortable date as the first thing in their episode title, which makes listening to them in order challenging if not impossible.++The date the item was posted is part of the RSS standard, so we should parse that and provide a new importfeed template option "itemdate".++(For the curious, I tried "itemid" thinking that might give me something close, but it doesn't. I used --template='${feedtitle}/${itemid}-${itemtitle}${extension}' and get:++    http___openmetalcast.com__p_1163-Open_Metalcast_Episode__93__Headless_Chicken.ogg++or++    http___www.folkalley.com_music_podcasts__name_2013_08_21_alleycast_6_13.mp3-Alleycast___06.13.mp3++that "works" but is ugly :)++Would love to be able to put a YYYYMMDD at the beginning and then the title.++> [[done]]; itempubdate will use form YYYY-MM-DD (or the raw date string+> if the feed does not use a parsable form). --[[Joey]]
− doc/todo/makefile:_respect___36__PREFIX.mdwn
@@ -1,25 +0,0 @@-The `Makefile` should respect a `PREFIX` passed on the commandline so git-annex can be installed in (say) `$HOME`.--Simple patch:--[[!format diff """-diff --git a/Makefile b/Makefile-index b8995b2..5b1a6d4 100644---- a/Makefile-+++ b/Makefile-@@ -3,7 +3,7 @@ all=git-annex $(mans) docs-- GHC?=ghc- GHCMAKE=$(GHC) $(GHCFLAGS) --make--PREFIX=/usr-+PREFIX?=/usr- CABAL?=cabal # set to "./Setup" if you lack a cabal program-- # Am I typing :make in vim? Do a fast build.-"""]]----[[anarcat]]--> [[done]] --[[Joey]]--> > thanks! ;) --[[anarcat]]
− doc/todo/mdwn2man:_make_backticks_bold.mdwn
@@ -1,22 +0,0 @@-The traditionnal way of marking commandline flags in a manpage is with a `.B` (for Bold, I guess). It doesn't seem to be used by mdwn2man, which makes the manpage look a little more dull than it could.--The following patch makes those options come out more obviously:--[[!format diff """-diff --git a/Build/mdwn2man b/Build/mdwn2man-index ba5919b..7f819ad 100755---- a/Build/mdwn2man-+++ b/Build/mdwn2man-@@ -8,6 +8,7 @@ print ".TH $prog $section\n";-- while (<>) {-        s{(\\?)\[\[([^\s\|\]]+)(\|[^\s\]]+)?\]\]}{$1 ? "[[$2]]" : $2}eg;-+       s/\`([^\`]*)\`/\\fB$1\\fP/g;-        s/\`//g;-        s/^\s*\./\\&./g;-        if (/^#\s/) {-"""]]--I tested it against the git-annex manpage and it seems to work well. --[[anarcat]]--> [[done]], thanks --[[Joey]]
− doc/todo/whishlist:_git_annex_drop_--dry-run.mdwn
@@ -1,5 +0,0 @@-It'd be useful to be able to see what `git annex drop` would do *before* asking it to drop any files.--For example, I just set up my preferred contents expressions, and I don't know if I got them right. Before dropping anything from this repo, it'd be nice to check what would happen. I know git annex drop will only drop files that are above their minimum numcopies, but I'd still like to avoid heavyweight copying in case I got my preferred contents expressions wrong.--> [[done]]; added --want-get and --want-drop. --[[Joey]]
− doc/todo/whislist:_allow_setting_annex-ignore_from_the_webapp.mdwn
@@ -1,2 +0,0 @@-I would like to be able to set 'annex-ignore' for remote servers through the webapp.-Maybe a checkbox beneath "Syncing enabled" with something like "Also sync content" that it's checked by default?
− doc/todo/wishlist:_Add_to_Android_version_to_Google_Play.mdwn
@@ -1,9 +0,0 @@-If possible a frequently updated daily build in separate package for those more adventurous of us.--It would make installing and testing much easier and no need to change configuration settings to allow untrusted source.--> While it's vaid to wish that someone might put the apk into Google Play,-> I a) don't feel it's ready b) don't know if I want to go through-> the rigamarole required to use that service and c) don't feel this-> bug tracker is an appropriate place to track what is effectively a-> nontechnical request. [[done]] --[[Joey]] 
− doc/todo/wishlist:_Advanced_settings_for_xmpp_and_webdav.mdwn
@@ -1,7 +0,0 @@-It would be very nice with an "advanced settings" for jabber and webdav support.--Currently XMPP fails if you use a google apps account. Since the domain provided in the email is not the same as the XMPP server.--Same goes for webdav support. If i have my own webdav server somewhere on the internet there is no way to set it up in the assistant.--[[!tag /design/assistant]]
− doc/todo/wishlist:_An_--all_option_for_dropunused.mdwn
@@ -1,4 +0,0 @@-Cleaning out a repository is presently a fairly manual process.  Am I missing a UI trick?  "dropunsed" with no arguments prints nothing at all; I think in that case it should display the list of what could be dropped.--> [[done]]; comments seem satisfactory and I see no reason to complicate-> dropunused to output something unused already outputs. --[[Joey]]
− doc/todo/wishlist:_An_option_like_--git-dir.mdwn
@@ -1,5 +0,0 @@-I'm currently integrating git-annex support into a filesystem synchronization tool that I use, and I have a use case where I'd like to run "git annex sync' on a local directory, and then automatically ssh over to remote hosts and run "git annex sync" in the related annex on that remote host.  However, while I can easily "cd" on the local, there is no really easy way to "cd" on the remote without a hack.--If I could say: git annex --annex-dir=PATH sync, where PATH is the annex directory, it would solve all my problems, and would also provide a nice correlation to the --git-dir option used by most Git commands.  The basic idea is that I shouldn't have to be IN the directory to run git-annex commands, I should be able to tell git-annex which directory to apply its commands to.--> AFAIK this is fully supported for some time, so [[done]] --[[Joey]]
− doc/todo/wishlist:_Freeing_X_space_on_remote_Y.mdwn
@@ -1,1 +0,0 @@-As suggested during the first Gitify BoF during DebConf13: Adding a way to have on-demand dropping of content in a given remote would allow a user to quickly free up disk space on demand while still heeding numcopies etc.
− doc/todo/wishlist:_GnuPG_options.mdwn
@@ -1,16 +0,0 @@-[Maybe I should have extented [[wishlist:_simpler_gpg_usage/]], but I thought I'd make my own since it's perhaps too old.]--I second Justin and [[his idea|wishlist:_simpler_gpg_usage/#comment-e120f8ede0d4cffce17cbf84564211c1]] of having per-remote GnuPG options. I'd even go one step further, and propose the option in the <tt>.gitattributes</tt> file. Indeed by default GnuPG compresses the data before encryption, which doesn't make a lot of sense for git-annex (in my use-case at least); My work-around to save this waste of CPU cycles was to customize my <tt>gpg.conf</tt>, but it's somewhat dirty since I do want to use compression in general.--Here is how I envision the <tt>.git/config</tt>:-<pre>    <code>[annex]-        gnupg-options = --s2k-cipher-algo AES256 --s2k-digest-algo SHA512 --s2k-count 8388608 --cipher-algo AES256 --compress-algo none-</code></pre>--And compression could be enabled on say, text files, with a suitable wildcard in the <tt>.gitattributes</tt> file.-<pre>    <code>*.txt annex.gnupg-options="--s2k-cipher-algo AES256 --s2k-digest-algo SHA512 --s2k-count 8388608 --cipher-algo AES256 --compress-algo zlib"-</code></pre>--This is something I could probably hack on if you think it'd be a worthwhile option ;-)--> Done, and [[done]]! --[[Joey]]
− doc/todo/wishlist:_Have_a_preview_of_download_or_upload_size.mdwn
@@ -1,10 +0,0 @@-When using SSH remote repository, git-annex uses rsync to download or upload files one at a time. I would like to have a preview of the overall transfer size so that I can estimate the transfer duration.--This could be done as an option of get, move or copy, or as a separated command.--If part of get, move or copy, git-annex could print how much has been done or how much left between every files.--Thanks.--> [[done]]; `git-annex status .` seems to cover the requested use case.-> --[[Joey]] 
− doc/todo/wishlist:_Option_to_specify_max_transfer_rate.mdwn
@@ -1,3 +0,0 @@-A big part of my online use is done via a low-speed connection over my mobile phone, this is limited to 16KB/sec because I always use up my 500MB quota the very first day of the month. `;-/` So when I need to download big files, I first download them to my online server, then transfer the files to my laptop with git-annex. If I'm connected via GSM, this occupies all the bandwidth and everything else moves like a heavily sedated slug. So if I want to work via VNC or SSH, I have to terminate ongoing transfers with Ctrl-C and then hopefully remember to restart it when I work locally. I know git-annex is robust enough to handle this gracefully, but it would be really nice to have a continuous connection going on in the background, limited to a value I choose.--rsync(1) has a `--bwlimit` (bandwidth limit) where you can specify max download/upload speed in kilobytes/sec. It would be great if a similar option was integrated into git-annex. Thanks in advance.
− doc/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.mdwn
@@ -1,45 +0,0 @@-Simple, when performing various git annex command over ssh, in particular a multi-file get, and using password authentication, git annex will prompt more than once for a user password.  This makes batch updates very inconvenient.--> I'd suggest using ssh-agent, or a passwordless ssh key. Possibly in-> combination with [[git-annex-shell]] if you want to lock down a-> particular ssh key to only being able to use git-annex and git-daemon.-> -> Combining multiple operations into a single ssh is on the todo list, but-> very far down it. --[[Joey]]-->> OTOH, automatically running ssh in ControlMaster mode (and stopping it->> at exit) would be useful and not hard thing for git-annex to do.->> ->> It'd just need to set the appropriate config options, setting->> ControlPath to a per-remote socket location that includes git-annex's->> pid. Then at shutdown, run `ssh -O exit` on each such socket.->> ->> Complicated slightly by not doing this if the user has already set up->> more broad ssh connection caching.->> ->> [[done]]! --[[Joey]]-------Slightly more elaborate design for using ssh connection caching:--* Per-uuid ssh socket in `.git/annex/ssh/user@host.socket`-* Can be shared among concurrent git-annex processes as well as ssh-  invocations inside the current git-annex.-* Also a lock file, `.git/annex/ssh/user@host.lock`.-  Open and take shared lock before running ssh; store lock in lock pool.-  (Not locking socket directly, because ssh might want to.)-* Run ssh like: `ssh -S .git/annex/ssh/user@host.socket -o ControlMaster=auto -o ControlPersist=yes user@host`-* At shutdown, enumerate all existing sockets, and on each:-  1. Drop any shared lock.-  2. Attempt to take an exclusive lock (non-blocking).-  3. `ssh -q -S .git/annex/ssh/user@host.socket -o ControlMaster=auto -o ControlPersist=yes -O stop user@host`-     (Will exit nonzero if ssh is not running on that socket.)-  4. And then remove the socket and the lock file.-* Do same *at startup*. Why? In case an old git-annex was interrupted-  and left behind a ssh. May have moved to a different network-  in the meantime, etc, and be stalled waiting for a response from the-  network, or talking to the wrong interface or something.-  (Ie, the reason why I don't use ssh connection caching by default.)-* User should be able to override this, to use their own preferred-  connection caching setup. `annex.sshcaching=false`
− doc/todo/wishlist:_Restore_s3_files_moved_to_Glacier.mdwn
@@ -1,7 +0,0 @@-I would like to use the automated AWS lifecycle rules to move the git annex files store on S3 to Glacier after a bit of time. Git annex need must support this kind of S3 files explicitly in order for it to work.--This is different from the adding a Glacier remote to git annex because of the reasons explained in <http://aws.typepad.com/aws/2012/11/archive-s3-to-glacier.html>.--Basically, the files moved by AWS from S3 to Glacier are not available under the normal Glacier API. In fact, the moved S3 files are listed as available but under the `GLACIER` storage class and need a RESTORE request before they can be GET like other S3 files. Trying to GET an S3 file that has been moved to Glacier will not restore it from Glacier and will result in an 403 error.--I suppose DELETE needs special care as well.
− doc/todo/wishlist:___34__git_annex_add__34___multiple_processes.mdwn
@@ -1,10 +0,0 @@-Hello,--i'm in the process of managing my music collection with git-annex. The initial "git annex add" using the sha1 banckend is quite long an i was wondering that it could be nice to launch multiple "sha1sum" processes in parallel to speed up things.--Anyway, thanks for this wonderful piece of software.--Jean-Baptiste--> closing as dup of [[parallel possibilities]] (also see comments below)-> [[done]] --[[Joey]] 
− doc/todo/wishlist:___34__quiet__34___annex_get_for_centralized_use_case.mdwn
@@ -1,14 +0,0 @@-We're using git-annex to manage large files as part of a team.--We have a central repository of large files that everyone grabs from.--We would like to be able to get the files without updating the `git-annex` branch.  This way it doesn't pollute the history with essentially always unreachable locations.--I think the easiest way would be to just add an option to not update the `git-annex` branch when `annex get` is executed.--Thoughts?--> See [[untracked_remotes]] for a todo item that will probably-> be useful in this sitation. Since that describes better what-> this bug report seems to be asking for, I am closing this one.-> [[closed|done]] --[[Joey]]
− doc/todo/wishlist:___39__get__39___queue_and_schedule..mdwn
@@ -1,30 +0,0 @@-During the campaign adding a chunking feature to obscure filesize for encrypted files was added to the roadmap.  But there is still one potentially valuable set* of data that git-annex can help obscure: when you access your remotes.--This data can be used to determine when a user is actively using a remote, but if a remote is always accessed at the same time that data becomes less useful.  Somebody could still monitor total traffic over a long period and figure out that a remote was more active in a given week or month, but scheduling reduces the resolution of your access times and their data.  Maybe this isn't the most important feature to add, but it would be nice to have, and could possibly be built on top of the existing git-annex scheduler.  It could work by queuing inter-remote transactions ('get', 'copy', 'sync', etc.), so that jobs start at the same time every day, or even the same time and day every week.--Possible syntax examples:-###Setting up the schedule:-git annex queue schedule Monday:1730 (starts every monday at 5:30PM)--git annex queue schedule 1400 (starts every day at 2PM)--###Queuing git-annex commands:-git annex queue prepend sync (pretends 'sync' to the very front of the queue)--git annex queue append get file.ISO (appends to queue file.ISO for retrieval from a repo)--###Viewing/editing queue:-git annex queue view (view the current queue, jobs displayed with corresponding numbers)--git annex queue rm 20 (removes job 20 from queue)---\*The four I can think of are:--* File contents (solved by crypto)--* File size (solved on the remote by chunking, but total traffic usage can't be helped)--* User IP/Remote IP (solved by VPN - outside scope of git-annex, unless someone writes a plugin)--* Access times (obscured by a queue and scheduling)
− doc/todo/wishlist:___39__whereis__39___support_in_the_webapp.mdwn
@@ -1,4 +0,0 @@-I've looked for this feature in the webapp but can't find it...--I mainly use the webapp and have been wondering 'how many copies of file X are there' and 'where are the copies of file Y'?-This is available in the commandline interface but it would be nice to have this in the webapp too.
− doc/todo/wishlist:___96__git_annex_drop_--relaxed__96__.mdwn
@@ -1,5 +0,0 @@-Also suggested during the first Gitify BoF during DebConf13:--`git annex drop` deletes immediately. In some situations a mechanism to tell git-annex "I would like to hold onto this data if possible, but if you need the space, please delete it" could be nice.--An obvious question would be how to do cleanups. With the assistant, that's easy. On CLI, at the very least `git annex fsck` should list, and optionally delete, that data.
− doc/todo/wishlist:___96__git_annex_sync_-m__96__.mdwn
@@ -1,10 +0,0 @@-Similar to how--    git commit -m 'foo'--works, if I run --    git annex sync -m 'my hovercraft is full of eels'--git annex should use that commit message instead of the default ones. That way, I could use [[sync]] directly and not be forced to commit prior to syncing just to make sure I have a useful commit message.-
− doc/todo/wishlist:_addurl_https:.mdwn
@@ -1,11 +0,0 @@-It would be nice if "git annex addurl" allowed https: urls, rather than just http:.-To give an example, here is a PDF file:-- https://www.fbo.gov/utils/view?id=59ba4c8aa59101a09827ab7b9a787b05--If you switch the https: to http: it redirects you back to https:.--As more sites provide https: for non-secret traffic, this becomes more of an issue.--> I've gotten rid of the use of the HTTP library, now it just uses curl.-> [[done]] --[[Joey]]
− doc/todo/wishlist:_allow_configuration_of_downloader_for_addurl.mdwn
@@ -1,3 +0,0 @@-It would be neat if Git annex addurl allowed a configuration option for a download manager command to do the actual download in place of wget/curl with a placeholder for the file name to save to & URL to get from (if that's all annex needs). That would allow the user to choose a graphical download manager if desired to make progress easier to monitor. The specific circumstance I'm seeing is with [[wishlist:_an___34__assistant__34___for_web-browsing_--_tracking_the_sources_of_the_downloads]]. I found that the existing Firefox addon [FlashGot](http://flashgot.net/) can run any command with arbitrary arguments including placeholders. Right now I've got a [script](https://gist.github.com/andyg0808/5342434) that changes to a user-selected directory and then runs git-annex addurl in it with the provided url. It works fine as a download manager for FlashGot. The issue is that there is no progress information for large file downloads. If git-annex could start a separate download manager to do the actual download, then the user would be able to check status at any time, even though the git-annex command was run from a GUI and not a terminal.--> [[done]], you can use `annex.web-download-command` now. --[[Joey]]
− doc/todo/wishlist:_allow_custom_S3_url_in_webapp.mdwn
@@ -1,3 +0,0 @@-It is now relatively easy to build your own S3-compatible storage system with software such as Ceph radosgw or Openstack Swift.--So a way for users to specify their own S3 url would come pretty handy in the webapp's "add S3 remote" page.
− doc/todo/wishlist:_annex.largefiles_configuration_in_webapp_and_sync.mdwn
@@ -1,1 +0,0 @@-The `annex.largefiles` feature is very nice to mix annexed files with normal git managed files. I'd like to be able to configure this setting on the webapp and that the configuration directive would be synchronized accross all remotes.
− doc/todo/wishlist:_annex.largefiles_support_for_mimetypes.mdwn
@@ -1,1 +0,0 @@-It would be nice to have mimetype support on the `annex.largefiles` configuration directive. F.e. `git config annex.largefiles "not mimetype=text/plain"`
− doc/todo/wishlist:_archive_from_remote_with_the_least_free_space.mdwn
@@ -1,1 +0,0 @@-An interesting feature, when an archived file cannot be removed from all clients because of the minimum number of copies required, would be to remove it from the repositories with the smallest amount of free space available.
− doc/todo/wishlist:_assistant_autostart_port_and_secret_configuration.mdwn
@@ -1,4 +0,0 @@-When starting the assistant when logging in to the system (`--autostart`) it choses a new port an secret everytime. Having the assistant open in a pinned firefox tab which automatically restores when firefox starts we need to get the url from `.git/annex/url` and copy/paste it into the pinned tab. It would be very nice to have a configuration option which assigns a fixed port and secret so everytime the assistant is autostarted it uses the same settings and firefox is happy to open it automatically on start.--> Closing, I've removed the option to choose webapp ports entirely.-> [[done]] --[[Joey]]
− doc/todo/wishlist:_command_options_changes.mdwn
@@ -1,17 +0,0 @@-Some suggestions for changes to command options:--  * --verbose:-    * add alternate: -v--  * --from:-    * replace with: -s $SOURCE || --source=$SOURCE--  * --to:-    * replace with: -d $DESTINATION || --destination=$DESTINATION--  * --force:-    * add alternate: -F-      * "-f" was removed in v0.20110417-      * since it forces unsafe operations, should be capitalized to reduce chance of accidental usage.--[[done]], see comments
− doc/todo/wishlist:_define_remotes_that_must_have_all_files.mdwn
@@ -1,22 +0,0 @@-I would like to be able to name a few remotes that must retain *all* annexed-files.  `git-annex fsck` should warn me if any files are missing from those-remotes, even if `annex.numcopies` has been satisfied by other remotes.--I imagine this could also be useful for bup remotes, but I haven't actually-looked at those yet.--Based on existing output, this is what a warning message could look like:--	fsck FILE-		3 of 3 trustworthy copies of FILE exist.-		FILE is, however, still missing from these required remotes:-			UUID -- Backup Drive 1-			UUID -- Backup Drive 2-		Back it up with git-annex copy.-	Warning--What do you think?--> I think that [[required_content]] will make it easy to configure-> such remotes, so this is another reason to build that. Closing-> this bug as a dup of that one; [[done]] --[[Joey]]
− doc/todo/wishlist:_derived_content_support.mdwn
@@ -1,8 +0,0 @@-I handle some video and music files with git annex and it would be awesome if git annex supported tracking of relations between files.--Example:-I have music in flac on my htpc, but i think flac is way overkill to have on my Android device, so i transcode them to ogg/mp3 on my htpc and then sync them to my Android device.--Transcoding is a good example for this type of feature, but there might be other uses too.--The basic thing is to know a file is a "copy" of another file, but its a generated result, so the actual file is not important, but the source is.
− doc/todo/wishlist:_detection_of_merge_conflicts.mdwn
@@ -1,13 +0,0 @@-A conflict during sync or merge is something that requires user intervention, or at least notification. For that reason it would be nice if git annex returned a nonzero exit status when such a conflict happened during a sync or a merge. This is what git does after a conflicting pull, and would make it easier to spot a conflict in automated syncs without having to parse annex output or the logs.--> Good idea, [[done]]. --[[Joey]] --Also, it would be nice if your new `git annex status` were able to inform about remaining conflicts in the repo, for instance by reporting files with variant-XXX suffix.--> Hmm, that would need a separate pass through the whole tree, since-> currently it can use `git ls-files` to find only modified/deleted/new-> files. I would rather not make the new `git annex status` slower for-> this.-> -> It would be possible to add it to `git annex info` (old `status`)-> which already has to look through the entire work tree.
− doc/todo/wishlist:_disable_automatic_commits.mdwn
@@ -1,36 +0,0 @@-When using the [[/assistant]] on some of my repositories, I would like to-retain manual control over the granularity and contents of the commit-history.  Some motivating reasons:--* manually specified commit messages makes the history easier to follow-* make a series of minor changes to a file over a period of a few hours would result in a single commit rather than capturing intermediate incomplete edits--* manual choice of which files to annex (based on predicted usage) could be useful, e.g. a repo might contain a 4MB PDF which you want available in *every* remote even without `git annex get`, and also some 2MB images which are only required in some remotes--> This particular case is now catered to by the "manual" repository group-> in preferred content settings. --[[Joey]]--Obviously this needs to be configurable at least per repository, and-ideally perhaps even per remote, since usage habits can vary from machine-to machine (e.g. I could choose to commit manually from my desktop machine-which has a nice comfy keyboard and large screen, but this would be too-much pain to do from my tiny netbook).--In fact, this is vaguely related to [[design/assistant/partial_content]],-since the usefulness of the commit history depends on the context of the-data being manipulated, which in turn depends on which subdirectories are-being touched.  So any mechanism for disabling sync per directory could-potentially be reused for disabling auto-commit per directory.--According to Joey, it should be easy to arrange for the watcher thread not-to run, but would need some more work for the assistant to notice manual-commits in order to sync them; however the assistant already does some-crazy inotify watching of git refs, in order to detect incoming pushes, so-detecting manual commits wouldn't be a stretch.--[[!tag design/assistant]]--> You can do this now by pausing committing via the webapp,-> or setting `annex.autocommit=false`.-> -> The assistant probably doesn't push such commits yet.
− doc/todo/wishlist:_display_status_of_remotes_in_the_webapp.mdwn
@@ -1,1 +0,0 @@-It would be nice to have an indication of the status of the remotes in the webapp, for example with a field showing "In Sync", "Syncing", or the date of the last successful synchronization for unreachable remotes.
− doc/todo/wishlist:_do_round_robin_downloading_of_data.mdwn
@@ -1,5 +0,0 @@-Given that git/config will have information on remotes and maybe costs, it might be a good idea to do a simple round robin selection of remotes to download files where the costs are the same.--This of course assumes that we like the idea of "parallel" launching and running of curl/rsync processes...--This wish item is probably only useful for the paranoid people who store more than 1 copy of their data.
− doc/todo/wishlist:_dropping_git-annex_history.mdwn
@@ -1,28 +0,0 @@-In real life discussions with git-annex users at DebConf, the idea was proposed to have a way to drop the history of the git-annex branch, and replace it with a new branch with just the current state of the repository. --The only thing that breaks when this is done, in theory, is `git annex log`, which can't show the location history -of files.--The crucial thing is that this operation would only need to be done in one repository, and it would then record some information in its (new) git-annex branch, so when it was pushed to other repositories, git-annex there could notice that history had been dropped, and do the same. So, even if you have rarely used offline archive repositories, the history dropping would eventually reach them, without needing to remember to do it.--There was speculation that it would be enough to record eg, the SHA of the top commit on the old branch. That may not be good enough, because another remote may have not gotten that SHA into its branch yet, or may have commits on top of that SHA. --Maybe instead we want to record the SHA of the *first* commit to the old git-annex branch. This way, we can tell if the branch that got deleted is the one we're currently using. And if it is, we create a new branch with the current state of *our* branch, and then union merge the other branch into it.--Hmm, another wrinkle is that, when this indication propigates from remote A to remote B, remote B may also have some git-annex branches available for remotes C and D, which have not transitioned, and E, which has transitioned already. It seems B should first union merge C and D into B, and then flatten B to B', and then union merge A and E into B'.--I think that'd work!----[[Joey]]--Will also allow dropping dead remotes from history. Just remove all-references to them when rewriting the branch. May or may not be desirable;-I sometimes care about dead remotes that I hope to one day recuscitate.-(OTOH, I can always run git annex fsck in them to get their location-tracking back, if I do manage to get them back.)----[[Joey]] --See also : [[forum/safely_dropping_git-annex_history]]--> [[done]] --[[Joey]]
− doc/todo/wishlist:_encrypted_git_remote_on_hosting_site_from_webapp.mdwn
@@ -1,1 +0,0 @@-It would be great to be able to do **private encrypted git remote on hosting site** and **multiuser encrypted git remote on hosting site** as explained in [[tips/fully encrypted git repositories with gcrypt]] through the webapp. I think it's a pretty common usecase that can be very useful for people not owning a proper server.
− doc/todo/wishlist:_generic_annex.cost-command.mdwn
@@ -1,17 +0,0 @@-### Current setup--ATM git-annex has--remote.<name>.annex-cost-remote.<name>.annex-cost-command  # command is not provided cmdline options by annex--to set the cost for a given remote.  That requires setting up one of those variables per each host, and possibly hardcoding options for the annex-cost-command providing e.g. the remote name.--### Suggestion--wouldn't it be more general and thus more flexible to have a repository-wide--annex.cost-command--which could take options %remote, %file and assessed accordingly per each file upon '--get' request to allow maximal flexibility: e.g. some files might better be fetched from remotes supporting transfer compression, some from the web, etc.  Also it might be worth providing %remote_kind ("special" vs "git") to disambiguate %remote's?-
− doc/todo/wishlist:_git-annex_replicate.mdwn
@@ -1,22 +0,0 @@-I'd like to be able to do something like the following:-- * Create encrypted git-annex remotes on a couple of semi-trusted machines - ones that have good connectivity, but non-redundant hardware- * set numcopies=3- * run `git-annex replicate` and have git-annex run the appropriate copy commands to make sure every file is on at least 3 machines--There would also likely be a `git annex rebalance` command which could be used if remotes were added or removed.  If possible, it should copy files between servers directly, rather than proxy through a potentially slow client.--There might be the need to have a 'replication_priority' option for each remote that configures which machines would be preferred.  That way you could set your local server to a high priority to ensure that it is always 1 of the 3 machines used and files are distributed across 2 of the remaining remotes.  Other than priority, other options that might help:-- * maxspace - A self imposed quota per remote machine.  git-annex replicate should try to replicate files first to machines with more free space. maxspace would change the free space calculation to be `min(actual_free_space, maxspace - space_used_by_git_annex)- * bandwidth - when replication files, copies should be done between machines with the highest available bandwidth. ( I think this option could be useful for git-annex get in general)--> `git annex sync --content` handles this now. [[done]]-> -> You do need to run it, or the assistant, on each node that needs-> to copy files to spread them through the network. ->-> A `git annex rebalance`-> is essentially the same as sshing to the remote and running `git annex-> sync --content` there. Assuming the remote repository itself has enough-> remotes set up that git-annex is able to copy files around. --[[Joey]]
− doc/todo/wishlist:_git_annex_diff.mdwn
@@ -1,9 +0,0 @@-git diff is not very helpful for annexed files.--How about a git annex diff command that allows to compare two versions of an annexed file?--Should be relatively simple, only there would have to be a way to deal with the situation where not both versions are present in the repository. Either abort with a message showing the command you need to run to get the missing version(s). Or even interactively volunteer to get it automatically, asking the user for confirmation.--Of course you wouldn't want to diff two large files, but with git annex assistant, all files are annexed by default (right?), so this would be useful.--There might already be a way to easily diff two versions of an annexed file which I'm missing -- in that case please point me to it! :)
− doc/todo/wishlist:_git_annex_info_UUID.mdwn
@@ -1,8 +0,0 @@-All repos contain some level of information about all other tracked repositories.-It would be nice if I could see that info, preferably with a timestamp telling me when the last sync happened.--`git annex info UUID/name` would be suggestion.---Thanks,-Richard
− doc/todo/wishlist:_git_annex_info_UUID/comment_2._comment
@@ -1,8 +0,0 @@-One piece of information that's sometimes useful, but not always, is to get a count of keys present in another remote plus the size of the remote.--Thus, I could verify that some repos are empty, archive repos have every single file, etc etc.--I still think that info is best suited for `git annex info name/UUID` as it's more volatile than what `git annex vicfg` displays.---Richard
− doc/todo/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.mdwn
@@ -1,20 +0,0 @@-I am running centralized git-annex exclusively.--Similar to--    git annex get--I'd like to have a--    git annex put--which would put all files on the default remote(s).--My main reason for not wanting to use copy --to is that I need to specify the remote's name in this case which makes writing a wrapper unnecessarily hard. Also, this would allow--    mr push--to do the right thing all by itself.--> I feel that the new `git annex sync --content` is pretty close to what's-> requested here. [[done]] --[[Joey]]
− doc/todo/wishlist:_git_annex_status.mdwn
@@ -1,21 +0,0 @@-Ideally, it would look similar to this. And yes, I put "put" in there ;)--    non-annex % git annex status-    git annex status: error: not a git annex repository-    annex % git annex status-    annex object storage version: A-    annex backend engine: {WORM,SHA512,...}-    Estimated local annex size: B MiB-    Estimated total annex size: C MiB-    Files without file size information in local annex: D-    Files without file size information in total annex: E-    Last fsck: datetime-    Last git pull: datetime - $annex_name-    Last git push: datetime - $annex_name-    Last git annex get: datetime - $annex_name-    Last git annex put: datetime - $annex_name-    annex %--Datetime could be ISO's YYYY-MM-DDThh:mm:ss or, personal preference, YYYY-MM-DD--hh-mm-ss. I prefer the latter as it's DNS-, tag- and filename-safe which is why I am using it for everything. In a perfect world, ISO would standardize YYYY-MM-DD-T-hh-mm-ss-Z[-SSSSSSSS][--$timezone], but meh.--[[done]]
− doc/todo/wishlist:_git_backend_for_git-annex.mdwn
@@ -1,9 +0,0 @@-Preamble: Obviously, the core feature of git-annex is the ability to keep a subset of files in a local repo. The main trade-off is that you don't get version tracking.--Use case: On my laptop, I might not have enough disk space to store everything. Not so for my main box nor my backup server. And I would _really_ like to have proper version tracking for many of my files. Thus...--Wish: ...why not use git as a version backend? That way, I could just push all my stuff to the central instance(s) and have the best of both worlds. Depending on what backend is used in the local repos, it might make sense to define a list of supported client backends with pre-computed keys.---- RichiH--[[done]] (bup)
− doc/todo/wishlist:_history_of_operations.mdwn
@@ -1,8 +0,0 @@-Hi,--I would love to have a page of "history" or "events" in the webapp. Similar to how Dropbox or Box show it.-I've been using git-annex for my personal files for a few months now, and I feel like this is the only feature missing to start using it in a production multi-user environment.--Thanks--[[!tag design/assistant]]
− doc/todo/wishlist:_make_git_annex_reinject_work_in_direct_mode.mdwn
@@ -1,21 +0,0 @@-### Please describe the problem.--`git annex reinject` refuses to work while in direct mode.--When in direct mode git annex reinject could simply perform `rm $symlink; mv $file_copy .; git annex add $file`. I prefer having git annex doing that so I am sure I am not messing up (mistakenly adding new files for instance) and everything is properly managed.--### What version of git-annex are you using? On what operating system?--git-annex 4.20130516.1--~~~~-$ lsb_release -a-No LSB modules are available.-Distributor ID:	Ubuntu-Description:	Ubuntu 12.04.2 LTS-Release:	12.04-Codename:	precise-~~~~--> [[fixed|done]]. Why did I take so long to do this, it was a trivial 1-> word change! --[[Joey]]
− doc/todo/wishlist:_make_partial_files_available_during_transfer.mdwn
@@ -1,18 +0,0 @@-Imagine this situation:-You have a laptop and a NAS.-On your laptop you want to consume a large media file located on the NAS.-So you type:--    git annex get --from nas mediafile--But now you have to wait for the download to complete, unless either --* rsync is pointed directly to the file in the object storage ("--inplace")-or-* the symlink temporarily points to the partial file during a transfer--which would allow you instantaneous consumption of your media.-It might make sense to make this behavior configurable, because not everyone might agree with having partial content (that mismatches its key) around.---So what do you say?
− doc/todo/wishlist:_metadata_metadata_view.mdwn
@@ -1,23 +0,0 @@-Currently looking at the metadata and views.--One of the things I would like to do is have a view that shows files by metadata metadata.. for example, "when the file last had tags changed".--Something along the lines of--    $ git annex view metadata-tag-mtime=YYYYMMDD-    view  (searching...)-    -    Switched to branch 'views/metadata/tag/mtime/YYYYMMDD'-    ok-    -    $ ls-    20130816-    20130921-    20131015--This would allow me to review files that haven't had any tag changes applied for a while and thus, may need the tags updating.--I've done this in every tagging system I've used by (ab)using mtime, but that requires an additional step (of touching the file).--> [[done]]; "$field-lastchanged" is automatically made available for each-> field! --[[Joey]]
− doc/todo/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.mdwn
@@ -1,55 +0,0 @@-as of git-annex version 3.20110719, all git-annex commits only contain the word "update" as a commit message. given that the contents of the commit are pretty non-descriptive (SHA1 hashes for file names, uuids for repository names), i suggest to have more descriptive commit messages, as shown here:--    /mnt/usb_disk/photos/2011$ git annex get-    /mnt/usb_disk/photos/2011$ git show git-annex-    [...]-    usb-disk-photos: get 2011-    -    * 10 files retrieved from 2 sources (9 from local-harddisk, 1 from my-server)-    * 120 files were already present-    * 2 files could not be retrieved-    /mnt/usb_disk/photos/2011$ cd ~/photos/2011/07-    ~/photos/2011/07$ git copy --to my-server-    ~/photos/2011/07$ git show git-annex-    [...]-    local-harddisk: copy 2011/07 to my-server-    -    * 20 files pushed-    ~/photos/2011/07$--in my opinion, the messages should at least contain--* what command was used-* in which repository they were executed-* which files or directories they affected (not necessarily all files, but what was given on command line or implicitly from the working directory)----[[chrysn]]--> The implementation of the git-annex branch precludes more descriptive-> commit messages, since a single commit can include changes that were-> previously staged to the branch's index file, or spooled to its journal-> by other git-annex commands (either concurrently running or-> interrupted commands, or even changes needed to automatically merge-> other git-annex branches).-> -> It would be possible to make it *less* verbose, with an empty commit-> message. :) --[[Joey]] -->> Closing as this is literally impossible to do without making->> git-annex worse. [[done]] --[[Joey]] --> I'm not sure that the requested feature is that far off. There are two-> aspects, that can be solved relatively easy:->->  * Recording the name of the remote the commit was issued on. This->    information is simply constant per remote.->->  * While it is true that there is no 1 on 1 correspondence between commands->    and git-annex commits, it would be entirely possible to add a "message->    journal". Every command issued would start out with writing its->    invocation to the message journal. At the time the journal ends up being->    committed to the git-annex branch, the message journal is used as the->    body of the commit message and truncated.->-> It is true that these suggestions do not address every aspect of the-> original report, but they would solve about 90%. --[[HelmutGrohne]]
− doc/todo/wishlist:_more_info_in_commit_messages_in_general.mdwn
@@ -1,8 +0,0 @@-This is probably an extension of [[wishlist: more info in the standard commit message of `sync`]]:--It would also help debugging if the default commit messages listed, e.g., the name of all the files modified by that commit (or merge).--> No, it would not help debugging to put redundant info in commit-> messages. It will only make your repository take up more disk space.-> git log --stat will already show you the files changes by-> any commit.  [[wontfix|done]] --[[Joey]]
− doc/todo/wishlist:_option_to_disable_url_checking_with_addurl.mdwn
@@ -1,9 +0,0 @@-I'm testing out an idea of using filter-branch on a git repository to both retroactively annex and AND record a weburl for all relevant files.--c.f. [http://git-annex.branchable.com/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/](http://git-annex.branchable.com/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/)--The bottleneck I'm hitting here seems to be the fact that `git annex addurl` diligently checks each url to see that it is accessible, which adds up quickly if many files are to be processed.--It would be great if addurl had an option to disable checking the url, in order to speed up large batch jobs like this.--> --relaxed added [[done]] --[[Joey]]
− doc/todo/wishlist:_option_to_print_more_info_with___39__unused__39__.mdwn
@@ -1,37 +0,0 @@-It would be nice if the 'unused' command could optionally display info about the actual files behind its cryptic keys.--I created a (very rough) bash script that simply splices in some info from git log -S'KEY' --numstat into the unused list, like so:--    arand@mas:~/annex(master)$ bash ~/utv/scripts/annex-vunused -    unused . (checking for unused data...) (checking master...) (checking synced/master...) (checking origin/HEAD...) (checking seagate/master...)-    Some annexed data is no longer used by any files:-    NUMBER  KEY-    1       SHA256E-s1073741824--49bc20df15e412a64472421e13fe86ff1c5165e18b2afccf160d4dc19fe68a14.img-                    8f479a4 Sat Feb 23 16:14:12 2013 +0100 remove bigfile-                    0       1       dummy_bigfile.img-                    2988d18 Sat Feb 23 16:13:48 2013 +0100 dummy file-                    1       0       dummy_bigfile.img-    (To see where data was previously used, try: git log --stat -S'KEY')To remove unwanted data: git-annex dropunused NUMBER-    ok-The script:--    #!/bin/bash-    -    pipe="$(mktemp -u)"-    mkfifo "$pipe"-    -    git annex unused  >"$pipe" || exit 1 &-    -    while read -r line-    do-    	key="$(echo "$line" | sed 's/^[^-]*-\([^-]*\)-.*/\1/')"-    	echo -n "$line"-    	test -n "$key" && \-    		echo && \-    		git log --format="%h %cd %s" --numstat -S"$key" | \-    			sed '/^$/d;/git-annex automatic sync/,/^ /d;s/^/\t\t/'-    -    done < "$pipe"-    rm "$pipe"--It would be nice if something like this was available as an option, since it's good way to get a quick overview of what the content is, and if it's safe to drop it.
− doc/todo/wishlist:_pack_metadata_in_direct_mode.mdwn
@@ -1,3 +0,0 @@-The metadata storage for direct mode (V3) is this. In directory .git/annex/objects, there is one .map for all annexed file, and one .cache for all files in the working tree. Both are small files, containing only 1 line or a few lines. I have a repo with lots of photos, and this created lots of small files. I believe this will cause many performance issues. --It would be great if these files are packed, maybe also in the git pack files format.
− doc/todo/wishlist:_perform_fsck_remotely.mdwn
@@ -1,39 +0,0 @@-Currently, when `fsck`'ing a remote, files are first downloaded to a temporary -file locally, decrypted if needed, and finally digested; the temporary file is-then either thrown away, or quarantined, depending on the value of that digest.--Whereas this approach works with any kind of remote, in the particular case -where the user is granted execution rights on the digest command, one could-avoid cluttering the network and digest the file remotely. I propose the-addition of a per-remote git option `annex-remote-fsck` to switch between the-two behaviors.---There is an issue with encrypted specialremotes, though. As hinted at -[[here|tips/beware_of_SSD_wear_when_doing_fsck_on_large_special_remotes/#comment-70055f166f7eeca976021d24a736b471]],-since the digest of a ciphertext can't be deduced from that of a plaintext in -general one would needs, before sending an encrypted file to such a remote, to-digest it and store that digest somewhere (together with the cipher's size and-perhaps other meta-information).--The usual directory structure (`.../.../{backend}-s{size}--{digest}.log`) seems-perfectly suitable to store these informations. Lines there would look like-`{timestamp}s {numcopy} {UUID} {remote digest}`. Of course, it implies that-remote digest commands are trustworthy (are doing the right thing), and that-the digest output are not tampered by others who have access to the git repo.-But that's outside the current threat model, I guess.--Actually, since git-annex always includes a MDC in the ciphertexts, we could do-something clever and even avoid running a digest algorithm. According to the-[[OpenPGP standard|https://tools.ietf.org/html/rfc4880#section-5.14]] the MDC-is essentially a SHA-1 hash of the plaintext. I'm still investigating if it's-even possible, but in theory it would be enough (with non-chained ciphers at-least) to download a few bytes from the encrypted remote, decrypt those bytes-to retrieve the hash, and compare that hash with the known value. Of course-there is a downside here, namely that files tampered anywhere but on the MDC-packets would not be detected by `fsck` (but gpg will warn when decrypting the-file).---My 2 cents :-) Is there something I missed? I suppose there was a reason to -perform `fsck` locally at the first place...
− doc/todo/wishlist:_print_locations_for_files_in_rsync_remote.mdwn
@@ -1,6 +0,0 @@-Based on an irc conversation earlier today:--19:50 < warp> joeyh: what is the best way to figure out the (remote) filename for a file stored in an rsync remote?--20:43 < joeyh> warp: re your other question, probably the best thing would be to make the whereis command print out locations for each remote, as it always does for the web special remotes-
− doc/todo/wishlist:_query_things_like_description__44___trust_level.mdwn
@@ -1,4 +0,0 @@-It would be helpful to have a way to query things like a repository's description and trust level, without having to poke in the git-annex branch.  For example, "git annex describe ." currently clears the description but could print the current one instead.--> `git annex status` now breaks down the repository list by type. [[done]]-> --[[Joey]] 
− doc/todo/wishlist:_recursive_directory_remote_setup__47__addurl.mdwn
@@ -1,7 +0,0 @@-I think it would be interesting to have a way to recursively import a local directory without actually moving files around. And to be able to checksum these files as well (without moving them into the annex).--This would work somewhat similar to looping over a directory and adding file:// remotes for each file.--A use case is importing optical media (read-only), whilst keeping that media as a remote, and being able to calculate checksums directly without moving any files around.--For single files, it would also be interesting if addurl had a "--localchecksum" option that would only work for file:// urls, and make it checksum files directly from their source location?)
− doc/todo/wishlist:_simple_url_for_webapp.mdwn
@@ -1,36 +0,0 @@-### Please describe the problem.--The environment is os/x with chrome as the browser.--Let's say I close the tab with the webapp running in it. The 'git-annex webapp' process is still running, according to 'ps'.--So I open a new tab, but then what do I  type into the browser url bar to get the app back? What is usually there is a loopback address and an authorisation hash.--* Should I double-click on the git-annex icon in the dock (or Applications directory)?-* I figured out from observing the startup that if I give the url ://localhost/Users/me/annex/.git/annex/webapp.html I will get redirected to the right place.-Should I set up a bookmark for that?--### What steps will reproduce the problem?--see above.--### What version of git-annex are you using? On what operating system?--Version: 4.20130723-ge023649 -Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS-os: os/x 10.8.4--### Please provide any additional information below.--I notice that in the webapp ui, all the items at the top of the page highlight when one hovers over them and have useful URLs attached,-with the exception of the 'git-annex' item at the far left.What if that had the entry point url attached to it (so one could bookmark that)?--> The git-annex assistant is designed to stay running in the background whether you have the web browser open or not. You can open the web display at any time by -> using the git-annex menu item (on linux) or running the git-annex-webapp-> program (which is in the DMG on OSX).-> -> If the file:// url were exposed to users, it would not work if -> the assistant had not already been started. This is why there is a program-> to open the webapp, not an url.-> -> Not a bug; [[done]] --[[Joey]] 
− doc/todo/wishlist:_simpler_gpg_usage.mdwn
@@ -1,12 +0,0 @@-This is my current understanding on how one must use gpg with git-annex:-- * Generate(or copy around) a gpg key on every machine that needs to access the encrypted remote.- * git annex initremote myremote encryption=KEY for each key that you generated--What I'm trying to figure out is if I can generate a no-passphrase gpg key and commit it to the repository, and have git-annex use that. That way any new clones of the annex automatically have access to any encrypted remotes, without having to do any key management.--I think I can generate a no-passphrase key, but then I still have to manually copy it around to each machine.--I'm not a huge gpg user so part of this is me wanting to avoid having to manage and keeping track of the keys.  This would probably be a non-issue if I used gpg on more machines and was more comfortable with it.--[[done]]
− doc/todo/wishlist:_special_remote_Ubuntu_One.mdwn
@@ -1,1 +0,0 @@-Special remote support for [Ubuntu One](http://one.ubuntu.com) would be nice. They're [using propietary but open protocol](https://wiki.ubuntu.com/UbuntuOne/TechnicalDetails#ubuntuone-storageprotocol) based on [Google Protocol Buffers](http://code.google.com/p/protobuf/). There's [protobuf for Haskell](http://code.google.com/p/protobuf-haskell/) so it should be possible to compile [the protocol file](http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntuone-storage-protocol/trunk/view/head:/ubuntuone/storageprotocol/protocol.proto) to Haskell code and then use that to implement the native Ubuntu special remote.
− doc/todo/wishlist:_special_remote_for_sftp_or_rsync.mdwn
@@ -1,28 +0,0 @@-i think it would be useful to have a fourth kind of [[special_remotes]]-that connects to a dumb storage using sftp or rsync. this can be emulated-by using sshfs, but that means lots of round-trips through the system and-is limited to platforms where sshfs is available.--typical use cases are backups to storate shared between a group of people-where each user only has limited access (sftp or rsync), when using-[[special_remotes/bup]] is not an option.--an alternative to implementing yet another special remote would be to have-some kind of plugin system by which external programs can provide an-interface to key-value stores (i'd implement the sftp backend myself, but-haven't learned haskell yet).--> Ask and ye [[shall receive|special_remotes/rsync]].-> -> Sometimes I almost think that a generic configurable special remote that-> just uses configured shell commands would be useful.. But there's really-> no comparison with sitting down and writing code tuned to work with-> a given transport like rsync, when it comes to reliability and taking-> advantage of its abilities (like resuming). --[[Joey]]-->> big thanks, and bonus points for identical formats, so converting from->> directory to rsync is just a matter of changing ``type`` from ``directory``->> to ``rsync`` in ``.git-annex/remote.log`` and replacing the directory info->> with ``annex-rsyncurl = <host>:<dir>`` in ``.git/config``. --[[chrysn]]--[[done]]
− doc/todo/wishlist:_special_remote_mega.co.nz.mdwn
@@ -1,3 +0,0 @@-mega.co.nz has 50gb for free accounts. They also have an API, so I guess it wouldn't be too hard to use it as a special remote.--[[done]], see [[tips/megaannex]].
− doc/todo/wishlist:_support_copy_--from__61__x_--to__61__y.mdwn
@@ -1,29 +0,0 @@-I'd like to be able to:--    git annex copy --from=x --to=y .--Use case (true story) follows:--My desktop hard drive was filling up. I dropped some large files which are also stored (via git-annex) on my backup drive. While these aren't irreplaceable files, I'd prefer to have at least two copies of everything I've decided I care enough about to archive. Later, I get a 2nd external drive, and I:--    git annex copy --to=new-external-drive .--Fantastic! Now I've got everything that was important/useful enough to keep on my desktop backed up a 2nd time onto my new drive.--But my new drive doesn't have a copy of any of the files I dropped from my desktop. I would like to be able to:--    git annex copy --from=old-external-drive --to=new-external-drive .--on my desktop, and then my new drive would have a copy of everything, and my desktop drive would still have plenty of space (ie the files I'd dropped to make space would still not be stored on the desktop).--The git repos on these external drives are both bare (as in ``git init --bare``) because they are used only for backups. Thus I operate on them only as remotes from my main (desktop) repo.--> I have now implemented the --all option, and it's the default when-> running `git annex get` inside a bare repo.-> -> So, the solution is to `cd` to the repository on old-external-drive,-> and `git remote add newdrive /path/to/new/drive/repo`. Then run `git-> annex copy --all --to newdrive` and it'll move everything.-> -> Calling this [[done]] unless there are other use cases where the double-> copy method is really needed? --[[Joey]] 
− doc/todo/wishlist:_support_drop__44___find_on_special_remotes.mdwn
@@ -1,18 +0,0 @@-Currently there is no way to drop files, or list what files are available, on a special remote.-It would be good if "git annex drop" and "git annex find" supported the --from argument.--> I agree, drop should support --from.->> [[done]] --[[Joey]] -> -> To find files *believed* to be present in a given remote, use-> `git annex find --in remote`-> Note that it might show out of date info, since it does not actually go-> check the current contents of the remote. The only reason to support-> `find --from` would be to always check, but I don't think that's needed.-> --[[Joey]] --For commands that don't support the --from argument, it would also be nice to print an error.-Currently running "git annex drop --from usbdrive" doesn't behave as hoped and instead drops-all content from the local annex.--> This is done now. --[[Joey]] 
− doc/todo/wishlist:_support_for_more_ssh_urls_.mdwn
@@ -1,22 +0,0 @@-git-annex does not seem to support all kinds of urls that git does.--Specifically, if I have ~/bar set up on host foo:--    [remote "foo"]-    ## this one is not recognized as ssh url at all-    #	url = foo:bar-    ## this one makes git-annex try to access '/~/bar' literally-    #	url = ssh://foo/~/bar-    ## this one works-    	url = ssh://foo/home/tv/bar--> scp-style is now supported.--> `~` expansions (for the user's home, or other users)-> are somewhat tricky to support as they require running-> code on the remote to lookup homedirs. If git-annex grows a-> `git annex shell` that is run on the remote side-> (something I am [[considering|todo/git-annex-shell]] for other reasons), it-> could handle the expansions there. --[[Joey]]--> Update: Now `~` expansions are supported. [[done]]
− doc/todo/wishlist:_swift_backend.mdwn
@@ -1,5 +0,0 @@-[swift](http://swift.openstack.org/) is the object storage of Openstack. Think S3, but fully open source. As it's backed by rackspace.com, NASA, Dell and several other major players, adoption rates will explode.--I can provide a test account soonish if need be, else rackspace.com if offering swift storage. Their API gateway lives at https://auth.api.rackspacecloud.com/v1.0--Richard
− doc/todo/wishlist:_traffic_accounting_for_git-annex.mdwn
@@ -1,3 +0,0 @@-As git annex keeps logs about file transfers anyway, it should be relatively easy to add traffic accounting to a repo. That would allow me to monitor how much traffic a given repo generates. As I might end up hosting git-annex repos for a few personal friends, I need/want a way to track the heavy hitters. -- RichiH--PS: If you ever plan to host git-annex similar branchable, this would probably be of interest to you, as well :)
− doc/todo/wishlist:_unify_directory_scheme_for_the_store.mdwn
@@ -1,20 +0,0 @@-In regular repos, objects are stored in files of the form: .git/annex/objects/xY/z1/SHA1-.../SHA1-.... (scheme 1)--On (some) special remotes, the corresponding file is stored at: .../abc/def/SHA1-... (scheme 2)--I'm not sure why the same scheme as in .git/objects isn't used, but it would be useful that the two-directory prefix were the same for all objects stores.--My use case is: I synchronize a git repo, say containing photos, to a server on which I can't install git-annex. I want the server to store all annexed files. For the photos to be viewed online, the annex store must use the scheme 1 (because the symlinks point to files with scheme 1). So I need to rsync .git/annex/objects manually from my desktop, because a git-annex rsync remote uses scheme 2. On the other hand, the repo on this server is not known by git-annex (like it would if I used a rsync remote).--At least it would be valuable (to get around above problem) to have a plumbing command giving the 2-directory prefix from a given key, for example:--$ git annex prefix-dir SHA1-s2--3f786850e387550fdab836ed7e6dc881--7w/88--f18/122---Even if the 2 schemes were unified, this prefix-dir command would still be useful when hacking around git-annex (for now I need to maintain a dictionary structure).--Thanks a lot.
@@ -1,9 +0,0 @@-as far as I know, if you `git clone` locally a git-annex enabled repository, it will not have all the files available. you would need to use `git annex get` and all files would be copied over, wasting a significant amount of space.--`git-clone` has this `--local` flags which hardlinks objects in `.git/objects`, but also, maybe more interestingly, has a `--shared` option to simply tell git to look in another repo for objects. it seems to me git-annex could leverage those functionalities to avoid file duplication when using local repositories.--this would be especially useful for [ikiwiki](http://ikiwiki.info/forum/ikiwiki_and_big_files).--This is a [[wishlist]], but I would also welcome implementation pointers to do this myself, thanks! --[[anarcat]]--> [[dup|done]]
− doc/todo/wishlist:_vicfg_possible_repo_group_names.mdwn
@@ -1,16 +0,0 @@-git annex vicfg should display valid repository group names--For trust levels the possible values are displayed:--    # Repository trust configuration-    # (Valid trust levels: trusted semitrusted untrusted dead)-    ...--The same is not currently done for repository groups- -    # Repository groups-    # (Separate group names with spaces)--Thanks.--> [[done]] --[[Joey]]
− doc/todo/wishlist:alias_system.mdwn
@@ -1,1 +0,0 @@-To implement things like my custom `git annex-push` without the dash, i.e. `git annex push`, an alias system for git-annex would be nice.
doc/users/anarcat.mdwn view
@@ -9,7 +9,7 @@  ... or the ones I commented it, to be more precise. -[[!inline pages="tips/* and and link(users/anarcat) and !bugs/*/*" sort=mtime feeds=no actions=yes archive=yes show=0]]+[[!inline pages="tips/* and and link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]   My todos@@ -18,13 +18,13 @@ ... same.  [[!inline pages="todo/* and !todo/done and !link(todo/done) and-link(users/anarcat) and !todo/*/*" sort=mtime feeds=no actions=yes archive=yes show=0]]+link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]  Done ----  [[!inline pages="todo/* and !todo/done and link(todo/done) and-link(users/anarcat) and !todo/*/*" feeds=no actions=yes archive=yes show=0]]+link(users/anarcat)" feeds=no actions=yes archive=yes show=0]]  My bugs =======@@ -32,13 +32,13 @@ ... same.  [[!inline pages="bugs/* and !bugs/done and !link(bugs/done) and-link(users/anarcat) and !bugs/*/*" sort=mtime feeds=no actions=yes archive=yes show=0]]+link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]  Fixed -----  [[!inline pages="bugs/* and !bugs/done and link(bugs/done) and-link(users/anarcat) and !bugs/*/*" feeds=no actions=yes archive=yes show=0]]+link(users/anarcat)" feeds=no actions=yes archive=yes show=0]]  Forum posts ===========
+ doc/walkthrough/backups/comment_1_d0244791d2abbf29553546a6a6568a0f._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="madduck"+ ip="2001:a60:f0fb:0:224:d7ff:fe04:c82c"+ subject="Warn while inconsistent"+ date="2014-04-06T20:44:17Z"+ content="""+Sure, git-annex prevents me from dropping files unless there are numcopies around elsewhere, but shouldn't it also ensure that numcopies cannot be set unless that requirement is already met?++Furthermore, shouldn't it ensure that when new files are added, they are automatically distributed to fulfill the requirement?+"""]]
− doc/walkthrough/fsck:_verifying_your_data.mdwn
@@ -1,16 +0,0 @@-You can use the fsck subcommand to check for problems in your data. What-can be checked depends on the key-value [[backend|backends]] you've used-for the data. For example, when you use the SHA1 backend, fsck will verify-that the checksums of your files are good. Fsck also checks that the-[[numcopies|copies]] setting is satisfied for all files.--	# git annex fsck-	fsck some_file (checksum...) ok-	fsck my_cool_big_file (checksum...) ok-	...--You can also specify the files to check.  This is particularly useful if -you're using sha1 and don't want to spend a long time checksumming everything.--	# git annex fsck my_cool_big_file-	fsck my_cool_big_file (checksum...) ok
− doc/walkthrough/fsck:_when_things_go_wrong.mdwn
@@ -1,13 +0,0 @@-Fsck never deletes possibly bad data; instead it will be moved to-`.git/annex/bad/` for you to recover. Here is a sample of what fsck-might say about a badly messed up annex:--	# git annex fsck-	fsck my_cool_big_file (checksum...)-	git-annex: Bad file content; moved to .git/annex/bad/SHA1:7da006579dd64330eb2456001fd01948430572f2-	git-annex: ** No known copies exist of my_cool_big_file-	failed-	fsck important_file-	git-annex: Only 1 of 2 copies exist. Run git annex get somewhere else to back it up.-	failed-	git-annex: 2 failed
− doc/walkthrough/quiet_please:_When_git-annex_seems_to_skip_files.mdwn
@@ -1,27 +0,0 @@-One behavior of git-annex is sometimes confusing at first, but it turns out-to be useful once you get to know it.--	# git annex drop *-	# --Why didn't git-annex seem to do anything despite being asked to drop all the-files? Because it checked them all, and none of them are present.--Most git-annex commands will behave this way when they're able to quickly-check that nothing needs to be done about a file.--Running a git-annex command without specifying any file name will-make git-annex look for files in the current directory and its-subdirectories. So, we can add all new files to the annex easily:--	# echo hi > subdir/subsubdir/newfile-	# git annex add-	add subdir/subsubdir/newfile ok--When doing this kind of thing, having nothing shown for files-that it doesn't need to act on is useful because it prevents swamping-you with output. You only see the files it finds it does need to act on.--So remember: If git-annex seems to not do anything when you tell it to, it's-not being lazy -- It's checked that nothing needs to be done to get to the-state you asked for!
− doc/walkthrough/removing_files:_When_things_go_wrong.mdwn
@@ -1,24 +0,0 @@-Before dropping a file, git-annex wants to be able to look at other-remotes, and verify that they still have a file. After all, it could-have been dropped from them too. If the remotes are not mounted/available,-you'll see something like this.--	# git annex drop important_file other.iso-	drop important_file (unsafe)-	  Could only verify the existence of 0 out of 1 necessary copies-	  Unable to access these remotes: usbdrive-	  Try making some of these repositories available:-	   	58d84e8a-d9ae-11df-a1aa-ab9aa8c00826  -- portable USB drive-	   	ca20064c-dbb5-11df-b2fe-002170d25c55  -- backup SATA drive-	  (Use --force to override this check, or adjust numcopies.)-	failed-	drop other.iso (unsafe)-	  Could only verify the existence of 0 out of 1 necessary copies-          No other repository is known to contain the file.-	  (Use --force to override this check, or adjust numcopies.)-	failed--Here you might --force it to drop `important_file` if you [[trust]] your backup.-But `other.iso` looks to have never been copied to anywhere else, so if-it's something you want to hold onto, you'd need to transfer it to-some other repository before dropping it.
− doc/walkthrough/transferring_files:_When_things_go_wrong.mdwn
@@ -1,17 +0,0 @@-After a while, you'll have several annexes, with different file contents.-You don't have to try to keep all that straight; git-annex does -[[location_tracking]] for you. If you ask it to get a file and the drive-or file server is not accessible, it will let you know what it needs to get-it:--	# git annex get video/hackity_hack_and_kaxxt.mov-	get video/_why_hackity_hack_and_kaxxt.mov (not available)-	  Unable to access these remotes: usbdrive, server-	  Try making some of these repositories available:-	  	5863d8c0-d9a9-11df-adb2-af51e6559a49  -- my home file server-	   	58d84e8a-d9ae-11df-a1aa-ab9aa8c00826  -- portable USB drive-	   	ca20064c-dbb5-11df-b2fe-002170d25c55  -- backup SATA drive-	failed-	# sudo mount /media/usb-	# git annex get video/hackity_hack_and_kaxxt.mov-	get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok
git-annex-shell.1 view
@@ -56,7 +56,7 @@ It also runs the annex\-content hook. .IP .IP "notifychanges"-This is used by \fBgit\-annex remote\-daemon\fP to be notified when+This is used by \fBgit\-annex remotedaemon\fP to be notified when refs in the remote repository are changed. .IP .IP "gcryptsetup gcryptid"@@ -88,6 +88,9 @@ .IP "GIT_ANNEX_SHELL_READONLY" .IP If set, disallows any command that could modify the repository.+.IP+Note that this does not prevent passing commands on to git\-shell.+For that, you also need ... .IP .IP "GIT_ANNEX_SHELL_LIMITED" If set, disallows running git\-shell to handle unknown commands.
git-annex.1 view
@@ -248,7 +248,7 @@ .IP Use \fB\-\-template\fP to control where the files are stored. The default template is '${feedtitle}/${itemtitle}${extension}'-(Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid)+(Other available variables: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate) .IP The \fB\-\-relaxed\fP and \fB\-\-fast\fP options behave the same as they do in addurl. .IP@@ -848,6 +848,9 @@ This runs git\-annex's built\-in test suite. .IP There are several parameters, provided by Haskell's tasty test framework.+.IP+.IP "\fBremotedaemon\fP"+Detects when remotes have changed and fetches from them. .IP .IP "\fBxmppgit\fP" This command is used internally to perform git pulls over XMPP.
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 5.20140405+Version: 5.20140412 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess <joey@kitenet.net>@@ -101,7 +101,7 @@    base (>= 4.5 && < 4.9), monad-control, MonadCatchIO-transformers,    IfElse, text, QuickCheck >= 2.1, bloomfilter, edit-distance, process,    SafeSemaphore, uuid, random, dlist, unix-compat, async, stm (>= 2.3),-   data-default, case-insensitive+   data-default, case-insensitive, shakespeare   CC-Options: -Wall   GHC-Options: -Wall   Extensions: PackageImports@@ -210,7 +210,7 @@     CPP-Options: -DWITH_DNS    if flag(Feed)-    Build-Depends: feed+    Build-Depends: feed (>= 0.3.9.2)     CPP-Options: -DWITH_FEED      if flag(Quvi)