packages feed

git-annex 3.20110915 → 3.20110928

raw patch · 256 files changed

+851/−40730 lines, 256 files

Files

Annex.hs view
@@ -24,13 +24,15 @@ import Control.Applicative hiding (empty)  import qualified Git+import Git.CatFile import Git.Queue import Types.Backend-import Types.Remote+import qualified Types.Remote import Types.Crypto import Types.BranchState import Types.TrustLevel import Types.UUID+import qualified Utility.Matcher  -- git-annex's monad newtype Annex a = Annex { runAnnex :: StateT AnnexState IO a }@@ -47,19 +49,20 @@ data AnnexState = AnnexState 	{ repo :: Git.Repo 	, backends :: [Backend Annex]-	, remotes :: [Remote Annex]+	, remotes :: [Types.Remote.Remote Annex] 	, repoqueue :: Queue 	, output :: OutputType 	, force :: Bool 	, fast :: Bool 	, auto :: Bool 	, branchstate :: BranchState+	, catfilehandle :: Maybe CatFileHandle 	, forcebackend :: Maybe String 	, forcenumcopies :: Maybe Int 	, defaultkey :: Maybe String 	, toremote :: Maybe String 	, fromremote :: Maybe String-	, exclude :: [String]+	, limit :: Either [Utility.Matcher.Token (FilePath -> Annex Bool)] (Utility.Matcher.Matcher (FilePath -> Annex Bool)) 	, forcetrust :: [(UUID, TrustLevel)] 	, trustmap :: Maybe TrustMap 	, cipher :: Maybe Cipher@@ -78,12 +81,13 @@ 	, fast = False 	, auto = False 	, branchstate = startBranchState+	, catfilehandle = Nothing 	, forcebackend = Nothing 	, forcenumcopies = Nothing 	, defaultkey = Nothing 	, toremote = Nothing 	, fromremote = Nothing-	, exclude = []+	, limit = Left [] 	, forcetrust = [] 	, trustmap = Nothing 	, cipher = Nothing
Backend.hs view
@@ -17,6 +17,7 @@ ) where  import Control.Monad.State (liftIO, when)+import Control.Applicative import System.IO.Error (try) import System.FilePath import System.Posix.Files@@ -86,9 +87,7 @@ 		Left _ -> return Nothing 		Right l -> makekey l 	where-		getsymlink = do-			l <- readSymbolicLink file-			return $ takeFileName l+		getsymlink = takeFileName <$> readSymbolicLink file 		makekey l = maybe (return Nothing) (makeret l) (fileKey l) 		makeret l k = 			case maybeLookupBackendName bname of@@ -111,7 +110,7 @@ chooseBackends fs = do 	g <- Annex.gitRepo 	forced <- Annex.getState Annex.forcebackend-	if forced /= Nothing+	if isJust forced 		then do 			l <- orderedList 			return $ map (\f -> (Just $ head l, f)) fs
Backend/SHA.hs view
@@ -38,7 +38,7 @@  genBackend :: SHASize -> Maybe (Backend Annex) genBackend size-	| shaCommand size == Nothing = Nothing+	| isNothing (shaCommand size) = Nothing 	| otherwise = Just b 	where 		b = Types.Backend.Backend
Branch.hs view
@@ -18,7 +18,7 @@ 	name	 ) where -import Control.Monad (when, unless, liftM)+import Control.Monad (unless, liftM) import Control.Monad.State (liftIO) import Control.Applicative ((<$>)) import System.FilePath@@ -26,12 +26,10 @@ import Data.String.Utils import System.Cmd.Utils import Data.Maybe-import Data.List import System.IO import System.IO.Binary import System.Posix.Process import System.Exit-import qualified Data.ByteString.Char8 as B  import Types.BranchState import qualified Git@@ -43,6 +41,7 @@ import Types import Messages import Locations+import CatFile  type GitRef = String @@ -58,15 +57,6 @@ originname :: GitRef originname = "origin/" ++ name -{- Converts a fully qualified git ref into a short version for human- - consumptiom. -}-shortref :: GitRef -> String-shortref = remove "refs/heads/" . remove "refs/remotes/"-	where-		remove prefix s-			| prefix `isPrefixOf` s = drop (length prefix) s-			| otherwise = s- {- A separate index file for the branch. -} index :: Git.Repo -> FilePath index g = gitAnnexDir g </> "index"@@ -209,7 +199,7 @@ 		if null diffs 			then return Nothing 			else do-				showSideAction $ "merging " ++ shortref ref ++ " into " ++ name+				showSideAction $ "merging " ++ Git.refDescribe ref ++ " into " ++ name 				-- By passing only one ref, it is actually 				-- merged into the index, preserving any 				-- changes that may already be staged.@@ -244,49 +234,10 @@ 					setCache file content 					return content 				Nothing -> withIndexUpdate $ do-					content <- catFile file+					content <- catFile fullname file 					setCache file content 					return content -{- Uses git cat-file in batch mode to read the content of a file.- -- - Only one process is run, and it persists and is used for all accesses. -}-catFile :: FilePath -> Annex String-catFile file = do-	state <- getState-	maybe (startup state) ask (catFileHandles state)-	where-		startup state = do-			g <- Annex.gitRepo-			(_, from, to) <- liftIO $ hPipeBoth "git" $-				toCommand $ Git.gitCommandLine g-					[Param "cat-file", Param "--batch"]-			setState state { catFileHandles = Just (from, to) }-			ask (from, to)-		ask (from, to) = liftIO $ do-			let want = fullname ++ ":" ++ file-			hPutStrLn to want-			hFlush to-			header <- hGetLine from-			case words header of-				[sha, blob, size]-					| length sha == Git.shaSize &&-					  blob == "blob" -> handle from size-					| otherwise -> empty-				_-					| header == want ++ " missing" -> empty-					| otherwise -> error $ "unknown response from git cat-file " ++ header-		handle from size = case reads size of-			[(bytes, "")] -> readcontent from bytes-			_ -> empty-		readcontent from bytes = do-			content <- B.hGet from bytes-			c <- hGetChar from-			when (c /= '\n') $-				error "missing newline from git cat-file"-			return $ B.unpack content-		empty = return ""- {- Lists all files on the branch. There may be duplicates in the list. -} files :: Annex [FilePath] files = withIndexUpdate $ do@@ -331,7 +282,7 @@ 	g <- Annex.gitRepo 	fs <- liftIO $ catch (getDirectoryContents $ gitAnnexJournalDir g) 		(const $ return [])-	return $ filter (\f -> f /= "." && f /= "..") fs+	return $ filter (`notElem` [".", ".."]) fs  {- Stages all journal files into the index, and returns True if the index  - was modified. -}
CHANGELOG view
@@ -1,3 +1,25 @@+git-annex (3.20110928) unstable; urgency=low++  * --in can be used to make git-annex only operate on files+    believed to be present in a given repository.+  * Arbitrarily complex expressions can be built to limit the files git-annex+    operates on, by combining the options --not --and --or -( and -)+    Example: git annex get --exclude '*.mp3' --and --not -( --in usbdrive --or --in archive -)+  * --copies=N can be used to make git-annex only operate on files with+    the specified number of copies. (And --not --copies=N for the inverse.)+  * find: Rather than only showing files whose contents are present,+    when used with --exclude --copies or --in, displays all files that+    match the specified conditions.+  * Note that this is a behavior change for git-annex find! Old behavior+    can be gotten by using: git-annex find --in .+  * status: Massively sped up; remove --fast mode.+  * unused: File contents used by branches and tags are no longer+    considered unused, even when not used by the current branch. This is+    the final piece of the puzzle needed for git-annex to to play nicely+    with branches.++ -- Joey Hess <joeyh@debian.org>  Wed, 28 Sep 2011 18:14:02 -0400+ git-annex (3.20110915) unstable; urgency=low    * whereis: Show untrusted locations separately and do not include in
+ CatFile.hs view
@@ -0,0 +1,26 @@+{- git cat-file interface, with handle automatically stored in the Annex monad+ -+ - Copyright 2011 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module CatFile (+	catFile+) where++import Control.Monad.State++import qualified Git.CatFile+import Types+import qualified Annex++catFile :: String -> FilePath -> Annex String+catFile branch file = maybe startup go =<< Annex.getState Annex.catfilehandle+	where+		startup = do+			g <- Annex.gitRepo+			h <- liftIO $ Git.CatFile.catFileStart g+			Annex.changeState $ \s -> s { Annex.catfilehandle = Just h }+			go h+		go h = liftIO $ Git.CatFile.catFile h branch file
Command.hs view
@@ -1,6 +1,6 @@ {- git-annex command infrastructure  -- - Copyright 2010 Joey Hess <joey@kitenet.net>+ - Copyright 2010-2011 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -}@@ -10,13 +10,9 @@ import Control.Monad.State (liftIO) import System.Directory import System.Posix.Files-import Control.Monad (filterM, liftM, when)+import Control.Monad (filterM, liftM) import Control.Applicative-import System.Path.WildMatch-import Text.Regex.PCRE.Light.Char8-import Data.List import Data.Maybe-import Data.String.Utils  import Types import qualified Backend@@ -25,11 +21,14 @@ import qualified Git import qualified Git.LsFiles as LsFiles import Utility+import Utility.Conditional+import Utility.Path import Types.Key import Trust import LocationLog import Config import Backend+import Limit  {- A command runs in four stages.  -@@ -77,9 +76,8 @@ {- Prepares a list of actions to run to perform a command, based on  - the parameters passed to it. -} prepCommand :: Command -> [String] -> Annex [Annex Bool]-prepCommand Command { cmdseek = seek } params = do-	lists <- mapM (\s -> s params) seek-	return $ map doCommand $ concat lists+prepCommand Command { cmdseek = seek } params =+	return . map doCommand . concat =<< mapM (\s -> s params) seek  {- Runs a command through the start, perform and cleanup stages -} doCommand :: CommandStart -> CommandCleanup@@ -88,11 +86,9 @@ 		start   = stage $ maybe success perform 		perform = stage $ maybe failure cleanup 		cleanup = stage $ \r -> showEndResult r >> return r-		stage a b = b >>= a+		stage = (=<<) 		success = return True-		failure = do-			showEndFail-			return False+		failure = showEndFail >> return False  notAnnexed :: FilePath -> Annex (Maybe a) -> Annex (Maybe a) notAnnexed file a = maybe a (const $ return Nothing) =<< Backend.lookupFile file@@ -102,51 +98,40 @@  notBareRepo :: Annex a -> Annex a notBareRepo a = do-	g <- Annex.gitRepo-	when (Git.repoIsLocalBare g) $+	whenM (Git.repoIsLocalBare <$> Annex.gitRepo) $ 		error "You cannot run this subcommand in a bare repository." 	a  {- These functions find appropriate files or other things based on a-   user's parameters, and run a specified action on them. -}-withFilesInGit :: (String -> CommandStart) -> CommandSeek+   user's parameters, and prepare actions operating on them. -}+withFilesInGit :: (FilePath -> CommandStart) -> CommandSeek withFilesInGit a params = do 	repo <- Annex.gitRepo-	files <- liftIO $ runPreserveOrder (LsFiles.inRepo repo) params-	liftM (map a) $ filterFiles files+	runFiltered a $ liftIO $ runPreserveOrder (LsFiles.inRepo repo) params withAttrFilesInGit :: String -> ((FilePath, String) -> CommandStart) -> CommandSeek withAttrFilesInGit attr a params = do 	repo <- Annex.gitRepo 	files <- liftIO $ runPreserveOrder (LsFiles.inRepo repo) params-	files' <- filterFiles files-	liftM (map a) $ liftIO $ Git.checkAttr repo attr files'+	runFilteredGen a fst $ liftIO $ Git.checkAttr repo attr files withNumCopies :: (FilePath -> Maybe Int -> CommandStart) -> CommandSeek withNumCopies a params = withAttrFilesInGit "annex.numcopies" go params 	where-		go (file, v) = do-			let numcopies = readMaybe v-			a file numcopies+		go (file, v) = a file (readMaybe v) withBackendFilesInGit :: (BackendFile -> CommandStart) -> CommandSeek withBackendFilesInGit a params = do 	repo <- Annex.gitRepo 	files <- liftIO $ runPreserveOrder (LsFiles.inRepo repo) params-	files' <- filterFiles files-	backendPairs a files'+	backendPairs a files withFilesMissing :: (String -> CommandStart) -> CommandSeek-withFilesMissing a params = do-	files <- liftIO $ filterM missing params-	liftM (map a) $ filterFiles files+withFilesMissing a params = runFiltered a $ liftIO $ filterM missing params 	where-		missing f = do-			e <- doesFileExist f-			return $ not e+		missing = liftM not . doesFileExist withFilesNotInGit :: (BackendFile -> CommandStart) -> CommandSeek withFilesNotInGit a params = do 	repo <- Annex.gitRepo 	force <- Annex.getState Annex.force 	newfiles <- liftIO $ runPreserveOrder (LsFiles.notInRepo repo force) params-	newfiles' <- filterFiles newfiles-	backendPairs a newfiles'+	backendPairs a newfiles withWords :: ([String] -> CommandStart) -> CommandSeek withWords a params = return [a params] withStrings :: (String -> CommandStart) -> CommandSeek@@ -154,8 +139,8 @@ withFilesToBeCommitted :: (String -> CommandStart) -> CommandSeek withFilesToBeCommitted a params = do 	repo <- Annex.gitRepo-	tocommit <- liftIO $ runPreserveOrder (LsFiles.stagedNotDeleted repo) params-	liftM (map a) $ filterFiles tocommit+	runFiltered a $+		liftIO $ runPreserveOrder (LsFiles.stagedNotDeleted repo) params withFilesUnlocked :: (BackendFile -> CommandStart) -> CommandSeek withFilesUnlocked = withFilesUnlocked' LsFiles.typeChanged withFilesUnlockedToBeCommitted :: (BackendFile -> CommandStart) -> CommandSeek@@ -167,8 +152,7 @@ 	typechangedfiles <- liftIO $ runPreserveOrder (typechanged repo) params 	unlockedfiles <- liftIO $ filterM notSymlink $ 		map (\f -> Git.workTree repo ++ "/" ++ f) typechangedfiles-	unlockedfiles' <- filterFiles unlockedfiles-	backendPairs a unlockedfiles'+	backendPairs a unlockedfiles withKeys :: (Key -> CommandStart) -> CommandSeek withKeys a params = return $ map (a . parse) params 	where@@ -177,25 +161,21 @@ withNothing a [] = return [a] withNothing _ _ = error "This command takes no parameters." -backendPairs :: (BackendFile -> CommandStart) -> CommandSeek-backendPairs a files = map a <$> Backend.chooseBackends files+runFiltered :: (FilePath -> Annex (Maybe a)) -> Annex [FilePath] -> Annex [Annex (Maybe a)]+runFiltered a = runFilteredGen a id -{- Filter out files those matching the exclude glob pattern,- - if it was specified. -}-filterFiles :: [FilePath] -> Annex [FilePath]-filterFiles l = do-	exclude <- Annex.getState Annex.exclude-	if null exclude-		then return l-		else return $ filter (notExcluded $ wildsRegex exclude) l-	where-		notExcluded r f = isNothing $ match r f []+backendPairs :: (BackendFile -> CommandStart) -> CommandSeek+backendPairs a fs = runFilteredGen a snd (Backend.chooseBackends fs) -wildsRegex :: [String] -> Regex-wildsRegex ws = compile regex []+runFilteredGen :: (b -> Annex (Maybe a)) -> (b -> FilePath) -> Annex [b] -> Annex [Annex (Maybe a)]+runFilteredGen a d fs = do+	matcher <- Limit.getMatcher+	liftM (map $ proc matcher) fs 	where-		regex = "^(" ++ alternatives ++ ")"-		alternatives = join "|" $ map wildToRegex ws+		proc matcher v = do+			let f = d v+			ok <- matcher f+			if ok then a v else stop  {- filter out symlinks -}	 notSymlink :: FilePath -> IO Bool@@ -244,33 +224,6 @@ 	where 		nokey = error "please specify the key with --key" 		badkey = error "bad key"--{- Given an original list of files, and an expanded list derived from it,- - ensures that the original list's ordering is preserved. - -- - The input list may contain a directory, like "dir" or "dir/". Any- - items in the expanded list that are contained in that directory will- - appear at the same position as it did in the input list.- -}-preserveOrder :: [FilePath] -> [FilePath] -> [FilePath]--- optimisation, only one item in original list, so no reordering needed-preserveOrder [_] new = new-preserveOrder orig new = collect orig new-	where-		collect [] n = n-		collect [_] n = n -- optimisation-		collect (l:ls) n = found ++ collect ls rest-			where (found, rest)=partition (l `dirContains`) n--{- Runs an action that takes a list of FilePaths, and ensures that - - its return list preserves order.- -- - This assumes that it's cheaper to call preserveOrder on the result,- - than it would be to run the action separately with each param. In the case- - of git file list commands, that assumption tends to hold.- -}-runPreserveOrder :: ([FilePath] -> IO [FilePath]) -> [FilePath] -> IO [FilePath]-runPreserveOrder a files = preserveOrder files <$> a files  {- Used for commands that have an auto mode that checks the number of known  - copies of a key.
Command/AddUrl.hs view
@@ -28,7 +28,7 @@ import Utility.Conditional  command :: [Command]-command = [repoCommand "addurl" (paramRepeating $ paramUrl) seek+command = [repoCommand "addurl" (paramRepeating paramUrl) seek 	"add urls to annex"]  seek :: [CommandSeek]
Command/Find.hs view
@@ -7,11 +7,12 @@  module Command.Find where -import Control.Monad.State (liftIO)+import Control.Monad.State  import Command import Content import Utility.Conditional+import Limit  command :: [Command] command = [repoCommand "find" paramPaths seek "lists available files"]@@ -19,8 +20,10 @@ seek :: [CommandSeek] seek = [withFilesInGit start] -{- Output a list of files. -} start :: FilePath -> CommandStart start file = isAnnexed file $ \(key, _) -> do-	whenM (inAnnex key) $ liftIO $ putStrLn file+	-- only files inAnnex are shown, unless the user has requested+	-- others via a limit+	whenM (liftM2 (||) (inAnnex key) limited) $+		liftIO $ putStrLn file 	stop
Command/Fsck.hs view
@@ -26,6 +26,7 @@ import Trust import Utility.DataUnits import Utility.Path+import Utility.FileMode import Config  command :: [Command]
Command/InitRemote.hs view
@@ -35,7 +35,7 @@ 	when (null ws) needname  	(u, c) <- findByName name-	let fullconfig = M.union config c	+	let fullconfig = config `M.union` c	 	t <- findType fullconfig  	showStart "initremote" name
Command/Migrate.hs view
@@ -12,6 +12,7 @@ import System.Posix.Files import System.Directory import System.FilePath+import Data.Maybe  import Command import qualified Annex@@ -48,7 +49,7 @@ {- Checks if a key is upgradable to a newer representation. -} {- Ideally, all keys have file size metadata. Old keys may not. -} upgradableKey :: Key -> Bool-upgradableKey key = Types.Key.keySize key == Nothing+upgradableKey key = isNothing $ Types.Key.keySize key  perform :: FilePath -> Key -> Backend Annex -> CommandPerform perform file oldkey newbackend = do
Command/Status.hs view
@@ -13,8 +13,9 @@ import System.IO import Data.List import qualified Data.Map as M+import qualified Data.Set as S+import Data.Set (Set) -import qualified Annex import qualified Types.Backend as B import qualified Types.Remote as R import qualified Remote@@ -33,21 +34,13 @@  -- cached info that multiple Stats may need data StatInfo = StatInfo-	{ keysPresentCache :: Maybe (SizeList Key)-	, keysReferencedCache :: Maybe (SizeList Key)+	{ keysPresentCache :: Maybe (Set Key)+	, keysReferencedCache :: Maybe (Set Key) 	}  -- a state monad for running Stats in type StatState = StateT StatInfo Annex --- a list with a known length--- (Integer is used for the length to avoid--- blowing up if someone annexed billions of files..)-type SizeList a = ([a], Integer)--sizeList :: [a] -> SizeList a-sizeList l = (l, genericLength l)- command :: [Command] command = [repoCommand "status" paramNothing seek 	"shows status information about the annex"]@@ -58,16 +51,13 @@ {- Order is significant. Less expensive operations, and operations  - that share data go together.  -}-faststats :: [Stat]-faststats = +stats :: [Stat]+stats =  	[ supported_backends 	, supported_remote_types 	, tmp_size 	, bad_data_size-	]-slowstats :: [Stat]-slowstats =-	[ local_annex_keys+	, local_annex_keys 	, local_annex_size 	, total_annex_keys 	, total_annex_size@@ -76,9 +66,7 @@  start :: CommandStart start = do-	fast <- Annex.getState Annex.fast-	let todo = if fast then faststats else faststats ++ slowstats-	evalStateT (mapM_ showStat todo) (StatInfo Nothing Nothing)+	evalStateT (mapM_ showStat stats) (StatInfo Nothing Nothing) 	stop  stat :: String -> StatState String -> Stat@@ -106,17 +94,19 @@  local_annex_size :: Stat local_annex_size = stat "local annex size" $-	cachedKeysPresent >>= keySizeSum+	keySizeSum <$> cachedKeysPresent  total_annex_size :: Stat total_annex_size = stat "total annex size" $-	cachedKeysReferenced >>= keySizeSum+	keySizeSum <$> cachedKeysReferenced  local_annex_keys :: Stat-local_annex_keys = stat "local annex keys" $ show . snd <$> cachedKeysPresent+local_annex_keys = stat "local annex keys" $+	show . S.size <$> cachedKeysPresent  total_annex_keys :: Stat-total_annex_keys = stat "total annex keys" $ show . snd <$> cachedKeysReferenced+total_annex_keys = stat "total annex keys" $+	show . S.size <$> cachedKeysReferenced  tmp_size :: Stat tmp_size = staleSize "temporary directory size" gitAnnexTmpDir@@ -127,7 +117,7 @@ backend_usage :: Stat backend_usage = stat "backend usage" $ usage <$> cachedKeysReferenced 	where-		usage (ks, _) = pp "" $ sort $ map swap $ splits ks+		usage ks = pp "" $ sort $ map swap $ splits $ S.toList ks 		splits :: [Key] -> [(String, Integer)] 		splits ks = M.toList $ M.fromListWith (+) $ map tcount ks 		tcount k = (keyBackendName k, 1)@@ -135,40 +125,37 @@ 		pp c [] = c 		pp c ((n, b):xs) = "\n\t" ++ b ++ ": " ++ show n ++ pp c xs --cachedKeysPresent :: StatState (SizeList Key)+cachedKeysPresent :: StatState (Set Key) cachedKeysPresent = do 	s <- get 	case keysPresentCache s of 		Just v -> return v 		Nothing -> do-			keys <- lift getKeysPresent-			let v = sizeList keys-			put s { keysPresentCache = Just v }-			return v+			keys <- S.fromList <$> lift getKeysPresent+			put s { keysPresentCache = Just keys }+			return keys -cachedKeysReferenced :: StatState (SizeList Key)+cachedKeysReferenced :: StatState (Set Key) cachedKeysReferenced = do 	s <- get 	case keysReferencedCache s of 		Just v -> return v 		Nothing -> do-			keys <- lift Command.Unused.getKeysReferenced-			-- A given key may be referenced repeatedly.-			-- nub does not seem too slow (yet)..-			let v = sizeList $ nub keys-			put s { keysReferencedCache = Just v }-			return v+			keys <- S.fromList <$> lift Command.Unused.getKeysReferenced+			put s { keysReferencedCache = Just keys }+			return keys -keySizeSum :: SizeList Key -> StatState String-keySizeSum (keys, len) = do-	let knownsizes = mapMaybe keySize keys-	let total = roughSize storageUnits False $ sum knownsizes-	let missing = len - genericLength knownsizes-	return $ total ++-		if missing > 0-			then aside $ "but " ++ show missing ++ " keys have unknown size"-			else ""+keySizeSum :: Set Key -> String+keySizeSum s = total ++ missingnote+	where+		knownsizes = mapMaybe keySize $ S.toList s+		total = roughSize storageUnits False $ sum knownsizes+		missing = S.size s - genericLength knownsizes+		missingnote+			| missing == 0 = ""+			| otherwise = aside $+				"but " ++ show missing +++				" keys have unknown size"  staleSize :: String -> (Git.Repo -> FilePath) -> Stat staleSize label dirspec = do@@ -176,7 +163,7 @@ 	if null keys 		then nostat 		else stat label $ do-			s <- keySizeSum $ sizeList keys+			let s = keySizeSum $ S.fromList keys 			return $ s ++ aside "clean up with git-annex unused"  aside :: String -> String
Command/Unannex.hs view
@@ -18,6 +18,7 @@ import qualified AnnexQueue import Utility.SafeCommand import Utility.Path+import Utility.FileMode import LocationLog import Types import Content
Command/Unlock.hs view
@@ -19,6 +19,7 @@ import Utility.Conditional import Utility.CopyFile import Utility.Path+import Utility.FileMode  command :: [Command] command =
Command/Unused.hs view
@@ -15,6 +15,7 @@ import Data.Maybe import System.FilePath import System.Directory+import Data.List  import Command import Types@@ -22,12 +23,17 @@ import Messages import Locations import Utility+import Utility.FileMode+import Utility.SafeCommand import LocationLog import qualified Annex import qualified Git import qualified Git.LsFiles as LsFiles+import qualified Git.LsTree as LsTree import qualified Backend import qualified Remote+import qualified Branch+import CatFile  command :: [Command] command = [repoCommand "unused" paramNothing seek@@ -69,9 +75,8 @@ checkRemoteUnused' :: Remote.Remote Annex -> Annex () checkRemoteUnused' r = do 	showAction "checking for unused data"-	referenced <- getKeysReferenced 	remotehas <- filterM isthere =<< loggedKeys-	let remoteunused = remotehas `exclude` referenced+	remoteunused <- excludeReferenced remotehas 	let list = number 0 remoteunused 	writeUnusedFile "" list 	unless (null remoteunused) $ showLongNote $ remoteUnusedMsg r list@@ -112,21 +117,8 @@  unusedMsg :: [(Int, Key)] -> String unusedMsg u = unusedMsg' u-	["Some annexed data is no longer used by any files in the current branch:"]-	[dropMsg Nothing,-	"Please be cautious -- are you sure that another branch, or another",-	"repository does not still use this data?"]--remoteUnusedMsg :: Remote.Remote Annex -> [(Int, Key)] -> String-remoteUnusedMsg r u = unusedMsg' u-	["Some annexed data on " ++ name ++ -	 " is not used by any files in the current branch:"]-	[dropMsg $ Just r,-	 "Please be cautious -- Are you sure that the remote repository",-	 "does not use this data? Or that it's not used by another branch?"]-	where-		name = Remote.name r -+	["Some annexed data is no longer used by any files:"]+	[dropMsg Nothing] unusedMsg' :: [(Int, Key)] -> [String] -> [String] -> String unusedMsg' u header trailer = unlines $ 	header ++@@ -134,6 +126,13 @@ 	["(To see where data was previously used, try: git log --stat -S'KEY')"] ++ 	trailer +remoteUnusedMsg :: Remote.Remote Annex -> [(Int, Key)] -> String+remoteUnusedMsg r u = unusedMsg' u+	["Some annexed data on " ++ name ++ " is not used by any files:"]+	[dropMsg $ Just r]+	where+		name = Remote.name r + dropMsg :: Maybe (Remote.Remote Annex) -> String dropMsg Nothing = dropMsg' "" dropMsg (Just r) = dropMsg' $ " --from " ++ Remote.name r@@ -155,12 +154,40 @@ 		else do 			showAction "checking for unused data" 			present <- getKeysPresent-			referenced <- getKeysReferenced-			let unused = present `exclude` referenced+			unused <- excludeReferenced present 			staletmp <- staleKeysPrune gitAnnexTmpDir present 			stalebad <- staleKeysPrune gitAnnexBadDir present 			return (unused, stalebad, staletmp) +{- Finds keys in the list that are not referenced in the git repository. -}+excludeReferenced :: [Key] -> Annex [Key]+excludeReferenced [] = return [] -- optimisation+excludeReferenced l = do+	g <- Annex.gitRepo+	c <- liftIO $ Git.pipeRead g [Param "show-ref"]+	excludeReferenced'+		(getKeysReferenced : (map getKeysReferencedInGit $ refs c))+		(S.fromList l)+	where+		-- Skip the git-annex branches, and get all other unique refs.+		refs = map last .+			nubBy cmpheads .+			filter ourbranches .+			map words . lines+		cmpheads a b = head a == head b+		ourbranchend = "/" ++ Branch.name+		ourbranches ws = not $ ourbranchend `isSuffixOf` last ws+excludeReferenced' :: ([Annex [Key]]) -> S.Set Key -> Annex [Key]+excludeReferenced' [] s = return $ S.toList s+excludeReferenced' (a:as) s+	| s == S.empty = return [] -- optimisation+	| otherwise = do+		referenced <- a+		let !s' = remove referenced+		excludeReferenced' as s'+	where+		remove l = s `S.difference` S.fromList l+ {- Finds items in the first, smaller list, that are not  - present in the second, larger list.  - @@ -181,6 +208,23 @@ 	keypairs <- mapM Backend.lookupFile files 	return $ map fst $ catMaybes keypairs +{- List of keys referenced by symlinks in a git ref. -}+getKeysReferencedInGit :: String -> Annex [Key]+getKeysReferencedInGit ref = do+	showAction $ "checking " ++ Git.refDescribe ref+	g <- Annex.gitRepo+	findkeys [] =<< liftIO (LsTree.lsTree g ref)+	where+		findkeys c [] = return c+		findkeys c (l:ls) = do+			if isSymLink (LsTree.mode l)+				then do+					content <- catFile ref $ LsTree.file l+					case fileKey (takeFileName content) of+						Nothing -> findkeys c ls+						Just k -> findkeys (k:c) ls+				else findkeys c ls+ {- Looks in the specified directory for bad/tmp keys, and returns a list  - of those that might still have value, or might be stale and removable.   - @@ -190,7 +234,7 @@ staleKeysPrune :: (Git.Repo -> FilePath) -> [Key] -> Annex [Key] staleKeysPrune dirspec present = do 	contents <- staleKeys dirspec-		+	 	let stale = contents `exclude` present 	let dup = contents `exclude` stale 
Config.hs view
@@ -82,18 +82,10 @@ {- Checks if a repo should be ignored, based either on annex-ignore  - setting, or on command-line options. Allows command-line to override  - annex-ignore. -}-remoteNotIgnored :: Git.Repo -> Annex Bool-remoteNotIgnored r = do+repoNotIgnored :: Git.Repo -> Annex Bool+repoNotIgnored r = do 	ignored <- getConfig r "ignore" "false"-	to <- match Annex.toremote-	from <- match Annex.fromremote-	if to || from-		then return True-		else return $ not $ Git.configTrue ignored-	where-		match a = do-			n <- Annex.getState a-			return $ n == Git.repoRemoteName r+	return $ not $ Git.configTrue ignored  {- If a value is specified, it is used; otherwise the default is looked up  - in git config. forcenumcopies overrides everything. -}
Content.hs view
@@ -13,8 +13,6 @@ 	getViaTmpUnchecked, 	withTmp, 	checkDiskSpace,-	preventWrite,-	allowWrite, 	moveAnnex, 	removeAnnex, 	fromAnnex,@@ -43,6 +41,7 @@ import Utility.Conditional import Utility.StatFS import Utility.Path+import Utility.FileMode import Types.Key import Utility.DataUnits import Config@@ -151,19 +150,6 @@ 			error $ "not enough free space, need " ++  				roughSize storageUnits True n ++ 				" more (use --force to override this check or adjust annex.diskreserve)"--{- Removes the write bits from a file. -}-preventWrite :: FilePath -> IO ()-preventWrite f = unsetFileMode f writebits-	where-		writebits = foldl unionFileModes ownerWriteMode-					[groupWriteMode, otherWriteMode]--{- Turns a file's write bit back on. -}-allowWrite :: FilePath -> IO ()-allowWrite f = do-	s <- getFileStatus f-	setFileMode f $ fileMode s `unionFileModes` ownerWriteMode  {- Moves a file into .git/annex/objects/  -
Git.hs view
@@ -20,6 +20,7 @@ 	repoIsHttp, 	repoIsLocalBare, 	repoDescribe,+	refDescribe, 	repoLocation, 	workTree, 	workTreeFile,@@ -62,7 +63,7 @@ 	prop_idempotent_deencode ) where -import Control.Monad (unless, when)+import Control.Monad (unless, when, liftM2) import Control.Applicative import System.Directory import System.FilePath@@ -171,6 +172,14 @@ repoDescribe Repo { location = Dir dir } = dir repoDescribe Repo { location = Unknown } = "UNKNOWN" +{- Converts a fully qualified git ref into a user-visible version -}+refDescribe :: String -> String+refDescribe = remove "refs/heads/" . remove "refs/remotes/"+	where+		remove prefix s+			| prefix `isPrefixOf` s = drop (length prefix) s+			| otherwise = s+ {- Location of the repo, either as a path or url. -} repoLocation :: Repo -> String repoLocation Repo { location = Url url } = show url@@ -425,7 +434,7 @@ getSha subcommand a = do 	t <- a 	let t' = if last t == '\n'-		then take (length t - 1) t+		then init t 		else t 	when (length t' /= shaSize) $ 		error $ "failed to read sha from git " ++ subcommand ++ " (" ++ t' ++ ")"@@ -451,11 +460,8 @@ {- Reads null terminated output of a git command (as enabled by the -z   - parameter), and splits it into a list of files/lines/whatever. -} pipeNullSplit :: Repo -> [CommandParam] -> IO [FilePath]-pipeNullSplit repo params = do-	fs0 <- pipeRead repo params-	return $ split0 fs0-	where-		split0 s = filter (not . null) $ split "\0" s+pipeNullSplit repo params = filter (not . null) . split "\0" <$>+	pipeRead repo params  {- Runs git config and populates a repo with its config. -} configRead :: Repo -> IO Repo@@ -576,7 +582,7 @@ 	| otherwise = f 	where 		e = '\\'-		middle = take (length s - 1) s+		middle = init s 		unescape (b, []) = b 		-- look for escapes starting with '\' 		unescape (b, v) = b ++ beginning ++ unescape (decode rest)@@ -702,7 +708,6 @@ 	where 		isRepo = gitSignature ".git" ".git/config" 		isBareRepo = gitSignature "objects" "config"-		gitSignature subdir file = do-			s <- (doesDirectoryExist (dir ++ "/" ++ subdir))-			f <- (doesFileExist (dir ++ "/" ++ file))-			return (s && f)+		gitSignature subdir file = liftM2 (&&)+			(doesDirectoryExist (dir ++ "/" ++ subdir))+			(doesFileExist (dir ++ "/" ++ file))
+ Git/CatFile.hs view
@@ -0,0 +1,63 @@+{- git cat-file interface+ -+ - Copyright 2011 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Git.CatFile (+	CatFileHandle,+	catFileStart,+	catFileStop,+	catFile+) where++import Control.Monad.State+import System.Cmd.Utils+import System.IO+import qualified Data.ByteString.Char8 as B++import Git+import Utility.SafeCommand++type CatFileHandle = (PipeHandle, Handle, Handle)++{- Starts git cat-file running in batch mode in a repo and returns a handle. -}+catFileStart :: Repo -> IO CatFileHandle+catFileStart repo = hPipeBoth "git" $ toCommand $+	Git.gitCommandLine repo [Param "cat-file", Param "--batch"]++{- Stops git cat-file. -}+catFileStop :: CatFileHandle -> IO ()+catFileStop (pid, from, to) = do+	hClose to+	hClose from+	forceSuccess pid++{- Uses a running git cat-file read the content of a file from a branch.+ - Files that do not exist on the branch will have "" returned. -}+catFile :: CatFileHandle -> String -> FilePath -> IO String+catFile (_, from, to) branch file = do+	hPutStrLn to want+	hFlush to+	header <- hGetLine from+	case words header of+		[sha, blob, size]+			| length sha == Git.shaSize &&+			  blob == "blob" -> handle size+			| otherwise -> empty+		_+			| header == want ++ " missing" -> empty+			| otherwise -> error $ "unknown response from git cat-file " ++ header+	where+		want = branch ++ ":" ++ file+		handle size = case reads size of+			[(bytes, "")] -> readcontent bytes+			_ -> empty+		readcontent bytes = do+			content <- B.hGet from bytes+			c <- hGetChar from+			when (c /= '\n') $+				error "missing newline from git cat-file"+			return $ B.unpack content+		empty = return ""
Git/LsFiles.hs view
@@ -23,13 +23,16 @@ inRepo repo l = pipeNullSplit repo $ 	Params "ls-files --cached -z --" : map File l -{- Scans for files at the specified locations that are not checked into- - git. -}+{- Scans for files at the specified locations that are not checked into git. -} notInRepo :: Repo -> Bool -> [FilePath] -> IO [FilePath] notInRepo repo include_ignored l =-	pipeNullSplit repo $ [Params "ls-files --others"]++exclude++[Params "-z --"] ++ map File l+	pipeNullSplit repo $+		[Params "ls-files --others"] ++ exclude +++		[Params "-z --"] ++ map File l 	where-		exclude = if include_ignored then [] else [Param "--exclude-standard"]+		exclude+			| include_ignored = []+			| otherwise = [Param "--exclude-standard"]  {- Returns a list of all files that are staged for commit. -} staged :: Repo -> [FilePath] -> IO [FilePath]
+ Git/LsTree.hs view
@@ -0,0 +1,51 @@+{- git ls-tree interface+ -+ - Copyright 2011 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Git.LsTree (+	TreeItem(..),+	lsTree+) where++import Numeric+import Control.Applicative+import Data.Char+import System.Posix.Types++import Git+import Utility.SafeCommand++type Treeish = String++data TreeItem = TreeItem+	{ mode :: FileMode+	, objtype :: String+	, sha :: String+	, file :: FilePath+	} deriving Show++{- Lists the contents of a Treeish -}+lsTree :: Repo -> Treeish -> IO [TreeItem]+lsTree repo t = map parseLsTree <$>+	pipeNullSplit repo [Params "ls-tree --full-tree -z -r --", File t]++{- Parses a line of ls-tree output.+ - (The --long format is not currently supported.) -}+parseLsTree :: String -> TreeItem+parseLsTree l = TreeItem m o s f+	where+		-- l = <mode> SP <type> SP <sha> TAB <file>+		-- Since everything until the file is fixed-width,+		-- do not need to split on words.+		(m, past_m) = head $ readOct l+		(o, past_o) = splitAt 4 $ space past_m+		(s, past_s) = splitAt shaSize $ space past_o+		f = decodeGitFile $ space past_s+		space (sp:rest)+			| isSpace sp = rest+			| otherwise = parseerr+		space [] = parseerr+		parseerr = "ls-tree parse error: " ++ l
GitAnnex.hs view
@@ -19,6 +19,7 @@ import Types.TrustLevel import qualified Annex import qualified Remote+import qualified Limit  import qualified Command.Add import qualified Command.Unannex@@ -97,8 +98,6 @@ 		"specify to where to transfer content" 	, Option ['f'] ["from"] (ReqArg setfrom paramRemote) 		"specify from where to transfer content"-	, Option ['x'] ["exclude"] (ReqArg addexclude paramGlob)-		"skip files matching the glob pattern" 	, Option ['N'] ["numcopies"] (ReqArg setnumcopies paramNumber) 		"override default number of copies" 	, Option [] ["trust"] (ReqArg (Remote.forceTrust Trusted) paramRemote)@@ -109,11 +108,16 @@ 		"override trust setting to untrusted" 	, Option ['c'] ["config"] (ReqArg setgitconfig "NAME=VALUE") 		"override git configuration setting"-	]+	, Option ['x'] ["exclude"] (ReqArg Limit.addExclude paramGlob)+		"skip files matching the glob pattern"+	, Option ['i'] ["in"] (ReqArg Limit.addIn paramRemote)+		"skip files not present in a remote"+	, Option ['C'] ["copies"] (ReqArg Limit.addCopies paramNumber)+		"skip files with fewer copies"+	] ++ matcherOptions 	where 		setto v = Annex.changeState $ \s -> s { Annex.toremote = Just v } 		setfrom v = Annex.changeState $ \s -> s { Annex.fromremote = Just v }-		addexclude v = Annex.changeState $ \s -> s { Annex.exclude = v:Annex.exclude s } 		setnumcopies v = Annex.changeState $ \s -> s {Annex.forcenumcopies = readMaybe v } 		setkey v = Annex.changeState $ \s -> s { Annex.defaultkey = Just v } 		setgitconfig :: String -> Annex ()
INSTALL view
@@ -8,7 +8,7 @@  ## Using cabal -As a haskell package, git-annex can be built using cabal. For example:+As a haskell package, git-annex can be installed using cabal. For example:  	cabal install git-annex --bindir=$HOME/bin 
Init.hs view
@@ -33,8 +33,7 @@ 	gitPreCommitHookWrite  uninitialize :: Annex ()-uninitialize = do-	gitPreCommitHookUnWrite+uninitialize = gitPreCommitHookUnWrite  {- Will automatically initialize if there is already a git-annex    branch from somewhere. Otherwise, require a manual init
+ Limit.hs view
@@ -0,0 +1,93 @@+{- user-specified limits on files to act on+ -+ - Copyright 2011 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Limit where++import Text.Regex.PCRE.Light.Char8+import System.Path.WildMatch+import Control.Applicative+import Data.Maybe++import Annex+import qualified Utility.Matcher+import qualified Remote+import qualified Backend+import LocationLog+import Utility+import Content++type Limit = Utility.Matcher.Token (FilePath -> Annex Bool)++{- Checks if there are user-specified limits. -}+limited :: Annex Bool+limited = (not . Utility.Matcher.matchesAny) <$> getMatcher'++{- Gets a matcher for the user-specified limits. The matcher is cached for+ - speed; once it's obtained the user-specified limits can't change. -}+getMatcher :: Annex (FilePath -> Annex Bool)+getMatcher = Utility.Matcher.matchM <$> getMatcher'++getMatcher' :: Annex (Utility.Matcher.Matcher (FilePath -> Annex Bool))+getMatcher' = do+	m <- Annex.getState Annex.limit+	case m of+		Right r -> return r+		Left l -> do+			let matcher = Utility.Matcher.generate (reverse l)+			Annex.changeState $ \s -> s { Annex.limit = Right matcher }+			return matcher++{- Adds something to the limit list, which is built up reversed. -}+add :: Limit -> Annex ()+add l = Annex.changeState $ \s -> s { Annex.limit = prepend $ Annex.limit s }+	where+		prepend (Left ls) = Left $ l:ls+		prepend _ = error "internal"++{- Adds a new token. -}+addToken :: String -> Annex ()+addToken = add . Utility.Matcher.token++{- Adds a new limit. -}+addLimit :: (FilePath -> Annex Bool) -> Annex ()+addLimit = add . Utility.Matcher.Operation++{- Add a limit to skip files that do not match the glob. -}+addExclude :: String -> Annex ()+addExclude glob = addLimit $ return . notExcluded+	where+		notExcluded f = isNothing $ match cregex f []+		cregex = compile regex []+		regex = '^':wildToRegex glob++{- Adds a limit to skip files not believed to be present+ - in a specfied repository. -}+addIn :: String -> Annex ()+addIn name = do+	u <- Remote.nameToUUID name+	addLimit $ if name == "." then check inAnnex else check (remote u)+	where+		check a f = Backend.lookupFile f >>= handle a+		handle _ Nothing = return False+		handle a (Just (key, _)) = a key+		remote u key = do+			us <- keyLocations key+			return $ u `elem` us++{- Adds a limit to skip files not believed to have the specified number+ - of copies. -}+addCopies :: String -> Annex ()+addCopies num =+	case readMaybe num :: Maybe Int of+		Nothing -> error "bad number for --copies"+		Just n -> addLimit $ check n+	where+		check n f = Backend.lookupFile f >>= handle n+		handle _ Nothing = return False+		handle n (Just (key, _)) = do+			us <- keyLocations key+			return $ length us >= n
LocationLog.hs view
@@ -23,7 +23,6 @@ ) where  import System.FilePath-import Control.Monad (when) import Control.Applicative import Data.Maybe @@ -36,16 +35,16 @@  {- Log a change in the presence of a key's value in a repository. -} logChange :: Git.Repo -> Key -> UUID -> LogStatus -> Annex ()-logChange repo key u s = do-	when (null u) $-		error $ "unknown UUID for " ++ Git.repoDescribe repo ++ -			" (have you run git annex init there?)"-	addLog (logFile key) =<< logNow s u+logChange repo key u s+	| null u = error $+		"unknown UUID for " ++ Git.repoDescribe repo ++ +		" (have you run git annex init there?)"+	| otherwise = addLog (logFile key) =<< logNow s u  {- Returns a list of repository UUIDs that, according to the log, have  - the value of a key. -} keyLocations :: Key -> Annex [UUID]-keyLocations key = currentLog $ logFile key+keyLocations = currentLog . logFile  {- Finds all keys that have location log information.  - (There may be duplicate keys in the list.) -}
Options.hs view
@@ -14,6 +14,7 @@ import qualified Annex import Types import Command+import Limit  {- Each dashed command-line option results in generation of an action  - in the Annex monad that performs the necessary setting.@@ -47,3 +48,15 @@ 		setforcebackend v = Annex.changeState $ \s -> s { Annex.forcebackend = Just v } 		setdebug = liftIO $ updateGlobalLogger rootLoggerName $ 			setLevel DEBUG+	+matcherOptions :: [Option]+matcherOptions =+	[ longopt "not" "negate next option"+	, longopt "and" "both previous and next option must match"+	, longopt "or" "either previous or next option must match"+	, shortopt "(" "open group of options"+	, shortopt ")" "close group of options"+	]+	where+		longopt o = Option [] [o] $ NoArg $ addToken o+		shortopt o = Option o [] $ NoArg $ addToken o
PresenceLog.hs view
@@ -26,7 +26,7 @@ import Data.Time.Clock.POSIX import Data.Time import System.Locale-import qualified Data.Map as Map+import qualified Data.Map as M import Control.Monad.State (liftIO) import Control.Applicative @@ -85,7 +85,7 @@ readLog file = parseLog <$> Branch.get file  parseLog :: String -> [LogLine]-parseLog s = filter parsable $ map read $ lines s+parseLog = filter parsable . map read . lines 	where 		-- some lines may be unparseable, avoid them 		parsable l = status l /= Undefined@@ -102,31 +102,27 @@  {- Reads a log and returns only the info that is still in effect. -} currentLog :: FilePath -> Annex [String]-currentLog file = do-	ls <- readLog file-	return $ map info $ filterPresent ls+currentLog file = map info . filterPresent <$> readLog file  {- Returns the info from LogLines that are in effect. -} filterPresent :: [LogLine] -> [LogLine]-filterPresent ls = filter (\l -> InfoPresent == status l) $ compactLog ls--type LogMap = Map.Map String LogLine+filterPresent = filter (\l -> InfoPresent == status l) . compactLog  {- Compacts a set of logs, returning a subset that contains the current  - status. -} compactLog :: [LogLine] -> [LogLine]-compactLog = compactLog' Map.empty-compactLog' :: LogMap -> [LogLine] -> [LogLine]-compactLog' m [] = Map.elems m-compactLog' m (l:ls) = compactLog' (mapLog m l) ls+compactLog = M.elems . foldr mapLog M.empty +type LogMap = M.Map String LogLine+ {- Inserts a log into a map of logs, if the log has better (ie, newer)  - information than the other logs in the map -}-mapLog :: LogMap -> LogLine -> LogMap-mapLog m l = +mapLog :: LogLine -> LogMap -> LogMap+mapLog l m =  	if better-		then Map.insert i l m+		then M.insert i l m 		else m 	where-		better = maybe True (\l' -> date l' <= date l) $ Map.lookup i m+		better = maybe True newer $ M.lookup i m+		newer l' = date l' <= date l 		i = info l
Remote.hs view
@@ -16,7 +16,6 @@ 	hasKeyCheap,  	remoteTypes,-	genList, 	byName, 	prettyPrintUUIDs, 	remotesWithUUID,@@ -29,7 +28,7 @@ 	forceTrust ) where -import Control.Monad (filterM)+import Control.Monad.State (filterM) import Data.List import qualified Data.Map as M import Data.String.Utils@@ -83,7 +82,6 @@ 	where 		process m t =  			enumerate t >>=-			filterM remoteNotIgnored >>= 			mapM (gen m t) 		gen m t r = do 			u <- getUUID r@@ -184,7 +182,7 @@ 	let validtrusteduuids = validuuids `intersect` trusted  	-- remotes that match uuids that have the key-	allremotes <- genList+	allremotes <- filterM (repoNotIgnored . repo) =<< genList 	let validremotes = remotesWithUUID allremotes validuuids  	return (sort validremotes, validtrusteduuids)
Remote/Bup.hs view
@@ -66,7 +66,8 @@ 			removeKey = remove, 			hasKey = checkPresent r bupr', 			hasKeyCheap = bupLocal buprepo,-			config = c+			config = c,+			repo = r 		}  bupSetup :: UUID -> RemoteConfig -> Annex RemoteConfig
Remote/Directory.hs view
@@ -25,10 +25,10 @@ import Locations import Utility.CopyFile import Config-import Content import Utility import Utility.Conditional import Utility.Path+import Utility.FileMode import Remote.Helper.Special import Remote.Helper.Encryptable import Crypto@@ -57,7 +57,8 @@ 			removeKey = remove dir, 			hasKey = checkPresent dir, 			hasKeyCheap = True,-			config = Nothing+			config = Nothing,+			repo = r 		}  directorySetup :: UUID -> RemoteConfig -> Annex RemoteConfig
Remote/Git.hs view
@@ -71,7 +71,8 @@ 		removeKey = dropKey r', 		hasKey = inAnnex r', 		hasKeyCheap = cheap,-		config = Nothing+		config = Nothing,+		repo = r' 	}  {- Tries to read the config for a specified remote, updates state, and@@ -80,7 +81,7 @@ tryGitConfigRead r  	| not $ M.null $ Git.configMap r = return r -- already read 	| Git.repoIsSsh r = store $ onRemote r (pipedconfig, r) "configlist" []-	| Git.repoIsHttp r = store $ safely $ geturlconfig+	| Git.repoIsHttp r = store $ safely geturlconfig 	| Git.repoIsUrl r = return r 	| otherwise = store $ safely $ do 		onLocal r ensureInitialized@@ -100,7 +101,7 @@  		geturlconfig = do 			s <- Url.get (Git.repoLocation r ++ "/config")-			withTempFile "git-annex.tmp" $ \tmpfile -> \h -> do+			withTempFile "git-annex.tmp" $ \tmpfile h -> do 				hPutStr h s 				hClose h 				pOpen ReadFromPipe "git" ["config", "--list", "--file", tmpfile] $
Remote/Hook.hs view
@@ -58,7 +58,8 @@ 			removeKey = remove hooktype, 			hasKey = checkPresent r hooktype, 			hasKeyCheap = False,-			config = Nothing+			config = Nothing,+			repo = r 		}  hookSetup :: UUID -> RemoteConfig -> Annex RemoteConfig
Remote/Rsync.hs view
@@ -66,7 +66,8 @@ 			removeKey = remove o, 			hasKey = checkPresent r o, 			hasKeyCheap = False,-			config = Nothing+			config = Nothing,+			repo = r 		}  genRsyncOpts :: Git.Repo -> Annex RsyncOpts
Remote/S3real.hs view
@@ -67,7 +67,8 @@ 			removeKey = remove this, 			hasKey = checkPresent this, 			hasKeyCheap = False,-			config = c+			config = c,+			repo = r 		}  s3Setup :: UUID -> RemoteConfig -> Annex RemoteConfig@@ -94,7 +95,7 @@  		defaulthost = do 			c' <- encryptionSetup c-			let fullconfig = M.union c' defaults+			let fullconfig = c' `M.union` defaults 			genBucket fullconfig 			use fullconfig @@ -208,7 +209,7 @@  s3Action :: Remote Annex -> a -> ((AWSConnection, String) -> Annex a) -> Annex a s3Action r noconn action = do-	when (config r == Nothing) $+	when (isNothing $ config r) $ 		error $ "Missing configuration for special remote " ++ name r 	let bucket = M.lookup "bucket" $ fromJust $ config r 	conn <- s3Connection $ fromJust $ config r
Remote/Web.hs view
@@ -58,7 +58,8 @@ 		removeKey = dropKey, 		hasKey = checkKey, 		hasKeyCheap = False,-		config = Nothing+		config = Nothing,+		repo = r 	}  {- The urls for a key are stored in remote/web/hash/key.log 
Types/BranchState.hs view
@@ -7,18 +7,13 @@  module Types.BranchState where -import System.IO- data BranchState = BranchState { 	branchUpdated :: Bool, -- has the branch been updated this run? -	-- (from, to) handles used to talk to a git-cat-file process-	catFileHandles :: Maybe (Handle, Handle),- 	-- the content of one file is cached 	cachedFile :: Maybe FilePath, 	cachedContent :: String }  startBranchState :: BranchState-startBranchState = BranchState False Nothing Nothing ""+startBranchState = BranchState False Nothing ""
Types/Remote.hs view
@@ -51,7 +51,9 @@ 	-- operation. 	hasKeyCheap :: Bool, 	-- a Remote can have a persistent configuration store-	config :: Maybe RemoteConfig+	config :: Maybe RemoteConfig,+	-- git configuration for the remote+	repo :: Git.Repo }  instance Show (Remote a) where
Upgrade/V1.hs view
@@ -32,6 +32,7 @@ import Messages import Version import Utility+import Utility.FileMode import Utility.SafeCommand import Utility.Path import qualified Upgrade.V2@@ -173,7 +174,7 @@ 			then Just (read (bits !! 2) :: Integer) 			else Nothing 		wormy = head bits == "WORM"-		mixup = wormy && (isUpper $ head $ bits !! 1)+		mixup = wormy && isUpper (head $ bits !! 1)  showKey1 :: Key -> String showKey1 Key { keyName = n , keyBackendName = b, keySize = s, keyMtime = t } =@@ -248,7 +249,7 @@ 	gitStateDir repo ++ hasher key ++ keyFile key ++ ".log"  stateDir :: FilePath-stateDir = addTrailingPathSeparator $ ".git-annex"+stateDir = addTrailingPathSeparator ".git-annex"  gitStateDir :: Git.Repo -> FilePath gitStateDir repo = addTrailingPathSeparator $ Git.workTree repo </> stateDir
Utility.hs view
@@ -8,7 +8,6 @@ module Utility ( 	hGetContentsStrict, 	readFileStrict,-	unsetFileMode, 	readMaybe, 	viaTmp, 	withTempFile,@@ -24,12 +23,9 @@ import IO (bracket) import System.IO import System.Posix.Process hiding (executeFile)-import System.Posix.Files-import System.Posix.Types import System.Posix.User import System.FilePath import System.Directory-import Foreign (complement) import Utility.Path import Data.Maybe import Control.Monad (liftM)@@ -42,13 +38,6 @@ {- A version of readFile that is not lazy. -} readFileStrict :: FilePath -> IO String readFileStrict f = readFile f >>= \s -> length s `seq` return s--{- Removes a FileMode from a file.- - For example, call with otherWriteMode to chmod o-w -}-unsetFileMode :: FilePath -> FileMode -> IO ()-unsetFileMode f m = do-	s <- getFileStatus f-	setFileMode f $ fileMode s `intersectFileModes` complement m  {- Attempts to read a value from a String. -} readMaybe :: (Read a) => String -> Maybe a
+ Utility/FileMode.hs view
@@ -0,0 +1,36 @@+{- File mode utilities.+ -+ - Copyright 2010 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Utility.FileMode where++import System.Posix.Files+import System.Posix.Types+import Foreign (complement)++{- Removes a FileMode from a file.+ - For example, call with otherWriteMode to chmod o-w -}+unsetFileMode :: FilePath -> FileMode -> IO ()+unsetFileMode f m = do+	s <- getFileStatus f+	setFileMode f $ fileMode s `intersectFileModes` complement m++{- Removes the write bits from a file. -}+preventWrite :: FilePath -> IO ()+preventWrite f = unsetFileMode f writebits+	where+		writebits = foldl unionFileModes ownerWriteMode+					[groupWriteMode, otherWriteMode]++{- Turns a file's write bit back on. -}+allowWrite :: FilePath -> IO ()+allowWrite f = do+	s <- getFileStatus f+	setFileMode f $ fileMode s `unionFileModes` ownerWriteMode++{- Checks if a file mode indicates it's a symlink. -}+isSymLink :: FileMode -> Bool+isSymLink mode = symbolicLinkMode `intersectFileModes` mode == symbolicLinkMode
Utility/JSONStream.hs view
@@ -19,7 +19,7 @@    later. -} start :: JSON a => [(String, a)] -> String start l-	| last s == endchar = take (length s - 1)  s+	| last s == endchar = init s 	| otherwise = bad s 	where 		s = encodeStrict $ toJSObject l
+ Utility/Matcher.hs view
@@ -0,0 +1,100 @@+{- A generic matcher.+ -+ - Can be used to check if a user-supplied condition,+ - like "foo and ( bar or not baz )" matches. The condition must already+ - be tokenized, and can contain arbitrary operations.+ -+ - If operations are not separated by and/or, they are defaulted to being+ - anded together, so "foo bar baz" all must match.+ -+ - Is forgiving about misplaced closing parens, so "foo and (bar or baz"+ - will be handled, as will "foo and ( bar or baz ) )"+ -+ - Copyright 2011 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Utility.Matcher (+	Token(..),+	Matcher,+	token,+	generate,+	match,+	matchM,+	matchesAny+) where++import Control.Monad++{- A Token can be an Operation of an arbitrary type, or one of a few+ - predefined peices of syntax. -}+data Token op = Operation op | And | Or | Not | Open | Close+	deriving (Show, Eq)++data Matcher op = MAny+	| MAnd (Matcher op) (Matcher op)+	| MOr (Matcher op) (Matcher op)+	| MNot (Matcher op)+	| MOp op+	deriving (Show, Eq)++{- Converts a word of syntax into a token. Doesn't handle operations. -}+token :: String -> Token op+token "and" = And+token "or" = Or+token "not" = Not+token "(" = Open+token ")" = Close+token t = error $ "unknown token " ++ t++{- Converts a list of Tokens into a Matcher. -}+generate :: [Token op] -> Matcher op+generate = go MAny+	where+		go m [] = m+		go m ts = uncurry go $ consume m ts++{- Consumes one or more Tokens, constructs a new Matcher,+ - and returns unconsumed Tokens. -}+consume :: Matcher op -> [Token op] -> (Matcher op, [Token op])+consume m [] = (m, [])+consume m (t:ts) = go t+	where+		go And = cont $ m `MAnd` next+		go Or = cont $ m `MOr` next+		go Not = cont $ m `MAnd` MNot next+		go Open = let (n, r) = consume next rest in (m `MAnd` n, r)+		go Close = (m, ts)+		go (Operation o) = (m `MAnd` MOp o, ts)++		(next, rest) = consume MAny ts+		cont v = (v, rest)++{- Checks if a Matcher matches, using a supplied function to check+ - the value of Operations. -}+match :: (op -> v -> Bool) -> Matcher op -> v -> Bool+match a m v = go m+	where+		go MAny = True+		go (MAnd m1 m2) = go m1 && go m2+		go (MOr m1 m2) = go m1 || go m2+		go (MNot m1) = not (go m1)+		go (MOp o) = a o v++{- Runs a monadic Matcher, where Operations are actions in the monad. -}+matchM :: Monad m => Matcher (v -> m Bool) -> v -> m Bool+matchM m v = go m+	where+		go MAny = return True+		go (MAnd m1 m2) = liftM2 (&&) (go m1) (go m2)+		go (MOr m1 m2) =  liftM2 (||) (go m1) (go m2)+		go (MNot m1) = liftM not (go m1)+		go (MOp o) = o v++{- Checks is a matcher contains no limits, and so (presumably) matches+ - anything. Note that this only checks the trivial case; it is possible+ - to construct matchers that match anything but are more complicated. -}+matchesAny :: Matcher a -> Bool+matchesAny MAny = True+matchesAny _ = False
Utility/Path.hs view
@@ -19,7 +19,7 @@ parentDir :: FilePath -> FilePath parentDir dir = 	if not $ null dirs-	then slash ++ join s (take (length dirs - 1) dirs)+	then slash ++ join s (init dirs) 	else "" 		where 			dirs = filter (not . null) $ split s dir@@ -90,3 +90,30 @@ 	| otherwise = not (null r) 	where 		r = relPathDirToFile from to ++{- Given an original list of files, and an expanded list derived from it,+ - ensures that the original list's ordering is preserved. + -+ - The input list may contain a directory, like "dir" or "dir/". Any+ - items in the expanded list that are contained in that directory will+ - appear at the same position as it did in the input list.+ -}+preserveOrder :: [FilePath] -> [FilePath] -> [FilePath]+-- optimisation, only one item in original list, so no reordering needed+preserveOrder [_] new = new+preserveOrder orig new = collect orig new+	where+		collect [] n = n+		collect [_] n = n -- optimisation+		collect (l:ls) n = found ++ collect ls rest+			where (found, rest)=partition (l `dirContains`) n++{- Runs an action that takes a list of FilePaths, and ensures that + - its return list preserves order.+ -+ - This assumes that it's cheaper to call preserveOrder on the result,+ - than it would be to run the action separately with each param. In the case+ - of git file list commands, that assumption tends to hold.+ -}+runPreserveOrder :: ([FilePath] -> IO [FilePath]) -> [FilePath] -> IO [FilePath]+runPreserveOrder a files = preserveOrder files <$> a files
Utility/Touch.hsc view
@@ -24,7 +24,7 @@ touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()  touch :: FilePath -> TimeSpec -> Bool -> IO ()-touch file mtime follow = touchBoth file mtime mtime follow+touch file mtime = touchBoth file mtime mtime  #include <sys/types.h> #include <sys/stat.h>
configure.hs view
@@ -51,7 +51,7 @@ 	let verline = head $ lines changelog 	return $ middle (words verline !! 1) 	where-		middle s = drop 1 $ take (length s - 1) s+		middle = drop 1 . init  {- Set up cabal file with version. -} cabalSetup :: IO ()
debian/changelog view
@@ -1,3 +1,25 @@+git-annex (3.20110928) unstable; urgency=low++  * --in can be used to make git-annex only operate on files+    believed to be present in a given repository.+  * Arbitrarily complex expressions can be built to limit the files git-annex+    operates on, by combining the options --not --and --or -( and -)+    Example: git annex get --exclude '*.mp3' --and --not -( --in usbdrive --or --in archive -)+  * --copies=N can be used to make git-annex only operate on files with+    the specified number of copies. (And --not --copies=N for the inverse.)+  * find: Rather than only showing files whose contents are present,+    when used with --exclude --copies or --in, displays all files that+    match the specified conditions.+  * Note that this is a behavior change for git-annex find! Old behavior+    can be gotten by using: git-annex find --in .+  * status: Massively sped up; remove --fast mode.+  * unused: File contents used by branches and tags are no longer+    considered unused, even when not used by the current branch. This is+    the final piece of the puzzle needed for git-annex to to play nicely+    with branches.++ -- Joey Hess <joeyh@debian.org>  Wed, 28 Sep 2011 18:14:02 -0400+ git-annex (3.20110915) unstable; urgency=low    * whereis: Show untrusted locations separately and do not include in
− debian/files
@@ -1,1 +0,0 @@-git-annex_3.20110906~bpo60+1_i386.deb utils optional
− debian/git-annex.debhelper.log
@@ -1,45 +0,0 @@-dh_auto_configure-dh_auto_build-dh_auto_test-dh_prep-dh_installdirs-dh_auto_install-dh_install-dh_installdocs-dh_installchangelogs-dh_installexamples-dh_installman-dh_installcatalogs-dh_installcron-dh_installdebconf-dh_installemacsen-dh_installifupdown-dh_installinfo-dh_pysupport-dh_installinit-dh_installmenu-dh_installmime-dh_installmodules-dh_installlogcheck-dh_installlogrotate-dh_installpam-dh_installppp-dh_installudev-dh_installwm-dh_installxfonts-dh_bugfiles-dh_lintian-dh_gconf-dh_icons-dh_perl-dh_usrlocal-dh_link-dh_compress-dh_fixperms-dh_strip-dh_makeshlibs-dh_shlibdeps-dh_installdeb-dh_gencontrol-dh_md5sums-dh_builddeb
− debian/git-annex.substvars
@@ -1,2 +0,0 @@-shlibs:Depends=libc6 (>= 2.6), libffi5 (>= 3.0.4), libgmp3c2, libpcre3 (>= 7.7)-misc:Depends=
− debian/git-annex/DEBIAN/control
@@ -1,23 +0,0 @@-Package: git-annex-Version: 3.20110906~bpo60+1-Architecture: i386-Maintainer: Joey Hess <joeyh@debian.org>-Installed-Size: 9420-Depends: libc6 (>= 2.6), libffi5 (>= 3.0.4), libgmp3c2, libpcre3 (>= 7.7), git | git-core, uuid, rsync, wget | curl, openssh-client-Suggests: graphviz, bup, gnupg-Section: utils-Priority: optional-Homepage: http://git-annex.branchable.com/-Description: manage files with git, without checking their contents into git- git-annex allows managing files with git, without checking the file- contents into git. While that may seem paradoxical, it is useful when- dealing with files larger than git can currently easily handle, whether due- to limitations in memory, checksumming time, or disk space.- .- Even without file content tracking, being able to manage files with git,- move files around and delete files with versioned directory trees, and use- branches and distributed clones, are all very handy reasons to use git. And- annexed files can co-exist in the same git repository with regularly- versioned files, which is convenient for maintaining documents, Makefiles,- etc that are associated with annexed files but that benefit from full- revision control.
− debian/git-annex/DEBIAN/md5sums
@@ -1,250 +0,0 @@-daadb748ce281f634b145b0885eff882  usr/bin/git-annex-0e9ca958f220fb8feae19d8f66f97bcb  usr/bin/git-annex-shell-2585748141e7e01393613c1efbc77f99  usr/bin/git-union-merge-2ef419c4a13022ede5561da5b1914f62  usr/share/doc-base/git-annex-c44ec6244b697eef6bed58696fdfcdbc  usr/share/doc/git-annex/NEWS.Debian.gz-57d9c5502902d68c250f6701933070ca  usr/share/doc/git-annex/changelog.gz-33b330c835b6ec126cb105f6b8ad1ff5  usr/share/doc/git-annex/copyright-4e0ca2bc63e61797836c39b9a6e33ddc  usr/share/doc/git-annex/html/GPL.gz-5af0c700861ffdaff77b800f43fbe566  usr/share/doc/git-annex/html/backends.html-2785afc335fcc01ee2b4c8f34138409a  usr/share/doc/git-annex/html/bare_repositories.html-ad8a14ca9abc54e307f1ed6591b7d737  usr/share/doc/git-annex/html/bugs.html-e0d8892cfd0915484ba507f8b6e993cd  usr/share/doc/git-annex/html/bugs/--git-dir_and_--work-tree_options.html-15cebe622136ddb093be59ec9b877870  usr/share/doc/git-annex/html/bugs/Build_error_on_Mac_OSX_10.6.html-6380452e38613269e0e275d9248943da  usr/share/doc/git-annex/html/bugs/Cabal_dependency_monadIO_missing.html-10a96d241c843df6ce0885b7f4c91321  usr/share/doc/git-annex/html/bugs/Displayed_copy_speed_is_wrong.html-595d7f963fa0472567a607b6b51b557c  usr/share/doc/git-annex/html/bugs/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.html-72c1a08abd1c724feba9ab2cc8965e6b  usr/share/doc/git-annex/html/bugs/Makefile_is_missing_dependancies.html-7692995e38957701197906165ea2bffc  usr/share/doc/git-annex/html/bugs/Name_scheme_does_not_follow_git__39__s_rules.html-428b5da9efa8adc64b2c46ad7171d8ab  usr/share/doc/git-annex/html/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.html-b73726d82d09724df3e42508d2de8e83  usr/share/doc/git-annex/html/bugs/No_version_information_from_cli.html-c0d2d6022b84fcd2b4217b7f1bf2c6c3  usr/share/doc/git-annex/html/bugs/Prevent_accidental_merges.html-7feaedd4f679dfe1855df3d821070606  usr/share/doc/git-annex/html/bugs/Problems_running_make_on_osx.html-8326d2677fc1041b5957a98bcaff0be6  usr/share/doc/git-annex/html/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html-7145702c12d18c6569cbbe25d520cf62  usr/share/doc/git-annex/html/bugs/S3_memory_leaks.html-3aa48be1e060d7523c69ddf74c8eb3c0  usr/share/doc/git-annex/html/bugs/Unfortunate_interaction_with_Calibre.html-61c5c6dc68b7a2403fb520970aca1570  usr/share/doc/git-annex/html/bugs/WORM:_Handle_long_filenames_correctly.html-f622fb0a8176de52a652686b86cf1749  usr/share/doc/git-annex/html/bugs/__39__annex_add__39___fails_to___39__git_add__39___for_parent_relative_path.html-6bc6d0d6866e336f79f8fad6c37833bd  usr/share/doc/git-annex/html/bugs/add_range_argument_to___34__git_annex_dropunused__34___.html-b59968efb6839a81daad4b3a8a73bebe  usr/share/doc/git-annex/html/bugs/add_script-friendly_output_options.html-fc12ea408eee3252d97bf6b0569f2a6b  usr/share/doc/git-annex/html/bugs/annex_add_in_annex.html-3585e0f591a4e93f071e283e536ff015  usr/share/doc/git-annex/html/bugs/annex_unannex__47__uninit_should_handle_copies.html-bf451b3bb2f2717095c6529d0f1d85d8  usr/share/doc/git-annex/html/bugs/backend_version_upgrade_leaves_repo_unusable.html-1406b31a86aa173f2f09e75ab17cb9c8  usr/share/doc/git-annex/html/bugs/bare_git_repos.html-490bce9a8ea351454f95f5b2af3539c5  usr/share/doc/git-annex/html/bugs/build_issue_with_latest_release_0.20110522-1-gde817ba.html-1a6d3f9e6a81879178dd212e68f6c7cc  usr/share/doc/git-annex/html/bugs/building_on_lenny.html-7d9dd20162399d0de2151f750ac2d197  usr/share/doc/git-annex/html/bugs/check_for_curl_in_configure.hs.html-98036a21ce6a35b8d0d4200c692ffea9  usr/share/doc/git-annex/html/bugs/configure_script_should_detect_uuidgen_instead_of_just_uuid.html-d39372f9ba04f5e6ca25bbecc0a61c33  usr/share/doc/git-annex/html/bugs/conflicting_haskell_packages.html-f3d61ce7a538c11757a312664b937608  usr/share/doc/git-annex/html/bugs/copy_fast_confusing_with_broken_locationlog.html-f1fbc4dc335ba9b8dfb5d58b48a57d4c  usr/share/doc/git-annex/html/bugs/done.html-b86613a55c3e6be2217fd38a2cd399da  usr/share/doc/git-annex/html/bugs/dotdot_problem.html-8cb9b690530df8deb88b25e675f337a9  usr/share/doc/git-annex/html/bugs/dropping_files_with_a_URL_backend_fails.html-b095bb6ecb0a49c10dbe7ac3908b1106  usr/share/doc/git-annex/html/bugs/encrypted_S3_stalls.html-6b649adfaa7d8fff320c19326ea29b25  usr/share/doc/git-annex/html/bugs/error_propigation.html-70036e3efa624bb75dda755629830331  usr/share/doc/git-annex/html/bugs/error_with_file_names_starting_with_dash.html-2927d193dbd0ad2d926725794de072a7  usr/share/doc/git-annex/html/bugs/fat_support.html-a66d271ede0df2e38e9133a60534581f  usr/share/doc/git-annex/html/bugs/free_space_checking.html-8e9eb7ecf52bfadb107c1721afd3f67d  usr/share/doc/git-annex/html/bugs/fsck_output.html-92d2f99e9f4eafcbd3bb6572b4a57e2e  usr/share/doc/git-annex/html/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html-47e5710da4ef31d7c5e978fa3695d8c2  usr/share/doc/git-annex/html/bugs/git-annex_directory_hashing_problems_on_osx.html-3db928388c3adb8f5bc7ee235bb69cb3  usr/share/doc/git-annex/html/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.html-999a2085bc40b0f77fdbf08ff0d562ef  usr/share/doc/git-annex/html/bugs/git-annex_incorrectly_parses_bare_IPv6_addresses.html-05dd563e4efc5f3416da24585e22ce85  usr/share/doc/git-annex/html/bugs/git_annex_add_eats_files_when_filename_is_too_long.html-a20e0e90da4b102e6286dd387751bbd5  usr/share/doc/git-annex/html/bugs/git_annex_copy_--fast_does_not_copy_files.html-1fa8a09ac45ebfa0115dcf402f3b8fa8  usr/share/doc/git-annex/html/bugs/git_annex_copy_-f_REMOTE_._doesn__39__t_work_as_expected.html-1b0782465f86928ab1a708621ddb92d6  usr/share/doc/git-annex/html/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html-0026a4b11d1bcabafc67104f2f4e300b  usr/share/doc/git-annex/html/bugs/git_annex_get_choke_when_remote_is_an_ssh_url_with_a_port.html-7070c4e0f65b21507c2da061463bb32e  usr/share/doc/git-annex/html/bugs/git_annex_gets_confused_about_remotes_with_dots_in_their_names.html-3f58910ad6233277ee1b0e2b59ddfcd6  usr/share/doc/git-annex/html/bugs/git_annex_migrate_leaves_old_backend_versions_around.html-8ef52eacb0b720bbe881c376fb0e93e4  usr/share/doc/git-annex/html/bugs/git_annex_should_use___39__git_add_-f__39___internally.html-1edd8e7edc5b47826e383ee877763d82  usr/share/doc/git-annex/html/bugs/git_annex_unlock_is_not_atomic.html-69e332156d120dc6fbed109086ab83ac  usr/share/doc/git-annex/html/bugs/git_annex_unused_failes_on_empty_repository.html-b8907cf2fca47e267e3ab3de78daa63f  usr/share/doc/git-annex/html/bugs/git_annex_unused_seems_to_check_for_current_path.html-d2cba10f1e4f17fc0f362df3f28f6341  usr/share/doc/git-annex/html/bugs/git_annex_upgrade_loses_track_of_files_with___34____38____34___character___40__and_probably_others__41__.html-1d4e5d5553e4b461bebc7c9062f55ad0  usr/share/doc/git-annex/html/bugs/git_command_line_constructed_by_unannex_command_has_tons_of_redundant_-a_paramters.html-64d61b72b7df9052b2409eaa82bde036  usr/share/doc/git-annex/html/bugs/git_rename_detection_on_file_move.html-d8dedc54b7979e46b8ebc7699ba2b279  usr/share/doc/git-annex/html/bugs/making_annex-merge_try_a_fast-forward.html-a4c8dd563f467455717aa98239cd2ac1  usr/share/doc/git-annex/html/bugs/minor_bug:_errors_are_not_verbose_enough.html-34ef269d095ea0298665509c42fd774d  usr/share/doc/git-annex/html/bugs/ordering.html-c5365fae6a5d97dcdd57394587b35a8f  usr/share/doc/git-annex/html/bugs/problem_commit_normal_links.html-e087bbd19b1aa511192244ebca1410f8  usr/share/doc/git-annex/html/bugs/problem_with_upgrade_v2_-__62___v3.html-66d6b1135329073da2c786f7c7eb5424  usr/share/doc/git-annex/html/bugs/problems_with_utf8_names.html-23a27516fbb573b3dcb715c46b327da2  usr/share/doc/git-annex/html/bugs/rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.html-47ff7f7261ed772387788e564a0f136c  usr/share/doc/git-annex/html/bugs/scp_interrupt_to_background.html-d17cfeb716077dd961a9744aa698c171  usr/share/doc/git-annex/html/bugs/softlink_mtime.html-c3c898bba219391e1782e869f5a2796f  usr/share/doc/git-annex/html/bugs/support_bare_git_repo__44___with_the_annex_directory_exposed_to_http.html-f814bc0c71467313e0ce68854a52b4d8  usr/share/doc/git-annex/html/bugs/test_suite_shouldn__39__t_fail_silently.html-1f1a746ab4b9b0a7290d073f895f8826  usr/share/doc/git-annex/html/bugs/tmp_file_handling.html-573c211d0e07fa59f7439211a02a6317  usr/share/doc/git-annex/html/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html-068e0822f23e8eda43c693713c204800  usr/share/doc/git-annex/html/bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.html-3e9882825101a8f07cb7a6e2734ab765  usr/share/doc/git-annex/html/bugs/unannex_command_doesn__39__t_all_files.html-582d419473c5e1e91636c3acb4006b1d  usr/share/doc/git-annex/html/bugs/unannex_vs_unlock_hook_confusion.html-65f31531bf263f4936f78a40ebdc6011  usr/share/doc/git-annex/html/bugs/unhappy_without_UTF8_locale.html-1aefbc98359336e3d21f2834c7f096b1  usr/share/doc/git-annex/html/bugs/weird_local_clone_confuses.html-4476fd419653b039f5f31c81ba910c1c  usr/share/doc/git-annex/html/bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.html-ec52223f314f0016f27329dae1ced335  usr/share/doc/git-annex/html/cheatsheet.html-d396cef32617eb4eeb2488accb988f1b  usr/share/doc/git-annex/html/comments.html-15ed58db3fb80b0cb39e7e0a22e40bb7  usr/share/doc/git-annex/html/contact.html-586004d70ae2b81fe9b43bef786e0363  usr/share/doc/git-annex/html/copies.html-6e570793d845cfda8ec41a4fefaf1dc3  usr/share/doc/git-annex/html/design.html-51d4faf6190f001a97d065b9fb261a65  usr/share/doc/git-annex/html/design/encryption.html-8b35b6ed76ff80835bde2c6674550a09  usr/share/doc/git-annex/html/distributed_version_control.html-228210f49c5f854dc00036a0e730e270  usr/share/doc/git-annex/html/download.html-2cc66b11eba1d797369c256a87cdd954  usr/share/doc/git-annex/html/encryption.html-b14869cf7b8d520ec49d899186cd82dc  usr/share/doc/git-annex/html/feeds.html-fc154df4f4fdeb2255005131220d08d6  usr/share/doc/git-annex/html/forum.html-e47a4b0d8a9faa0b925bf3e34d60d997  usr/share/doc/git-annex/html/forum/Behaviour_of_fsck.html-246d55acc3e70e5c984cb40780324644  usr/share/doc/git-annex/html/forum/Can_I_store_normal_files_in_the_git-annex_git_repository__63__.html-de6d7ef1447b3bb0e918f00e679b45af  usr/share/doc/git-annex/html/forum/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.html-21a9045407709a0352c8eefadfe3998a  usr/share/doc/git-annex/html/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.html-303f945ceff96bf179ffcf6c2f8af9c2  usr/share/doc/git-annex/html/forum/Need_new_build_instructions_for_Debian_stable.html-962ab9483a6d6ae62b40feb5b3d19d39  usr/share/doc/git-annex/html/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.html-27f1fa7ca7836095c3491284cf5b557e  usr/share/doc/git-annex/html/forum/OSX__39__s_haskell-platform_statically_links_things.html-f5f469130cda9ee726be1875fcc069ef  usr/share/doc/git-annex/html/forum/Problems_with_large_numbers_of_files.html-439dcb29f8477fa01fb17def050c364e  usr/share/doc/git-annex/html/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.html-98e97cab7e1bcef29f6105f2a507f27d  usr/share/doc/git-annex/html/forum/Wishlist:_Is_it_possible_to___34__unlock__34___files_without_copying_the_file_data__63__.html-7aeef91a466f5addf806190499b4d316  usr/share/doc/git-annex/html/forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.html-c192b96d038c05f25d594ba7850a445b  usr/share/doc/git-annex/html/forum/__34__git_annex_lock__34___very_slow_for_big_repo.html-81fe5d4b8a48ce5f9b455421d0c62e87  usr/share/doc/git-annex/html/forum/advantages_of_SHA__42___over_WORM.html-b8ed49768f0dbc90749ef7d942b6d67f  usr/share/doc/git-annex/html/forum/bainstorming:_git_annex_push___38___pull.html-8d5dab907405bc8b2171ccf9c5d5e598  usr/share/doc/git-annex/html/forum/batch_check_on_remote_when_using_copy.html-fa1f0358079ef3aceeb06205e7c102e6  usr/share/doc/git-annex/html/forum/can_git-annex_replace_ddm__63__.html-85fe8ff9152a28201f84f33224be253e  usr/share/doc/git-annex/html/forum/example_of_massively_disconnected_operation.html-2aaf2407e21ae1b1c9bbd72c877da0ee  usr/share/doc/git-annex/html/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.html-1ea645cc986c317054aafc11a738b9a9  usr/share/doc/git-annex/html/forum/git-annex_communication_channels.html-552f2affc610ee6545f158c81fd8f5d5  usr/share/doc/git-annex/html/forum/git-annex_on_OSX.html-f1e0ce1955340fa775c227ab2d6d2507  usr/share/doc/git-annex/html/forum/hashing_objects_directories.html-ef09f6d79393b9b8170b44a07ea6187f  usr/share/doc/git-annex/html/forum/incompatible_versions__63__.html-3f7e5e58a3e66556b00dce7fd7471d41  usr/share/doc/git-annex/html/forum/migrate_existing_git_repository_to_git-annex.html-959b3f7c6fd85dd643532416df02d673  usr/share/doc/git-annex/html/forum/migration_to_git-annex_and_rsync.html-bd9b005299a4ec3a5b4335508a3786fa  usr/share/doc/git-annex/html/forum/new_microfeatures.html-17e48b6d46ce514b5c4aced5607a93f7  usr/share/doc/git-annex/html/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html-849d904a73575c79b645fae67babc52a  usr/share/doc/git-annex/html/forum/relying_on_git_for_numcopies.html-5aed996ab13d29160a427fe5af6cee24  usr/share/doc/git-annex/html/forum/rsync_over_ssh__63__.html-ded1f7ea5f72392d6979ea870adbe7cd  usr/share/doc/git-annex/html/forum/seems_to_build_fine_on_haskell_platform_2011.html-bc36eed7023580edaa35189d757de443  usr/share/doc/git-annex/html/forum/sparse_git_checkouts_with_annex.html-5f4919eb9614892ac54373b14afee32c  usr/share/doc/git-annex/html/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html-54495b20a3611892e1cc42a09f490caa  usr/share/doc/git-annex/html/forum/unannex_alternatives.html-2371b46f1d5ae71c9baea20a3d3c9a8d  usr/share/doc/git-annex/html/forum/version_3_upgrade.html-89626f8fbd68095d7b0b520affaeadbc  usr/share/doc/git-annex/html/forum/wishlist:_command_options_changes.html-62747a943b37067ebf2eafd80258c0d6  usr/share/doc/git-annex/html/forum/wishlist:_define_remotes_that_must_have_all_files.html-848440f09728bfe1d6256f5555237e3e  usr/share/doc/git-annex/html/forum/wishlist:_do_round_robin_downloading_of_data.html-db95dfb55b1ac5781a09d99c53467e1a  usr/share/doc/git-annex/html/forum/wishlist:_git-annex_replicate.html-aea7f39cfc03cdf24287277915937f08  usr/share/doc/git-annex/html/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.html-a068c39634a694ad59ab726ed3e1ec23  usr/share/doc/git-annex/html/forum/wishlist:_git_annex_status.html-d3e0f1f820832c4ae7bbdc7d02ed25c0  usr/share/doc/git-annex/html/forum/wishlist:_git_backend_for_git-annex.html-e02fe0ce6daec12c4eb96994f23a7328  usr/share/doc/git-annex/html/forum/wishlist:_push_to_cia.vc_from_the_website__39__s_repo__44___not_your_personal_one.html-e6427355a984cb4b9fa7d5ec617f279b  usr/share/doc/git-annex/html/forum/wishlist:_special_remote_for_sftp_or_rsync.html-cf81d1f1e77edff54d37ef691098cdc1  usr/share/doc/git-annex/html/forum/wishlist:_support_for_more_ssh_urls_.html-7991458f41513677b9fd87104994af47  usr/share/doc/git-annex/html/forum/wishlist:_traffic_accounting_for_git-annex.html-7ef11a34df8cc3b744a29e5f3df2e1d6  usr/share/doc/git-annex/html/forum/wishlist:alias_system.html-4a1e900a719e4e3b3a1d2fdce72ad415  usr/share/doc/git-annex/html/forum/working_without_git-annex_commits.html-1819ffbc30f234b2ecc74e43e8eb187f  usr/share/doc/git-annex/html/future_proofing.html-6aedac0216cfb3fb1adc5ce3473b2495  usr/share/doc/git-annex/html/git-annex-shell.html-fc56a7552988542343010a0a0928944d  usr/share/doc/git-annex/html/git-annex.html-0ca9a83bf8bf8215417ccdbf89ee5062  usr/share/doc/git-annex/html/git-union-merge.html-7edcc34e82cc270a3a0b84244c003ec0  usr/share/doc/git-annex/html/ikiwiki/ikiwiki.js-531101fb991d25633961400bd5b018c5  usr/share/doc/git-annex/html/ikiwiki/relativedate.js-4329a38aa265e63db16f6c8eb629b15c  usr/share/doc/git-annex/html/ikiwiki/toggle.js-c7b67eebc5efce3e383588ec22a2fd8a  usr/share/doc/git-annex/html/index.html-a57ec88a57d4c51324a100f1aa167adb  usr/share/doc/git-annex/html/install.html-c1bca5cdd3f030bf299ca293005d3f2d  usr/share/doc/git-annex/html/install/Debian.html-e97df4b4e7e5dcaf23ff2fd64e26c043  usr/share/doc/git-annex/html/install/Fedora.html-85304b6498947105af2145ef632585de  usr/share/doc/git-annex/html/install/FreeBSD.html-22c4e95bfc7c046b76029012fc525f2d  usr/share/doc/git-annex/html/install/OSX.html-9a5e2ad8e26c5490589ae65d2ec7aedb  usr/share/doc/git-annex/html/install/Ubuntu.html-9814aac65a7a657c62054c6382fdc9f6  usr/share/doc/git-annex/html/internals.html-c82c56f58f78e63a0b87cd7fc5412ea5  usr/share/doc/git-annex/html/location_tracking.html-da7ef72c147208844c47996d3701b552  usr/share/doc/git-annex/html/logo.png-bd3617363704ae91f84398a9d113b067  usr/share/doc/git-annex/html/logo_small.png-fc1ac69d6778a9b6bd9510d51ef45c82  usr/share/doc/git-annex/html/news.html-1ccd89142d48ad4b8f7881c1168a058a  usr/share/doc/git-annex/html/not.html-99c8387075783f9d4260a525ff0c3950  usr/share/doc/git-annex/html/repomap.png-346cac67819ae32f87d74a11414dd5c2  usr/share/doc/git-annex/html/special_remotes.html-aaaa0b1a6004ea058d2dc45026d22d47  usr/share/doc/git-annex/html/special_remotes/S3.html-2eaed297b91346ac854265ac80f1cb89  usr/share/doc/git-annex/html/special_remotes/bup.html-58a364876133dc2d4673936843272230  usr/share/doc/git-annex/html/special_remotes/directory.html-030963f76ecec3de27d9263066763f41  usr/share/doc/git-annex/html/special_remotes/hook.html-3f38ef6c4c243188494fe186d082e23c  usr/share/doc/git-annex/html/special_remotes/rsync.html-533b3e1d281e5512f1c13a16fe2ebbe1  usr/share/doc/git-annex/html/special_remotes/web.html-a2fef05995263687f939518e1b8a5d9f  usr/share/doc/git-annex/html/summary.html-40ff84996d93191b8b2477ba4684b68f  usr/share/doc/git-annex/html/templates/bare.tmpl-977b742d9da88d36e4dd927c4c069658  usr/share/doc/git-annex/html/templates/walkthrough.tmpl-90e5eff02765183eb4728f5ff68c6e38  usr/share/doc/git-annex/html/todo.html-f3119291360fe2a53f1cb69f62d5c134  usr/share/doc/git-annex/html/todo/S3.html-9ff18a1b35578fa7c4ff9ca95eda6dac  usr/share/doc/git-annex/html/todo/add_--exclude_option_to_git_annex_find.html-457dc93012ff6cc69d03f18caa864379  usr/share/doc/git-annex/html/todo/add_a_git_backend.html-f1c28ab545af578e4906ecb9db428fff  usr/share/doc/git-annex/html/todo/auto_remotes.html-2d49cbfbc8c691b605c5e2dfd397ad8f  usr/share/doc/git-annex/html/todo/auto_remotes/discussion.html-ff17e54cca39116b5cb1c80135cf7603  usr/share/doc/git-annex/html/todo/backendSHA1.html-a54f51c4be1478141efb41d5e3ac3781  usr/share/doc/git-annex/html/todo/branching.html-b2c29dea83ab2d7417c7dcb443c5169d  usr/share/doc/git-annex/html/todo/cache_key_info.html-5bf57a8102ae6686fa0a8cbb99f8d3b9  usr/share/doc/git-annex/html/todo/checkout.html-5afe8260c24bc036a943a4315ca59c2c  usr/share/doc/git-annex/html/todo/done.html-304fb100fed410d3144f01eda76dd683  usr/share/doc/git-annex/html/todo/file_copy_progress_bar.html-71ed97ec6ad532b68ffb00af1bff895c  usr/share/doc/git-annex/html/todo/fsck.html-055ce84ebd2d840d7fffaeae5c5b588a  usr/share/doc/git-annex/html/todo/git-annex-shell.html-974d930f73ff6ecd6a9a6e6afb1dbeb6  usr/share/doc/git-annex/html/todo/git-annex_unused_eats_memory.html-74d91def34cb02418bcb669a824f11c0  usr/share/doc/git-annex/html/todo/git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.html-bf1cbfefc61c7874d50c1b0225ca2544  usr/share/doc/git-annex/html/todo/gitrm.html-6cb1b45834ed2dc2ce687a6df68e99b3  usr/share/doc/git-annex/html/todo/hidden_files.html-110951dda6d6100c5b696f1e86ddf91a  usr/share/doc/git-annex/html/todo/immutable_annexed_files.html-51f17f79871c055f1c46f8c73a8fa5dc  usr/share/doc/git-annex/html/todo/network_remotes.html-624648ac4dd99832b30612ec37a34814  usr/share/doc/git-annex/html/todo/object_dir_reorg_v2.html-ef7967b41f4bcf9d448d06ff3c7d0e4b  usr/share/doc/git-annex/html/todo/parallel_possibilities.html-9758aa5a4d98705e1b8df936c2791662  usr/share/doc/git-annex/html/todo/pushpull.html-e2be38fe66f71a35358c3073dc9da121  usr/share/doc/git-annex/html/todo/rsync.html-a5973fabc05aa02aaba6481512b35254  usr/share/doc/git-annex/html/todo/smudge.html-bd670695e429f791198a29a537e0b330  usr/share/doc/git-annex/html/todo/speed_up_fsck.html-7364d264ec152cd04d556afe02ba9420  usr/share/doc/git-annex/html/todo/support-non-utf8-locales.html-cb03825c858acc697950dcb07bf3018a  usr/share/doc/git-annex/html/todo/support_S3_multipart_uploads.html-66de414eff78664238c705d6ba44cb69  usr/share/doc/git-annex/html/todo/symlink_farming_commit_hook.html-6fb23e70bd0fc2e242225bccf1c0da67  usr/share/doc/git-annex/html/todo/tahoe_lfs_for_reals.html-ad23b3f19fe585e4cb4dfc71491a1400  usr/share/doc/git-annex/html/todo/union_mounting.html-335ecf9d6eb97dec9866ceb7501cf322  usr/share/doc/git-annex/html/todo/use_cp_reflink.html-e6b1244829155fb2222d4b3a5d4a7955  usr/share/doc/git-annex/html/todo/using_url_backend.html-fe66b36dc490deed5add472d10c2eb30  usr/share/doc/git-annex/html/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.html-f2bf3aabc3402131f2e61ddf6b412ff3  usr/share/doc/git-annex/html/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.html-41027c4040125dee45ecb5aafe0391fd  usr/share/doc/git-annex/html/todo/wishlist:___34__git_annex_add__34___multiple_processes.html-6f049365e6a5883fcd48d919b1c88ff4  usr/share/doc/git-annex/html/todo/wishlist:_support_for_more_ssh_urls_.html-36a34567a143f27b90e1370ae2ab4864  usr/share/doc/git-annex/html/todo/wishlist:_swift_backend.html-5b30ea0fa8e3f563e88b98050d50bd2a  usr/share/doc/git-annex/html/transferring_data.html-888c390b2285ef3a81156194d55f9949  usr/share/doc/git-annex/html/trust.html-2f8956f45e5d409f118de5520cd8530f  usr/share/doc/git-annex/html/upgrades.html-69cc58ec77f4a1e83c60069bef706117  usr/share/doc/git-annex/html/upgrades/SHA_size.html-bb99ea2739dcff105d2c85e2403e4467  usr/share/doc/git-annex/html/use_case/Alice.html-592731f6015260b975f3c39438807cc1  usr/share/doc/git-annex/html/use_case/Bob.html-4ca5c11f1e515e1457049750aa46918d  usr/share/doc/git-annex/html/users.html-cf2644c74702b32d50d1222a6c5e6a66  usr/share/doc/git-annex/html/users/chrysn.html-50d3a05b91794570152155b644bd1241  usr/share/doc/git-annex/html/users/fmarier.html-e69b793065b3396a5ffb02a024ae1803  usr/share/doc/git-annex/html/users/joey.html-ffd9aef02237d829fb533a82c4b30ab5  usr/share/doc/git-annex/html/walkthrough.html-37ee51e132e794555ab3f403685890b7  usr/share/doc/git-annex/html/walkthrough/Internet_Archive_via_S3.html-d63bdd43e861c605125ab588009360d6  usr/share/doc/git-annex/html/walkthrough/adding_a_remote.html-74fe6b4b732c07686480f82c2f461175  usr/share/doc/git-annex/html/walkthrough/adding_files.html-931cb832a064643534d0986054bc9366  usr/share/doc/git-annex/html/walkthrough/backups.html-b299e7ef2c90abd811eb28d79be5be8a  usr/share/doc/git-annex/html/walkthrough/creating_a_repository.html-eaa0bc9eeb0b39dbd3b04cb54901a2c3  usr/share/doc/git-annex/html/walkthrough/fsck:_verifying_your_data.html-4ec7c74de31a9ea7d3669d52b15bace6  usr/share/doc/git-annex/html/walkthrough/fsck:_when_things_go_wrong.html-99fb7a10dad61fa3b899014be001efff  usr/share/doc/git-annex/html/walkthrough/getting_file_content.html-76a7a7f8a7a9cb332cc65337d57c6107  usr/share/doc/git-annex/html/walkthrough/migrating_data_to_a_new_backend.html-7c4dbbc15a71e1fddca4ede6c9efe260  usr/share/doc/git-annex/html/walkthrough/modifying_annexed_files.html-4389f8080e7bd5c8b7fe7fd447d4fc7d  usr/share/doc/git-annex/html/walkthrough/more.html-a9f973e96448771b65022d32072e5ed6  usr/share/doc/git-annex/html/walkthrough/moving_file_content_between_repositories.html-dab5c55b5831eb8b7065904af5a65fc2  usr/share/doc/git-annex/html/walkthrough/recover_data_from_lost+found.html-63177c056c2ef7f9c2362895ab4052f2  usr/share/doc/git-annex/html/walkthrough/removing_files.html-b30d8e272cd2d0463ba97ba4ff396432  usr/share/doc/git-annex/html/walkthrough/removing_files:_When_things_go_wrong.html-3eb114022928887e155b5c0a1c46d9ad  usr/share/doc/git-annex/html/walkthrough/renaming_files.html-4adb0eea064bd46937253ab2a1bf1908  usr/share/doc/git-annex/html/walkthrough/transferring_files:_When_things_go_wrong.html-dcf9cf8dedc3c58937ec53b9d8d131b6  usr/share/doc/git-annex/html/walkthrough/untrusted_repositories.html-40f0acb79df3e92f4fa54cd37c364c93  usr/share/doc/git-annex/html/walkthrough/unused_data.html-33fce92ea6c71189760b6e1674e1ebee  usr/share/doc/git-annex/html/walkthrough/using_Amazon_S3.html-4a7e4b4d6a9f5776504bc913c21866f9  usr/share/doc/git-annex/html/walkthrough/using_bup.html-db68244141e4b3ae6c9fccd273eee751  usr/share/doc/git-annex/html/walkthrough/using_ssh_remotes.html-2909ab914b751f127074d1ec4c7f42d4  usr/share/doc/git-annex/html/walkthrough/using_the_SHA1_backend.html-e5ee8a58374cec8bc12f751e3953e3f1  usr/share/doc/git-annex/html/walkthrough/using_the_web.html-9cf92a32863361c7e3debd5b22905492  usr/share/doc/git-annex/html/walkthrough/what_to_do_when_you_lose_a_repository.html-3a5efdda2e72d2604e1e2ea9e9f6b044  usr/share/man/man1/git-annex-shell.1.gz-b5ac89862db6a0b8ff899435d8f47330  usr/share/man/man1/git-annex.1.gz-ee31c60dfa2dc0d65285577174a3ad39  usr/share/man/man1/git-union-merge.1.gz
− debian/git-annex/usr/bin/git-annex

file too large to diff

− debian/git-annex/usr/bin/git-annex-shell

file too large to diff

− debian/git-annex/usr/bin/git-union-merge

binary file changed (1606568 → absent bytes)

− debian/git-annex/usr/share/doc-base/git-annex
@@ -1,9 +0,0 @@-Document: git-annex-Title: git-annex documentation-Author: Joey Hess-Abstract: All the documentation from git-annex's website.-Section: File Management--Format: HTML-Index: /usr/share/doc/git-annex/html/index.html-Files: /usr/share/doc/git-annex/html/*.html
− debian/git-annex/usr/share/doc/git-annex/NEWS.Debian.gz

binary file changed (596 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/changelog.gz

binary file changed (10052 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/copyright
@@ -1,39 +0,0 @@-Format: http://dep.debian.net/deps/dep5/-Source: native package--Files: *-Copyright: © 2010-2011 Joey Hess <joey@kitenet.net>-License: GPL-3+- The full text of version 3 of the GPL is distributed as doc/GPL in- this package's source, or in /usr/share/common-licenses/GPL-3 on- Debian systems.--Files: Utility/StatFS.hsc-Copyright: Jose A Ortega Ruiz <jao@gnu.org>-License: BSD-3-clause- -- All rights reserved.- -- - -- Redistribution and use in source and binary forms, with or without- -- modification, are permitted provided that the following conditions- -- are met:- -- - -- 1. Redistributions of source code must retain the above copyright- --    notice, this list of conditions and the following disclaimer.- -- 2. Redistributions in binary form must reproduce the above copyright- --    notice, this list of conditions and the following disclaimer in the- --    documentation and/or other materials provided with the distribution.- -- 3. Neither the name of the author nor the names of his contributors- --    may be used to endorse or promote products derived from this software- --    without specific prior written permission.- -- - -- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND- -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE- -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE- -- ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE- -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL- -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS- -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)- -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT- -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY- -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF- -- SUCH DAMAGE.
− debian/git-annex/usr/share/doc/git-annex/html/GPL.gz

binary file changed (12130 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/backends.html
@@ -1,158 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>backends</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-backends--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When a file is annexed, a key is generated from its content and/or metadata.-The file checked into git symlinks to the key. This key can later be used-to retrieve the file's content (its value).</p>--<p>Multiple pluggable key-value backends are supported, and a single repository-can use different ones for different files.</p>--<ul>-<li><code>WORM</code> ("Write Once, Read Many") This assumes that any file with-the same basename, size, and modification time has the same content.-This is the default, and the least expensive backend.</li>-<li><code>SHA1</code> -- This uses a key based on a sha1 checksum. This allows-verifying that the file content is right, and can avoid duplicates of-files with the same content. Its need to generate checksums-can make it slower for large files.</li>-<li><code>SHA512</code>, <code>SHA384</code>, <code>SHA256</code>, <code>SHA224</code> -- Like SHA1, but larger-checksums. Mostly useful for the very paranoid, or anyone who is-researching checksum collisions and wants to annex their colliding data. ;)</li>-<li><code>SHA1E</code>, <code>SHA512E</code>, etc -- Variants that preserve filename extension as-part of the key. Useful for archival tasks where the filename extension-contains metadata that should be preserved.</li>-</ul>--<p>The <code>annex.backends</code> git-config setting can be used to list the backends-git-annex should use. The first one listed will be used by default when-new files are added.</p>--<p>For finer control of what backend is used when adding different types of-files, the <code>.gitattributes</code> file can be used. The <code>annex.backend</code>-attribute can be set to the name of the backend to use for matching files.</p>--<p>For example, to use the SHA1 backend for sound files, which tend to be-smallish and might be modified or copied over time, you could set in-<code>.gitattributes</code>:</p>--<pre><code>*.mp3 annex.backend=SHA1-*.ogg annex.backend=SHA1-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>--<a href="./internals.html">internals</a>--<a href="./special_remotes.html">special remotes</a>--<a href="./todo/tahoe_lfs_for_reals.html">todo/tahoe lfs for reals</a>--<a href="./todo/using_url_backend.html">todo/using url backend</a>--<a href="./upgrades.html">upgrades</a>--<a href="./upgrades/SHA_size.html">upgrades/SHA size</a>--<a href="./walkthrough/Internet_Archive_via_S3.html">walkthrough/Internet Archive via S3</a>--<a href="./walkthrough/fsck:_verifying_your_data.html">walkthrough/fsck: verifying your data</a>--<a href="./walkthrough/using_the_SHA1_backend.html">walkthrough/using the SHA1 backend</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bare_repositories.html
@@ -1,132 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>bare repositories</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-bare repositories--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Due to popular demand, git-annex can now be used with bare repositories.</p>--<p>So, for example, you can stash a file away in the origin:-<code>git annex move mybigfile --to origin</code></p>--<p>Of course, for that to work, the bare repository has to be on a system with-<a href="./git-annex-shell.html">git-annex-shell</a> installed. If "origin" is on GitWeb, you still can't-use git-annex to store stuff there.</p>--<p>Known to work ok:</p>--<ul>-<li><code>git annex move --to</code> and <code>--from</code>, when pointed at a bare repository.</li>-<li><code>git annex copy</code> ditto.</li>-<li><code>git annex drop</code> can check that a bare repository has a copy of data-that is being dropped.</li>-<li><code>git annex get</code> can transfer data from a bare repository.</li>-<li>Most other stuff (ie, init, describe, trust, etc.)</li>-</ul>--<p>There are a few caveats to keep in mind when using bare repositories:</p>--<ul>-<li>A few subcommands, like <code>unused</code> cannot be run in a bare repository.-Those subcommands will refuse to do anything.</li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./bugs/bare_git_repos.html">bugs/bare git repos</a>--<a href="./bugs/fat_support.html">bugs/fat support</a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs.html
@@ -1,5384 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>bugs</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-bugs--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This is git-annex's bug list. Link bugs to <a href="./bugs/done.html">done</a> when done.</p>--<div id="feedlink">---</div>-<p>--<a href="./bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.html">wishlist: more descriptive commit messages in git-annex branch</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./bugs/--git-dir_and_--work-tree_options.html">--git-dir and --work-tree options</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./bugs/Prevent_accidental_merges.html">Prevent accidental merges</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./bugs/Cabal_dependency_monadIO_missing.html">Cabal dependency monadIO missing</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html">git annex fsck is a no-op in bare repos</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/making_annex-merge_try_a_fast-forward.html">making annex-merge try a fast-forward</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/touch.hsc_has_problems_on_non-linux_based_systems.html">annexed symlink mtime matching code is disabled on non-linux systems; needs testing</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.html">unannex and uninit do not work when git index is broken</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/unannex_command_doesn__39__t_all_files.html">unannex command doesn&#39;t all files</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/Unfortunate_interaction_with_Calibre.html">Unfortunate interaction with Calibre</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/softlink_mtime.html">softlink mtime</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/minor_bug:_errors_are_not_verbose_enough.html">minor bug: errors are not verbose enough</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/git_annex_unused_seems_to_check_for_current_path.html">git annex unused seems to check for current path</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/git_rename_detection_on_file_move.html">git rename detection on file move</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./bugs/S3_memory_leaks.html">S3 memory leaks</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>---</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-386147d6c3f671743b30a25d7d7cbd45">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-386147d6c3f671743b30a25d7d7cbd45">comment 10</a>--</div>--<div class="inlinecontent">-The key is the basename of the symlink target.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun May 15 12:47:53 2011</span>-</div>----</div>-<div class="comment" id="comment-e425e0132fe01b964c51ae037a770bd6">--<div class="comment-subject">--<a href="/bugs/Unfortunate_interaction_with_Calibre.html#comment-e425e0132fe01b964c51ae037a770bd6">comment 1</a>--</div>--<div class="inlinecontent">-Maybe I will run into issues myself somewhere down the road, but generally speaking, I really really like the fact that files are immutable by default.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 21 09:15:03 2011</span>-</div>----</div>-<div class="comment" id="comment-737dfd1b223c01e2ed5770ae5cbb652b">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-737dfd1b223c01e2ed5770ae5cbb652b">comment 14</a>--</div>--<div class="inlinecontent">-I've been trying to dig around the trace and code, and used google to see if the forkProcess issue was a haskell thing or an OSX thing. It seems that <a href="http://hackage.haskell.org/trac/ghc/ticket/4493">http://hackage.haskell.org/trac/ghc/ticket/4493</a> someone may have ran into a similar issue, though I am not sure if its related.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Feb 12 17:19:24 2011</span>-</div>----</div>-<div class="comment" id="comment-78bde5a8cd5124b0c6a4f2086f46ec7c">--<div class="comment-subject">--<a href="/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.html#comment-78bde5a8cd5124b0c6a4f2086f46ec7c">comment 3</a>--</div>--<div class="inlinecontent">-<p>To re-inject new content for a file, you really want to get a new key for the file. Otherwise, other repos that have the old file will never get the new content. So:</p>--<pre>-git rm file-mv ~/newcontent file-git annex add file-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 14 12:28:36 2011</span>-</div>----</div>-<div class="comment" id="comment-16afeb2906f20f7b774397f8f70ee4c9">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-16afeb2906f20f7b774397f8f70ee4c9">comment 9</a>--</div>--<div class="inlinecontent">-<p><a href="http://git.kitenet.net/?p=git-annex;a=commit;h=7a0826293e0ac6c0000f49a1618c1c613b909aa1">a0826293</a> fixed the last problem, there is coreutils available in macports, if they are installed you get the gnu equivalents but they are prefixed with a g (e.g. gchmod instead of chmod), I guess not everyone will have these install or prefer these on <a href="./install/OSX.html">OSX</a></p>--<p>Some more tests fail now...</p>--<pre>-Testing 1:blackbox:3:git-annex unannex:1:with content-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes-### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Testing 1:blackbox:4:git-annex drop:1:with remote-Testing 1:blackbox:4:git-annex drop:2:untrusted remote-Testing 1:blackbox:5:git-annex get-Testing 1:blackbox:6:git-annex move-Testing 1:blackbox:7:git-annex copy-### Failure in: 1:blackbox:7:git-annex copy-move --to of file already there failed-Testing 1:blackbox:8:git-annex unlock/lock-### Error in:   1:blackbox:8:git-annex unlock/lock-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:9:git-annex edit/commit:0-### Error in:   1:blackbox:9:git-annex edit/commit:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:9:git-annex edit/commit:1-### Error in:   1:blackbox:9:git-annex edit/commit:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:10:git-annex fix-### Error in:   1:blackbox:10:git-annex fix-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:11:git-annex trust/untrust/semitrust-### Error in:   1:blackbox:11:git-annex trust/untrust/semitrust-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:0-### Error in:   1:blackbox:12:git-annex fsck:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:1-### Error in:   1:blackbox:12:git-annex fsck:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:2-### Error in:   1:blackbox:12:git-annex fsck:2-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:13:git-annex migrate:0-### Error in:   1:blackbox:13:git-annex migrate:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:13:git-annex migrate:1-### Error in:   1:blackbox:13:git-annex migrate:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:14:git-annex unused/dropunused-### Error in:   1:blackbox:14:git-annex unused/dropunused-forkProcess: resource exhausted (Resource temporarily unavailable)-Cases: 30  Tried: 30  Errors: 11  Failures: 3-test: failed-make: *** [test] Error 1-</pre>--<p>On a side note, I think I found another bug in the testing. I had tested in a virtual machine in archlinux (a very recent updated version) Please see the report here <a href="./bugs/tests_fail_when_there_is_no_global_.gitconfig_for_the_user.html">tests fail when there is no global .gitconfig for the user</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Feb  9 05:12:52 2011</span>-</div>----</div>-<div class="comment" id="comment-3276fbf27334cae9a0d699f247ccdf66">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-3276fbf27334cae9a0d699f247ccdf66">comment 6</a>--</div>--<div class="inlinecontent">-<p>Ah, great, thanks very much for the quick fix!</p>--<p>Yes, when I mentioned three defunct git processes, there were three processes shown as "git [defunct]", plus the three git processes I listed, plus two "git-annex" processes. Upon cancel/resume, there were no defunct git processes when I checked, but by the time I found the bug report on the forum and commented I'd already successfully upgraded by annex (by repeatedly attaching strace) and couldn't really easily get at either additional 'ps' info or a fuller strace than what I posted (that was just the log from one of the attach/detach cycles), so it's a relief you managed to pinpoint the problem.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://lithitux.org/openidserver/users/pavel">pavel</a>-</span>---&mdash; <span class="date">Wed Jul  6 04:14:26 2011</span>-</div>----</div>-<div class="comment" id="comment-ef05ffbf0409122f9e6a8061df05df9e">--<div class="comment-subject">--<a href="/bugs/git_annex_add_eats_files_when_filename_is_too_long.html#comment-ef05ffbf0409122f9e6a8061df05df9e">comment 3</a>--</div>--<div class="inlinecontent">-comment on the output of 'git-annex version' (from my last comment): now I get the right version 3.20110707. But I checked in my console that the three commands "git checkout 3.20110707", "make" and "./git-annex version" gave me before 3.20110702, I don't know why...--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jul  7 20:45:30 2011</span>-</div>----</div>-<div class="comment" id="comment-4dfa6cd2d888c53baa87f31b56760234">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-4dfa6cd2d888c53baa87f31b56760234">comment 14</a>--</div>--<div class="inlinecontent">-<p>Or, even better, wouldn't it make sense to have SHA backends always default to --fast and only use non-fast when any snags are hit, use non-fast mode for that file.</p>--<p>Though if we continue here, we should probably move this to its own page.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun May 15 16:50:26 2011</span>-</div>----</div>-<div class="comment" id="comment-b38824a290d97393c1b81179462d0cf6">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-b38824a290d97393c1b81179462d0cf6">comment 20</a>--</div>--<div class="inlinecontent">-<p>Outside the test suite, git-annex's actual use of cp puts fairly low demands on it. It tries to use cp -a or cp -p if available just to preserve whatever attributes it can preserve, but the worst case if that you have a symlink pointing to a file that doesn't have the original timestamp or whatever. And there's little expectation git preserves that stuff anyway.</p>--<p>I will probably try to make the test suite entirely use git clone rather than cp.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb 13 13:54:09 2011</span>-</div>----</div>-<div class="comment" id="comment-b1e96a4f79018510a4e6f66de290ffeb">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-b1e96a4f79018510a4e6f66de290ffeb">comment 18</a>--</div>--<div class="inlinecontent">-<p>Joey, sorry, I got it wrong.  I thought upgrading git didn't help and you-adjusted things in git-annex instead.</p>--<p>Anyway, can I get around upgrading on all hosts by reformatting the drive to-case-sensitive HFS+? Or will I have to upgrade git (currently version 1.7.2.5)-eventually anyway?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=gernot&amp;do=goto">gernot</a>--</span>---&mdash; <span class="date">Sun Apr  3 15:46:16 2011</span>-</div>----</div>-<div class="comment" id="comment-2b8ef7134e8374c9ed68089f3c3cf0c2">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-2b8ef7134e8374c9ed68089f3c3cf0c2">comment 19</a>--</div>--<div class="inlinecontent">-<p>On second thought and after some messing (trying most of the options and combinations of options on OSX for).... I tried replacing cp with gnu cp from coreutils on my OSX install, and all the tests passed. <em>sigh</em> cp -a is preserving some permissions and attributes but not all, its not behaving in the same way as the gnu cp does... the closet thing that I have found on OSX that behaves in the same way as gnu "cp -pr" is to use "ditto".</p>--<p>Just doing a "ditto SOURCE DEST" in the tests passes everything. I'm not sure if its a good idea to use this even though it works. Though this is just the tests, does it affect CopyFile.hs where "cp" is called?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 11:55:47 2011</span>-</div>----</div>-<div class="comment" id="comment-3146f3b70a6fd07128f6f3330b0d5432">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-3146f3b70a6fd07128f6f3330b0d5432">comment 11</a>--</div>--<div class="inlinecontent">-<p>It seems the objects are in the remote after all, but the remote is unaware of this fact. No idea where/why the remote lost that info, but.. Anyway, with the SHA backends, wouldn't it make sense to simply return "OK" and update the annex logs accordingly, no?</p>--<p>Local:</p>--<pre><code>% ls -l foo-lrwxrwxrwx 1 richih richih 312 Apr  3 01:18 foo -&gt; .git/annex/objects/gG/VW/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491-% -</code></pre>--<p>Remote:</p>--<pre><code>% git-annex-shell recvkey &lt;remote&gt; SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491-git-annex-shell: key is already present in annex-% strace git-annex-shell recvkey /base/git-annex/fun SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491 2&gt;&amp;1 | grep SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491-stat64("/base/git-annex/fun/annex/objects/gG/VW/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491", {st_mode=S_IFREG|0444, st_size=80781, ...}) = 0-% ls -l /base/git-annex/fun/annex/objects/gG/VW/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491--r--r--r-- 1 richih richih 80781 2011-04-01 12:44 /base/git-annex/fun/annex/objects/gG/VW/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491/SHA512-s80781--cef3966a19c7435acceb8fbfbff1feebe6decab7c81a0c197f00932cf9ef0eac330784cc3f0d211bd4acf56a6d16daaebe9b598aa4dfd5bfec73f4e6df3f0491-% -</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun May 15 14:53:26 2011</span>-</div>----</div>-<div class="comment" id="comment-a9798c267006a04578a9a7ddeebdef73">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-a9798c267006a04578a9a7ddeebdef73">comment 3</a>--</div>--<div class="inlinecontent">-<p>So, there is evidence here of a circumstance caused by the <a href="./bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.html">other bug</a>, as I suspected.</p>--<p>I don't think that manual <code>git commit -a</code> caused the problem. I suspect it was a subsequent <code>git add</code> that caused git to follow the wrong case paths and add the files in the wrong place. Ie, when you run "git add .git-annex", it recurses into <code>.git-annex/Gm/</code>, and adds files using that case, that were previously added from <code>.git-annex/GM/</code>.</p>--<p>For completeness, can you verify this repo's core.ignorecase setting?</p>--<hr />--<p>I hate that you are stuck using loop filesystems to work around this bug. If my guess is correct, you don't need to, as long as you avoid manually running "git add .git-annex". I take this bug seriously. While I'm currently very involved in adding Amazon S3 support to git-annex (which will take days more of solid work), I do plan to make a loop filesystem of my own, probably vfat, so I can try and reproduce this on a case-insensative filesystem. If you could confirm my above hypothesis, that would speed things up for me.</p>--<p>It's possible I will have to tweak the hash directories. Hopefully if so, I will only tweak them for <em>new</em> keys; if I had to do a v3 backend just to fix this stupid thing, I'd be sad -- upgrading all my offline disks from v1 to v2 took me many days.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:25:18 2011</span>-</div>----</div>-<div class="comment" id="comment-3196b43b7d745ab206435d0a69686815">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-3196b43b7d745ab206435d0a69686815">comment 6</a>--</div>--<div class="inlinecontent">-<p>I forgot to mention that the statfs64 stuff in OSX seems to be deprecated, see http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/statfs64.2.html</p>--<p>on a slightly different note, is anonymous pushing to the "wiki" over git allowed? I'd prefer to be able to edit stuff inline for updating some of my own comments if I can :P</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:23:56 2011</span>-</div>----</div>-<div class="comment" id="comment-3ade9863d5c856959bb854613fc19fd8">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-3ade9863d5c856959bb854613fc19fd8">comment 7</a>--</div>--<div class="inlinecontent">-<p>Try the changes I've pushed to use statfs64 on apple.</p>--<p>There is actually a standardized statvfs that I'd rather use, but after the last time that I tried going with the POSIX option first only to find it was not broadly implemented, I was happy to find some already existing code that worked for some OSs.</p>--<p>(While ikiwiki supports anonymous git push, it's a feature we have not rolled out on Branchable.com yet, and anyway, ikiwiki disallows editing existing comments that way. I would, however, be happy to git pull changes from somewhere.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:57:56 2011</span>-</div>----</div>-<div class="comment" id="comment-4c9cd0ff1ab13525fbbef1c20d0a338e">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-4c9cd0ff1ab13525fbbef1c20d0a338e">comment 9</a>--</div>--<div class="inlinecontent">-Just to make sure: How do I get $key? What I did was look at the path in the object store of the local repo and see if that exact same path &amp; file existed in the remote.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun May 15 05:16:49 2011</span>-</div>----</div>-<div class="comment" id="comment-5acf0035c0171ee7026fc43aa31ab7eb">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-5acf0035c0171ee7026fc43aa31ab7eb">comment 7</a>--</div>--<div class="inlinecontent">-<p>That's odd, I have the md5sha1sum package installed and it still fails with pretty much the same error</p>--<pre>-Testing 1:blackbox:0:git-annex init-Cases: 30  Tried: 7  Errors: 0  Failures: 0chmod: -R: No such file or directory-### Error in:   1:blackbox:0:git-annex init-.t/repo/.git/annex/objects/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa: removeLink: permission denied (Permission denied)-Testing 1:blackbox:1:git-annex add:0-### Error in:   1:blackbox:1:git-annex add:0-foo: openFile: permission denied (Permission denied)--&lt; and so on &gt;-</pre>--<p>the configure script finds sha1sum, builds and starts to run.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Feb  8 20:45:31 2011</span>-</div>----</div>-<div class="comment" id="comment-8a43bf82e1e044f592899230a5d7a43a">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-8a43bf82e1e044f592899230a5d7a43a">comment 7</a>--</div>--<div class="inlinecontent">-Fixed that, and removed the impossible cast so it can be built with #if 1--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Mar 20 18:06:25 2011</span>-</div>----</div>-<div class="comment" id="comment-6a9b3ff4ba4b021a8bcef30c127b27ef">--<div class="comment-subject">--<a href="/bugs/git_annex_should_use___39__git_add_-f__39___internally.html#comment-6a9b3ff4ba4b021a8bcef30c127b27ef">comment 1</a>--</div>--<div class="inlinecontent">-And what about emitting a warning, as git does, that some files were not annex-added (when not using --force)?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Sun Jul  3 07:56:45 2011</span>-</div>----</div>-<div class="comment" id="comment-f2812d9cca0e3eec6f08d6eaa63ae9e2">--<div class="comment-subject">--<a href="/bugs/git_annex_add_eats_files_when_filename_is_too_long.html#comment-f2812d9cca0e3eec6f08d6eaa63ae9e2">this happens also when the user has not the permission to set the file mode</a>--</div>--<div class="inlinecontent">-For example if the file is owned by root, I guess git-annex fails when it tries to remove write permissions (I retested with the last version of today (whose "version" subcommand still outputs 3.20110702)).By the way, it would be nice to have a log file created containing the list of all failures, to avoid having to scan manually all the output of a long git-annex operation.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jul  7 20:21:31 2011</span>-</div>----</div>-<div class="comment" id="comment-5ad61cd209559713d04675c007fa0697">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-5ad61cd209559713d04675c007fa0697">comment 11</a>--</div>--<div class="inlinecontent">-<p>I have pushed out a preliminary fix. The old mixed-case directories will be left where they are, and still read from by git-annex. New data will be written to new, lower-case directories. I think that once git stops seeing changes being made-to mixed-case, colliding directories, the bugs you ran into won't manifest any more.</p>--<p>You will need to find a way to get your git repository out of the state where it complains about uncommitted files (and won't let you commit them). I have not found a reliable way to do that; git reset --hard worked in one case but not in another. May need to clone a fresh git repository.</p>--<p>Let me know how it works out.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 13:53:58 2011</span>-</div>----</div>-<div class="comment" id="comment-c4e408497ab6ced7053f8fc81d1339ab">--<div class="comment-subject">--<a href="/bugs/git_annex_upgrade_loses_track_of_files_with___34____38____34___character___40__and_probably_others__41__.html#comment-c4e408497ab6ced7053f8fc81d1339ab">comment 1</a>--</div>--<div class="inlinecontent">-<p>What an evil little bug. In retrospect, this probably bit my own test upgrades, but I ran <code>git annex fsck</code> everywhere and so avoided the location log breakage.</p>--<p>I've fixed the bug, which also involved files with other punctuation in their names [&amp;:%] when using the WORM backend. </p>--<p>The only way I have to recover repos that have already been upgraded is to run <code>git annex fsck --fast</code> in each clone of such a repo, which will let it rebuild the location log information. I think that is the best way to recover; ie I can't think of a way to recover that doesn't need to do everything fsck does anyway.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Jul  7 17:04:23 2011</span>-</div>----</div>-<div class="comment" id="comment-fcf6c471388acc5b183c774a23c52c96">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-fcf6c471388acc5b183c774a23c52c96">comment 12</a>--</div>--<div class="inlinecontent">-<p>So, it appears that you're using git annex copy --fast. As documented that assumes the location log is correct. So it avoids directly checking if the bare repo contains the file, and tries to upload it, and the bare repo is all like "but I've already got this file!". The only way to improve that behavior might be to let rsync go ahead and retransfer the file, which, with recovery, should require sending little data etc. But I can't say I like the idea much, as the repo already has the content, so unlocking it and letting rsync mess with it is an unnecessary risk. I think it's ok for --force to blow up-if its assumptions turn out to be wrong.</p>--<p>If you use git annex copy without --fast in this situation, it will do the right thing.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun May 15 15:40:47 2011</span>-</div>----</div>-<div class="comment" id="comment-f47890e2064003d05734259fc615e84d">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-f47890e2064003d05734259fc615e84d">comment 5</a>--</div>--<div class="inlinecontent">-<p>Version: 0.20110503</p>--<p>My local non-bare repo is copying to a remote bare repo.</p>--<p>I have been recovering in a non-bare repo.</p>--<p>If there is anything I can send you to help... If I removed said files and went through http://git-annex.branchable.com/bugs/No_easy_way_to_re-inject_a_file_into_an_annex/ -- would that help?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat May 14 15:03:43 2011</span>-</div>----</div>-<div class="comment" id="comment-d8c1f1d4252672e81f72570aa5719fe4">--<div class="comment-subject">--<a href="/bugs/annex_unannex__47__uninit_should_handle_copies.html#comment-d8c1f1d4252672e81f72570aa5719fe4">comment 2</a>--</div>--<div class="inlinecontent">-Indeed, uninit needed to be improved. I've done so. Also, unannex --fast can be used to make hard links to content left in the annex.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmJfIszzreLNvCqzqzvTayA9_9L6gb9RtY">Joey</a>-</span>---&mdash; <span class="date">Mon Jul  4 16:25:38 2011</span>-</div>----</div>-<div class="comment" id="comment-be235fd78f71bb58fe3f57294c2c4d51">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-be235fd78f71bb58fe3f57294c2c4d51">comment 5</a>--</div>--<div class="inlinecontent">-<p>In the meantime, would it be acceptable to split the pre-commit hook-into two discrete parts?</p>--<p>This would allow to (if preferred) defer "git annex fix" until-post-commit while still keeping the safety net for unlocked files.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Mon Mar 21 15:58:34 2011</span>-</div>----</div>-<div class="comment" id="comment-e184d770e17e252c5f0ddf423f2769bb">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-e184d770e17e252c5f0ddf423f2769bb">comment 3</a>--</div>--<div class="inlinecontent">-<p>Alternatively, you can just load it up in ghci and see if it reports numbers that make sense:</p>--<pre>-joey@gnu:~/src/git-annex&gt;make StatFS.hs-hsc2hs StatFS.hsc-perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs-joey@gnu:~/src/git-annex&gt;ghci StatFS.hs-GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.5 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 7427989, fsStatByteCount = 30425042944, fsStatBytesFree = 2528489472, fsStatBytesAvailable = 2219384832, fsStatBytesUsed = 27896553472})-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:13:33 2011</span>-</div>----</div>-<div class="comment" id="comment-eb38705800f191cd01cf2e72b30ba903">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-eb38705800f191cd01cf2e72b30ba903">Still a problem on 0.20110523</a>--</div>--<div class="inlinecontent">-<p>Hi,</p>--<p>(I'm new to git and git annex, so please forgive any mistakes I make...)</p>--<p>My repo is messed up right now.  The fact that I copied the repo with rsync -a back and forth from a case insensitive filesystem to a case sensitive one, probably didn't help.</p>--<p>I believe the annexed files in .git/annex/objects/ are still using a mixed case directory hashing scheme.  That's the problem I'm having.  The symlinks point to the wrong case and are now broken.  I don't think the latest versions of git-annex changed that (it only changed the hashing under .git-annex, right?).</p>--<p>Even if I clean up my repo, I think I'm still going to have a problem because I have one repo on an OS X case insensitive filesystem and my other repos on case sensitive Linux filesystems.  Potentially the directory name under .git/annex/objects will have a different case.  Then the symlink might have a different case than my Linux FS.  Does git-annex track changes in git by the contents of the symlink?  In which case the case difference would show up as a change even though there is no change?</p>--<p>Is it possible to change the directory hashing scheme under .git/annex/objects to use lowercase names?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=ssqq&amp;do=goto">ssqq</a>--</span>---&mdash; <span class="date">Thu Jun  2 16:31:55 2011</span>-</div>----</div>-<div class="comment" id="comment-27efbeffb106ffae521f30101c4cd9d4">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-27efbeffb106ffae521f30101c4cd9d4">comment 1</a>--</div>--<div class="inlinecontent">-<p>Seems like you probably have files in git with nearly as long filenames as the key files. Course, you can rename those yourself.</p>--<p>This couldn't be changed directly in WORM without some ugly transition, but it would be possible to implement it as a WORM100 or so. OTOH, if you're going to git annex migrate, you might as well use SHA1.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr  8 13:14:25 2011</span>-</div>----</div>-<div class="comment" id="comment-1e8c1c70e970b1ddd177fd2d98a99e12">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-1e8c1c70e970b1ddd177fd2d98a99e12">comment 2</a>--</div>--<div class="inlinecontent">-<p>Hey @fmarier. Well, this bug report is closed because you can already get rid of the symlinks. Just put a bare git repo on your fat filesystem, and use git-annex copy --to/--from there.</p>--<p>Now, that puts all the files that are on the device in .git/annex/objects/xx/yy/blah.mp3 -- how well rockbox would support that I don't know. And if it tries to modify or delete those files, git annex also can't help you manage those changes.</p>--<p>Another recent option is the <a href="./special_remotes/directory.html">directory</a> special remote type, which again uses "xx/yy/blah.mp3" and can't track changes made to the files. This could perhaps be extended in the direction you suggest, although trying to fit this into the special remote infrastructure might not be a good fit really.</p>--<p>The most likely way this has to get dealt with is really by using <a href="./todo/smudge.html">smudge</a> filters, which would eliminate the symlinks and allow copying a non-bare git repo onto vfat. </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Apr  4 14:20:45 2011</span>-</div>----</div>-<div class="comment" id="comment-3e4e37bdbfe669db40182d3ca36b19ce">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-3e4e37bdbfe669db40182d3ca36b19ce">comment 17</a>--</div>--<div class="inlinecontent">-<p>Yeap, that did the trick. I just tested a few separate OSX 10.6.6 systems and the tests are better behaved now, only 3 failures now.</p>--<p>So the tests behave better (at least we don't get resource fork errors any more)</p>--<ul>-<li>after the commit c319a3 without modifying the system limits (of 266 procs per user)</li>-<li>without the commit c319a3 and when I increase the system process limits to as much as OSX allows</li>-</ul>--<p>On all the systems I tested on, I'm down to 3 failures now.</p>--<pre>-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Cases: 30  Tried: 20  Errors: 0  Failures: 2add foo ok-ok-Cases: 30  Tried: 24  Errors: 0  Failures: 2  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  Bad file size; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/WORM:1297594011:20:foo-  Bad file content; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa-### Failure in: 1:blackbox:12:git-annex fsck:1-fsck failed to fail with content only available in untrusted (current) repository-Cases: 30  Tried: 26  Errors: 0  Failures: 3  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    90d63906-375e-11e0-8867-abb8a6368269  -- test repo-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    90d63906-375e-11e0-8867-abb8a6368269  -- test repo-Cases: 30  Tried: 30  Errors: 0  Failures: 3-</pre>--<p>It's the same set of failures across all the OSX systems that I have tested on. Now I just need to figure out why there are still these three failures.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 06:46:54 2011</span>-</div>----</div>-<div class="comment" id="comment-dd5538f683c9ebafb72b47076873d4d9">--<div class="comment-subject">--<a href="/bugs/git_annex_add_eats_files_when_filename_is_too_long.html#comment-dd5538f683c9ebafb72b47076873d4d9">comment 4</a>--</div>--<div class="inlinecontent">-Indeed, I've made it even more robust now, handling the case where the file has weird permissions too, and undoing the failed add so the file is always back at the start state. Had to add a dependency on another haskell module to allow this, so it took some time to figure out how to do it..--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Jul  7 21:32:30 2011</span>-</div>----</div>-<div class="comment" id="comment-eb2eb9afb5bd688640178f58f58f28ab">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-eb2eb9afb5bd688640178f58f58f28ab">comment 7</a>--</div>--<div class="inlinecontent">-<p>It exists locally, whereis tells me it exists locally and locally, only.</p>--<p>The object is <em>not</em> in the bare repo.</p>--<p>The file <em>might</em> have gone missing before I upgraded my annex backend version to 2. Could this be a factor?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat May 14 19:13:15 2011</span>-</div>----</div>-<div class="comment" id="comment-387df3e5e1553205880e92902bf1a55b">--<div class="comment-subject">--<a href="/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html#comment-387df3e5e1553205880e92902bf1a55b">Bisect it is, then</a>--</div>--<div class="inlinecontent">-<p>Hm, if path's ok, guess there's no way around git-bisect indeed. Wonder if there's some kind of ccache for haskell...</p>--<p>OS is linux, amd64 on "host1" and i386 on "host2" where git-annex-shell is crashing.-I'll try to come up with a commit, thanks for clarifications.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://fraggod.pip.verisignlabs.com.pip.verisignlabs.com/">fraggod [pip.verisignlabs.com.pip.verisignlabs.com]</a>-</span>---&mdash; <span class="date">Sun Apr  3 00:45:49 2011</span>-</div>----</div>-<div class="comment" id="comment-a80ca28341d111694df26e988e8ba862">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-a80ca28341d111694df26e988e8ba862">comment 8</a>--</div>--<div class="inlinecontent">-The chmod errors are because your chmod does not understand the -R argument. Only the test suite uses chmod -R. I've fixed it to modify modes manually.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 00:10:27 2011</span>-</div>----</div>-<div class="comment" id="comment-da5cfa01c344e8c89cd74fc03acbea09">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-da5cfa01c344e8c89cd74fc03acbea09">comment 5</a>--</div>--<div class="inlinecontent">-<p>Actually I may have just been stupid and should have read the man page on statfs...</p>--<pre>-jtang@x00:~/develop/git-annex $ git diff-diff --git a/StatFS.hsc b/StatFS.hsc-index 8b453dc..e10b2dd 100644---- a/StatFS.hsc-+++ b/StatFS.hsc-@@ -53,7 +53,7 @@ import Foreign.C.String- import Data.ByteString (useAsCString)- import Data.ByteString.Char8 (pack)---#if defined (__FreeBSD__)-+#if defined (__FreeBSD__) || defined (__APPLE__)- # include - # include - #else-@@ -84,8 +84,8 @@ data CStatfs- #ifdef UNKNOWN- #warning free space checking code not available for this OS- #else--#if defined(__FreeBSD__)--foreign import ccall unsafe "sys/mount.h statfs"-+#if defined(__FreeBSD__) || defined (__APPLE__)-+foreign import ccall unsafe "sys/mount.h statfs64"- #else- foreign import ccall unsafe "sys/vfs.h statfs64"- #endif-</pre>--<p>yields this...</p>--<pre>-jtang@x00:~/develop/git-annex $ ghci StatFS.hs                                                                                                                                    -GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-Loading package ffi-1.0 ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.7 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 244106668, fsStatByteCount = 999860912128, fsStatBytesFree = 423097798656, fsStatBytesAvailable = 422835654656, fsStatBytesUsed = 576763113472})-*StatFS&gt; -</pre>--<p>we could just stick another if defined (<strong>APPLE</strong>) instead of what I previously had and it looks like it will do the right thing on OSX.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:14:22 2011</span>-</div>----</div>-<div class="comment" id="comment-1b5547648ebce3e808bad921610e0aaf">--<div class="comment-subject">--<a href="/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html#comment-1b5547648ebce3e808bad921610e0aaf">comment 3</a>--</div>--<div class="inlinecontent">-<p>Repeated bisect with -j1, just to be sure it's not a random error, and it gave me 828a84ba3341d4b7a84292d8b9002a8095dd2382 again.-Guess I'll look through the changes there a bit later and try to revert these until it works.</p>--<p>Not sure if it's repeatable by anyone but me  (and hence worth fixing), but here's a bit more of info about the system:</p>--<pre><code>Exherbo linux-Linux sacrilege 2.6.38.2-fg.roam #4 SMP PREEMPT Mon Mar 28 21:08:47 YEKST 2011 i686 GNU/Linux--dev-lang/ghc-7.0.2:7.0.2::installed-dev-haskell/HUnit-1.2.2.3:1.2.2.3::installed-dev-haskell/MissingH-1.1.0.3:1.1.0.3::installed-dev-haskell/QuickCheck-2.4.0.1:2.4.0.1::installed-dev-haskell/array-0.3.0.2:0.3.0.2::installed-dev-haskell/bytestring-0.9.1.7:0.9.1.7::installed-dev-haskell/containers-0.4.0.0:0.4.0.0::installed-dev-haskell/extensible-exceptions-0.1.1.2:0.1.1.2::installed-dev-haskell/filepath-1.2.0.0:1.2.0.0::installed-dev-haskell/hslogger-1.1.3:0::installed-dev-haskell/mtl-2.0.1.0:2.0.1.0::installed-dev-haskell/network-2.3.0.1:2.3.0.1::installed-dev-haskell/old-locale-1.0.0.2:1.0.0.2::installed-dev-haskell/parsec-3.1.0:3.1.0::installed-dev-haskell/pcre-light-0.4:0::installed-dev-haskell/regex-base-0.93.2:0.93.2::installed-dev-haskell/regex-compat-0.93.1:0.93.1::installed-dev-haskell/regex-posix-0.94.4:0.94.4::installed-dev-haskell/syb-0.3:0.3::installed-dev-haskell/transformers-0.2.2.0:0.2.2.0::installed-dev-haskell/utf8-string-0.3.6:0.3.6::installed-</code></pre>--<p>(some stuff listed here as ::installed, but contains no files, since these packages detect whether ghc-7.0.2 already comes with the same/newer package version)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://fraggod.pip.verisignlabs.com.pip.verisignlabs.com/">fraggod [pip.verisignlabs.com.pip.verisignlabs.com]</a>-</span>---&mdash; <span class="date">Sun Apr  3 02:57:02 2011</span>-</div>----</div>-<div class="comment" id="comment-822f4c1cdafa8eee28932c91c3b174d1">--<div class="comment-subject">--<a href="/bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.html#comment-822f4c1cdafa8eee28932c91c3b174d1">comment 2</a>--</div>--<div class="inlinecontent">-Given that the softlinks contain all needed information (if the object exists, locally), an emergency way to get files "out" of git-annex would be nice. I am aware that one can script it, but a canonical way is always better, especially when things go south.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 04:55:18 2011</span>-</div>----</div>-<div class="comment" id="comment-7da12ca883834ef0751dcc5d8b7d3f93">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-7da12ca883834ef0751dcc5d8b7d3f93">comment 2</a>--</div>--<div class="inlinecontent">-Sounds like you probably didn't commit after the fsck, or didn't push so the other repository did not know the first had the content again -- but I'm not 100% sure.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed May 11 21:01:34 2011</span>-</div>----</div>-<div class="comment" id="comment-0f737df732a24e021bd1e9284adf6623">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-0f737df732a24e021bd1e9284adf6623">comment 12</a>--</div>--<div class="inlinecontent">-joey@kitenet.net (hope I can make sense of dtruss output)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 15:47:30 2011</span>-</div>----</div>-<div class="comment" id="comment-6c9a0d6d10c6299646d1890d6ed319cc">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-6c9a0d6d10c6299646d1890d6ed319cc">comment 17</a>--</div>--<div class="inlinecontent">-@gernot step 0 is to upgrade git-annex to current git, on all systems where you use it, in case that wasn't clear.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:53:51 2011</span>-</div>----</div>-<div class="comment" id="comment-e3080eb45b4486f7f7f6cac5406fee46">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-e3080eb45b4486f7f7f6cac5406fee46">comment 14</a>--</div>--<div class="inlinecontent">-<p>I meant to say in it wasn't reliable when I was following the instructions for "Comment 12". I did find that just doing a  "git annex copy -t externalusb ."  then a "git annex drop ." from the root of my cloned and "none trusted" annexed repos to be more reliable, it just means I temporarily need a load of space to get myself out of my earlier mess.</p>--<p>On testing this bug fix, I found a minor behavioural issue with <a href="./bugs/git_annex_copy_-f_REMOTE_._doesn__39__t_work_as_expected.html">git annex copy -f REMOTE . doesn&#39;t work as expected</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 04:24:17 2011</span>-</div>----</div>-<div class="comment" id="comment-04a7bd93d2b6ded3bdc54d7770568f32">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-04a7bd93d2b6ded3bdc54d7770568f32">comment 5</a>--</div>--<div class="inlinecontent">-<p>I also failed to mention, that in the case when i have stray log files after what has happened in comment 2, I get this left over after a commit when git is confused...</p>--<pre>-jtang@x00:~/sources $ git status-# On branch master-# Your branch is ahead of 'origin/master' by 1 commit.-#-# Changes not staged for commit:-#   (use "git add ..." to update what will be committed)-#   (use "git checkout -- ..." to discard changes in working directory)-#-#   modified:   .git-annex/1G/X3/WORM-s309910751-m1301311322--l_fcompxe_ia32_2011.2.137.tgz.log-#   modified:   .git-annex/3W/Xf/WORM-s805764902-m1301312756--l_cproc_p_11.1.075_intel64.log-#   modified:   .git-annex/9Q/Wz/WORM-s1234430253-m1301311891--l_ccompxe_2011.2.137.log-#   modified:   .git-annex/FQ/4z/WORM-s318168323-m1301310848--l_cprof_p_11.1.075_ia64.log-#   modified:   .git-annex/FV/0P/WORM-s710135470-m1301311835--l_ccompxe_intel64_2011.2.137.log-#   modified:   .git-annex/Jk/zK/WORM-s374617670-m1301312705--l_ipp_7.0.2.137_intel64.log-#   modified:   .git-annex/Jx/qM/WORM-s599386592-m1301310731--l_fcompxe_2011.2.137.tgz.log-#   modified:   .git-annex/KX/w1/WORM-s35976002-m1301312193--l_tbb_3.0.6.174.log-#   modified:   .git-annex/VK/kv/WORM-s584342291-m1301312669--l_cproc_p_11.1.075_ia64.log-#   modified:   .git-annex/Vw/jK/WORM-s15795178-m1301310913--w_flm_p_1.0.011_intel64.zip.log-#   modified:   .git-annex/Zq/7X/WORM-s343075585-m1301312233--l_ipp_7.0.2.137_ia32.log-#   modified:   .git-annex/vW/v1/WORM-s736986678-m1301312794--l_cproc_p_11.1.075_ia32.log-#-no changes added to commit (use "git add" and/or "git commit -a")-</pre>--<p>Up until now I have just been updating the status of the staged files by hand and commiting it on my mac x00, this probably isn't helping. I'd rather not lose the tracking information.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:51:11 2011</span>-</div>----</div>-<div class="comment" id="comment-70bd4caa330e98bc726c44ba309be0a8">--<div class="comment-subject">--<a href="/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html#comment-70bd4caa330e98bc726c44ba309be0a8">git annex fsck --from remote</a>--</div>--<div class="inlinecontent">-<p>Currently fsck silently ignores --to/--from.-It should at least complain if it is not supported.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Sat Jun 25 12:20:44 2011</span>-</div>----</div>-<div class="comment" id="comment-fdfdb9dad144abc5d599eae70b692c9f">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-fdfdb9dad144abc5d599eae70b692c9f">Got it going!</a>--</div>--<div class="inlinecontent">-<p>Thanks to your feedback, I got it going.  </p>--<p>Maybe those two should be added to the 'OSX how-to' in the forum   </p>--<p>[realizes pcre-light is needed but pcre not installed on my mac] <br />-sudo port install pcre <br />-sudo cabal install pcre-light  </p>--<p>[tests are failing, need haskell's quickcheck] <br />-sudo cabal install quickcheck  </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmd3qri1pXEYktlxYGwj37wCnrM4FMEJCc">Antoine</a>-</span>---&mdash; <span class="date">Sun Feb  6 02:02:57 2011</span>-</div>----</div>-<div class="comment" id="comment-089937f442501c25de03f55ef7317b71">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-089937f442501c25de03f55ef7317b71">comment 2</a>--</div>--<div class="inlinecontent">-<p>I think I know how I got myself into this mess... I was on my mac workstation and I had just pulled in a change set from another repo on a linux workstation after I had a made a bunch of moves. here's a bit of a log of what happened...</p>--<pre>-jtang@x00:~/sources $ git pull cports-devel master-Warning: untrusted X11 forwarding setup failed: xauth key data not generated-Warning: No xauth data; using fake authentication data for X11 forwarding.-remote: Counting objects: 4195, done.-remote: Compressing objects: 100% (1135/1135), done.-remote: Total 2582 (delta 866), reused 2576 (delta 860)-Receiving objects: 100% (2582/2582), 229.42 KiB | 111 KiB/s, done.-Resolving deltas: 100% (866/866), completed with 9 local objects.-From cports-devel:/home/people/jtang/sources- * branch            master     -&gt; FETCH_HEAD-Updating 319df99..ab0a98c-error: Your local changes to the following files would be overwritten by merge:-    .git-annex/09/5X/WORM-s361516678-m1301310614--l_fcompxe_intel64_2011.2.137.tgz.log-    .git-annex/43/2g/WORM-s19509673-m1301310496--l_fcompxe_2011.2.137_redist.tgz.log-    .git-annex/4J/qF/WORM-s18891115-m1301310934--w_flm_p_1.0.011_ia64.zip.log-    .git-annex/87/w1/WORM-s12212473-m1301310909--w_flm_p_1.0.011_ia32.zip.log-    .git-annex/99/Jq/WORM-s194345957-m1301310926--l_mkl_10.3.2.137_ia32.log-    .git-annex/99/kf/WORM-s9784531-m1301311680--l_ccompxe_2011.2.137_redist.log-    .git-annex/FF/f3/WORM-s93033394-m1301311706--l_gen_ipp_7.0.2.137.log-    .git-annex/MF/xZ/WORM-s515140733-m1301310936--l_cprof_p_11.1.075.log-    .git-annex/XW/X8/WORM-s355559731-m1301310797--l_mkl_10.3.2.137.log-    .git-annex/fJ/mZ/WORM-s1372886477-m1301313368--l_cproc_p_11.1.075.log-    .git-annex/j7/Q9/WORM-s44423202-m1301310622--l_cprof_p_11.1.075_redist.log-    .git-annex/k4/K7/WORM-s239539070-m1301310760--l_mkl_10.3.2.137_intel64.log-    .git-annex/kz/01/WORM-s279573314-m1301310783--l_cprof_p_11.1.075_ia32.log-    .git-annex/p6/Kq/WORM-s31199343-m1301311829--l_cproc_p_11.1.075_redist.log-    .git-annex/pz/J5/WORM-s626995277-m1301312301--l_ccompxe_ia32_2011.2.137.log-    .git-annex/v3/kX/WORM-s339693045-m1301310851--l_cprof_p_11.1.075_intel64.log-Please, commit your changes or stash them before you can merge.-error: Your local changes to the following files would be overwritten by merge:-    .git-annex/12/3W/WORM-s3058814-m1276699694--Botan-1.8.9.tgz.log-    .git-annex/1G/qV/WORM-s9122-m1251558854--Array-Compare-2.01.tar.gz.log-    .git-annex/3W/W5/WORM-s231523-m1270740744--DBD-Pg-2.17.1.tar.gz.log-    .git-annex/3x/PX/WORM-s380310-m1293025187--HTSeq-0.4.7.tar.gz.log-    .git-annex/45/gk/WORM-s67337-m1248732018--ExtUtils-Install-1.54.tar.gz.log-    .git-annex/4J/7Q/WORM-s8608-m1224694862--Algorithm-Munkres-0.08.tar.gz.log-    .git-annex/4g/XQ/WORM-s89208-m1278682033--HTML-Parser-3.66.tar.gz.log-    .git-annex/54/jw/WORM-s300163-m1226422051--AcePerl-1.92.tar.gz.log-    .git-annex/63/kj/WORM-s1213460-m1262942058--DBD-SQLite-1.29.tar.gz.log-    .git-annex/6Z/42/WORM-s4074-m943766010--File-Sync-0.09.tar.gz.log-    .git-annex/8F/M5/WORM-s6989-m1263161127--Digest-HMAC-1.02.tar.gz.log-    .git-annex/G2/FK/WORM-s3309-m1163872981--Bundle-BioPerl-2.1.8.tar.gz.log-    .git-annex/Gk/XF/WORM-s23572243-m1279546902--EMBOSS-6.3.1.tar.gz.log-    .git-annex/Jk/X6/WORM-s566429-m1279309002--DBI-1.612.tar.gz.log-    .git-annex/K6/fV/WORM-s1561451-m1240055295--Convert-Binary-C-0.74.tar.gz.log-    .git-annex/KM/4q/WORM-s146959-m1268515086--Graph-0.94.tar.gz.log-    .git-annex/MF/m2/WORM-s425766-m1212514609--Data-Stag-0.11.tar.gz.log-    .git-annex/QJ/P6/WORM-s1045868-m1282215033--9base-6.tar.gz.log-    .git-annex/Qm/WG/WORM-s39078-m1278163547--Digest-SHA1-2.13.tar.gz.log-    .git-annex/Wq/Fj/WORM-s45680640-m1297862101--BclConverter-1.7.1.tar.log-    .git-annex/Wq/Wm/WORM-s263536640-m1295025537--CASAVA_v1.7.0.tar.log-    .git-annex/XW/qm/WORM-s36609-m1276050470--Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz.log-    .git-annex/f7/g0/WORM-s40872-m1278273227--ExtUtils-ParseXS-2.2206.tar.gz.log-    .git-annex/j3/JF/WORM-s11753-m1232427595--Clone-0.31.tar.gz.log-    .git-annex/kX/9g/WORM-s84690-m1229117599--GraphViz-2.04.tar.gz.log-    .git-annex/km/z5/WORM-s44634-m1275505134--Authen-SASL-2.15.tar.gz.log-    .git-annex/kw/J3/WORM-s132396-m1278780649--DBD-mysql-4.016.tar.gz.log-    .git-annex/p5/1P/WORM-s53736-m1278673485--Archive-Tar-1.64.tar.gz.log-    .git-annex/wv/zG/WORM-s30584-m1268774021--ExtUtils-CBuilder-0.2703.tar.gz.log-    .git-annex/x5/7v/WORM-s10462526-m1254242591--BioPerl-1.6.1.tar.gz.log-Please, commit your changes or stash them before you can merge.-error: The following untracked working tree files would be overwritten by merge:-    .git-annex/1g/X3/WORM-s309910751-m1301311322--l_fcompxe_ia32_2011.2.137.tgz.log-    .git-annex/3w/Xf/WORM-s805764902-m1301312756--l_cproc_p_11.1.075_intel64.log-    .git-annex/9Q/Wz/WORM-s1234430253-m1301311891--l_ccompxe_2011.2.137.log-    .git-annex/FQ/4z/WORM-s318168323-m1301310848--l_cprof_p_11.1.075_ia64.log-    .git-annex/FV/0P/WORM-s710135470-m1301311835--l_ccompxe_intel64_2011.2.137.log-    .git-annex/Jx/qM/WORM-s599386592-m1301310731--l_fcompxe_2011.2.137.tgz.log-    .git-annex/KX/w1/WORM-s35976002-m1301312193--l_tbb_3.0.6.174.log-    .git-annex/Vw/jK/WORM-s15795178-m1301310913--w_flm_p_1.0.011_intel64.zip.log-    .git-annex/jK/zK/WORM-s374617670-m1301312705--l_ipp_7.0.2.137_intel64.log-    .git-annex/vK/kv/WORM-s584342291-m1301312669--l_cproc_p_11.1.075_ia64.log-    .git-annex/vw/v1/WORM-s736986678-m1301312794--l_cproc_p_11.1.075_ia32.log-    .git-annex/zq/7X/WORM-s343075585-m1301312233--l_ipp_7.0.2.137_ia32.log-Please move or remove them before you can merge.-Aborting-1|jtang@x00:~/sources $ git status-# On branch master-# Your branch is ahead of 'origin/master' by 2 commits.-#-# Changes to be committed:-#   (use "git reset HEAD ..." to unstage)-#-#   modified:   .git-annex/09/5X/WORM-s361516678-m1301310614--l_fcompxe_intel64_2011.2.137.tgz.log-#   modified:   .git-annex/43/2g/WORM-s19509673-m1301310496--l_fcompxe_2011.2.137_redist.tgz.log-#   modified:   .git-annex/4J/qF/WORM-s18891115-m1301310934--w_flm_p_1.0.011_ia64.zip.log-#   modified:   .git-annex/87/w1/WORM-s12212473-m1301310909--w_flm_p_1.0.011_ia32.zip.log-#   modified:   .git-annex/99/Jq/WORM-s194345957-m1301310926--l_mkl_10.3.2.137_ia32.log-#   modified:   .git-annex/99/kf/WORM-s9784531-m1301311680--l_ccompxe_2011.2.137_redist.log-#   modified:   .git-annex/FF/f3/WORM-s93033394-m1301311706--l_gen_ipp_7.0.2.137.log-#   modified:   .git-annex/MF/xZ/WORM-s515140733-m1301310936--l_cprof_p_11.1.075.log-#   modified:   .git-annex/XW/X8/WORM-s355559731-m1301310797--l_mkl_10.3.2.137.log-#   modified:   .git-annex/fJ/mZ/WORM-s1372886477-m1301313368--l_cproc_p_11.1.075.log-#   modified:   .git-annex/j7/Q9/WORM-s44423202-m1301310622--l_cprof_p_11.1.075_redist.log-#   modified:   .git-annex/k4/K7/WORM-s239539070-m1301310760--l_mkl_10.3.2.137_intel64.log-#   modified:   .git-annex/kz/01/WORM-s279573314-m1301310783--l_cprof_p_11.1.075_ia32.log-#   modified:   .git-annex/p6/Kq/WORM-s31199343-m1301311829--l_cproc_p_11.1.075_redist.log-#   modified:   .git-annex/pz/J5/WORM-s626995277-m1301312301--l_ccompxe_ia32_2011.2.137.log-#   modified:   .git-annex/v3/kX/WORM-s339693045-m1301310851--l_cprof_p_11.1.075_intel64.log-#-# Changes not staged for commit:-#   (use "git add ..." to update what will be committed)-#   (use "git checkout -- ..." to discard changes in working directory)-#-#   modified:   .git-annex/12/3W/WORM-s3058814-m1276699694--Botan-1.8.9.tgz.log-#   modified:   .git-annex/1G/qV/WORM-s9122-m1251558854--Array-Compare-2.01.tar.gz.log-#   modified:   .git-annex/3W/W5/WORM-s231523-m1270740744--DBD-Pg-2.17.1.tar.gz.log-#   modified:   .git-annex/3x/PX/WORM-s380310-m1293025187--HTSeq-0.4.7.tar.gz.log-#   modified:   .git-annex/45/gk/WORM-s67337-m1248732018--ExtUtils-Install-1.54.tar.gz.log-#   modified:   .git-annex/4J/7Q/WORM-s8608-m1224694862--Algorithm-Munkres-0.08.tar.gz.log-#   modified:   .git-annex/4g/XQ/WORM-s89208-m1278682033--HTML-Parser-3.66.tar.gz.log-#   modified:   .git-annex/54/jw/WORM-s300163-m1226422051--AcePerl-1.92.tar.gz.log-#   modified:   .git-annex/63/kj/WORM-s1213460-m1262942058--DBD-SQLite-1.29.tar.gz.log-#   modified:   .git-annex/6Z/42/WORM-s4074-m943766010--File-Sync-0.09.tar.gz.log-#   modified:   .git-annex/8F/M5/WORM-s6989-m1263161127--Digest-HMAC-1.02.tar.gz.log-#   modified:   .git-annex/G2/FK/WORM-s3309-m1163872981--Bundle-BioPerl-2.1.8.tar.gz.log-#   modified:   .git-annex/Gk/XF/WORM-s23572243-m1279546902--EMBOSS-6.3.1.tar.gz.log-#   modified:   .git-annex/Jk/X6/WORM-s566429-m1279309002--DBI-1.612.tar.gz.log-#   modified:   .git-annex/K6/fV/WORM-s1561451-m1240055295--Convert-Binary-C-0.74.tar.gz.log-#   modified:   .git-annex/KM/4q/WORM-s146959-m1268515086--Graph-0.94.tar.gz.log-#   modified:   .git-annex/MF/m2/WORM-s425766-m1212514609--Data-Stag-0.11.tar.gz.log-#   modified:   .git-annex/QJ/P6/WORM-s1045868-m1282215033--9base-6.tar.gz.log-#   modified:   .git-annex/Qm/WG/WORM-s39078-m1278163547--Digest-SHA1-2.13.tar.gz.log-#   modified:   .git-annex/Wq/Fj/WORM-s45680640-m1297862101--BclConverter-1.7.1.tar.log-#   modified:   .git-annex/Wq/Wm/WORM-s263536640-m1295025537--CASAVA_v1.7.0.tar.log-#   modified:   .git-annex/XW/qm/WORM-s36609-m1276050470--Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz.log-#   modified:   .git-annex/Zq/7X/WORM-s343075585-m1301312233--l_ipp_7.0.2.137_ia32.log-#   modified:   .git-annex/f7/g0/WORM-s40872-m1278273227--ExtUtils-ParseXS-2.2206.tar.gz.log-#   modified:   .git-annex/j3/JF/WORM-s11753-m1232427595--Clone-0.31.tar.gz.log-#   modified:   .git-annex/kX/9g/WORM-s84690-m1229117599--GraphViz-2.04.tar.gz.log-#   modified:   .git-annex/km/z5/WORM-s44634-m1275505134--Authen-SASL-2.15.tar.gz.log-#   modified:   .git-annex/kw/J3/WORM-s132396-m1278780649--DBD-mysql-4.016.tar.gz.log-#   modified:   .git-annex/p5/1P/WORM-s53736-m1278673485--Archive-Tar-1.64.tar.gz.log-#   modified:   .git-annex/wv/zG/WORM-s30584-m1268774021--ExtUtils-CBuilder-0.2703.tar.gz.log-#   modified:   .git-annex/x5/7v/WORM-s10462526-m1254242591--BioPerl-1.6.1.tar.gz.log-#-# Untracked files:-#   (use "git add ..." to include in what will be committed)-#-#   .git-annex/1G/X3/-#   .git-annex/3W/Xf/-#   .git-annex/9q/Wz/-#   .git-annex/Fq/4z/-#   .git-annex/Jk/zK/-#   .git-annex/Kx/w1/-#   .git-annex/VK/kv/-#   .git-annex/fv/0P/-#   .git-annex/jX/qM/-#   .git-annex/vW/jK/-#   .git-annex/vW/v1/-jtang@x00:~/sources $ git commit -a -m "snap"-[master 45f254a] snap- 47 files changed, 64 insertions(+), 30 deletions(-)-jtang@x00:~/sources $ git status-# On branch master-# Your branch is ahead of 'origin/master' by 3 commits.-#-# Untracked files:-#   (use "git add ..." to include in what will be committed)-#-#   .git-annex/1G/X3/-#   .git-annex/3W/Xf/-#   .git-annex/9q/Wz/-#   .git-annex/Fq/4z/-#   .git-annex/Jk/zK/-#   .git-annex/Kx/w1/-#   .git-annex/VK/kv/-#   .git-annex/fv/0P/-#   .git-annex/jX/qM/-#   .git-annex/vW/jK/-#   .git-annex/vW/v1/-nothing added to commit but untracked files present (use "git add" to track)-jtang@x00:~/sources $ git pull-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:09:45 2011</span>-</div>----</div>-<div class="comment" id="comment-947af200a9d32f28dd0ca3d11b0a3260">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-947af200a9d32f28dd0ca3d11b0a3260">no symlinks</a>--</div>--<div class="inlinecontent">-<p>If you try to clone a git repo that has a symlink over to a VFAT filesystem, you get (in its place) a regular file that contains the name of the symlink target.  So why can't git-annex use that?  I could still do git annex get on this file, git annex would still "know" that it's a symlink, and could replace it with a copy of the real file (instead of putting it in .git/annex).</p>--<p>I know if it were that simple, someone would have done it already, so what am I missing?  I guess trying to get the file FROM the repository would fail because it wouldn't find the file in .git/annex?  Couldn't you store a reverse mapping?  You wouldn't be able to move the file around, but you already lose that once you give up symlinks.  It would also be a little harder to tell which symlinks were "dangling"; I don't see an easy way to get around that.  It would still be better than a bare repo..</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ethan.betacantrips.com/">ethan.glasser.camp</a>-</span>---&mdash; <span class="date">Wed Jun  8 16:59:38 2011</span>-</div>----</div>-<div class="comment" id="comment-9d352379b85d766eb9ec38e493a33f6d">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-9d352379b85d766eb9ec38e493a33f6d">comment 10</a>--</div>--<div class="inlinecontent">-I don't know what these problems forking could be. Can you strace it?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 11:04:50 2011</span>-</div>----</div>-<div class="comment" id="comment-eb6dff5032521c742052016b2ee1a450">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-eb6dff5032521c742052016b2ee1a450">comment 4</a>--</div>--<div class="inlinecontent">-In my "sources" repo on x00, the current setting is this "ignorecase = true" it was the first repo that I created before I clone it elsewhere and pull my changes back, it is on a HFS+ partition which is case insensitive and it is replicated on a portable hdd with a bare repo on a exfat partition. I wonder if my portable disk has a partially borked repo :P--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:41:56 2011</span>-</div>----</div>-<div class="comment" id="comment-6662709724463f8b2bc8bbb805b599a2">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-6662709724463f8b2bc8bbb805b599a2">comment 2</a>--</div>--<div class="inlinecontent">-Yes, I've moved it to <a href="./install/OSX.html">OSX</a> page where anyone can update it in this wiki, and added your improvements.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb  6 13:39:52 2011</span>-</div>----</div>-<div class="comment" id="comment-1d8d80124262f5382333e206bcf226f7">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-1d8d80124262f5382333e206bcf226f7">comment 4</a>--</div>--<div class="inlinecontent">-Just tried it out on my mac and it's working again. I guess this issue could be closed for now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 16 16:32:01 2011</span>-</div>----</div>-<div class="comment" id="comment-95813e88ec54f9c0964a807642df1eed">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-95813e88ec54f9c0964a807642df1eed">comment 4</a>--</div>--<div class="inlinecontent">-Picking up the automagic encryption idea for annex remotes, this would allow you to host a branchable-esque git-annex hosting service. (Nexenta with ZFS is a cheap and reliable option until btrfs becomes stable in a year or five).--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 30 14:20:56 2011</span>-</div>----</div>-<div class="comment" id="comment-4d4ea398821389b4d01f3a74d3b83198">--<div class="comment-subject">--<a href="/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html#comment-4d4ea398821389b4d01f3a74d3b83198">Reported the issue to GHC</a>--</div>--<div class="inlinecontent">-<p>Finally got around to <a href="http://hackage.haskell.org/trac/ghc/ticket/5085#comment:7">report the issue to GHC tracker</a>.</p>--<p>Looks quite alike (at least to the haskell-illiterate person like me) to a highest-priority issue that's hanging right at the top of the list.-There are other similar reports, but they seem to be either related to PowerPC Macs, closed as invalid or due to needinfo inactivity.</p>--<p>Guess any further discussion belongs there, unless ghc developers will bounce it back.-Thanks a lot for your help, Joey, and for sharing a great thing that git-annex is.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://fraggod.pip.verisignlabs.com.pip.verisignlabs.com/">fraggod [pip.verisignlabs.com.pip.verisignlabs.com]</a>-</span>---&mdash; <span class="date">Thu Apr  7 09:44:36 2011</span>-</div>----</div>-<div class="comment" id="comment-68c57bf869119bda43903e8d7f2afad1">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-68c57bf869119bda43903e8d7f2afad1">comment 1</a>--</div>--<div class="inlinecontent">-<p>S3 doesn't support encryption at all, yet.</p>--<p>It certainly makes sense to use a different portion of the encrypted secret key for HMAC than is uses as the gpg symmetric encryption key.</p>--<p>The two keys used in HMAC would be the secret key and the key/value key for the content being stored.</p>--<p>There is a difficult problem with encrypting filenames in S3 buckets, and that is determining when some data in the bucket is unused for dropunused. I've considered two choices:</p>--<ol>-<li><p>gpg encrypt the filenames. This would allow dropunused to recover the original filenames, and is probably more robust encryption. But it would double the number of times gpg is run when moving content in/out, and to check for unused content, gpg would have to be run once for every item in the bucket, which just feels way excessive, even though it would not be prompting for a passphrase. Still, haven't ruled this out.</p></li>-<li><p>HMAC or other hash. To determine what data was unused the same hash and secret key would have to be used to hash all filenames currently used, and then that set of hashes could be interested with the set in the bucket. But then git-annex could only say "here are some opaque hashes of content that appears unused by anything in your current git repository, but there's no way, short of downloading it and examining it to tell what it is". (This could be improved by keeping a local mapping between filenames and S3 keys, but maintaining and committing that would bring pain of its own.)</p></li>-</ol>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 30 10:32:34 2011</span>-</div>----</div>-<div class="comment" id="comment-e39d544b340ab49567f29da5a6fd63fb">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-e39d544b340ab49567f29da5a6fd63fb">comment 15</a>--</div>--<div class="inlinecontent">-<p>I also ran into problems on a case-insensitive HFS+ file system, it seems.  I-tried following the instructions in comment 12:</p>--<pre><code>1. Remove everything in .git-annex besides uuid.log and trust.log-2. git annex fsck --fast-3. Commit-</code></pre>--<p>However, I still see upper and lower case directories in .git-annex.  Did I-misunderstand that they should all be lower case now?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=gernot&amp;do=goto">gernot</a>--</span>---&mdash; <span class="date">Sun Apr  3 11:41:00 2011</span>-</div>----</div>-<div class="comment" id="comment-307e0720671f3ca196ff9efd4072e650">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-307e0720671f3ca196ff9efd4072e650">comment 6</a>--</div>--<div class="inlinecontent">-<p>You're missing the sha1sum command, everything else is a followon error from that. Added a hint about this to <a href="./install.html">install</a>,-and in the next version configure will check for sha1sum.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  8 19:20:08 2011</span>-</div>----</div>-<div class="comment" id="comment-94c2975bfa60805cff0f1d382d62f431">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-94c2975bfa60805cff0f1d382d62f431">comment 3</a>--</div>--<div class="inlinecontent">-<p>Thanks for the reply @joey.</p>--<p>While it would certainly be possible for a bare repo to exist on my iRiver, the problem is that the music player uses the filesystem to organize files into directories like "Artist/Album/Track.ogg". So replacing that with "..../xx/yy/Track.ogg" would make it fairly difficult to browse my music collection and select the album/track I want to listen to :)</p>--<p>So unless I have the files physically organized like the symlinks, then it's probably not going to work very for that particular workflow. Smudge filters are interesting though. In the meantime, I'll look into rsyncing from another box which has the right filesystem layout onto my iRiver directly.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=fmarier&amp;do=goto">fmarier</a>--</span>---&mdash; <span class="date">Tue Apr  5 06:00:21 2011</span>-</div>----</div>-<div class="comment" id="comment-285d86391f73887d76ab8cff12c7f83e">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-285d86391f73887d76ab8cff12c7f83e">comment 8</a>--</div>--<div class="inlinecontent">-<p>I've posted about this on the git mailing list. It's possible that these bugs, which can be shown to affect things other than just git-annex, will be fixed in git.</p>--<p>I will wait a while to see. But am considering making git-annex use all-lowercase hash dirs for the log files. Maybe it could first look for .git-annex/aaaa/bbbb/foo.log, but also look for, read, and merge in any info from -.git-annex/Aa/Bb/foo.log. And always write to the new style filenames. This would avoid confusing git with changes to-mixed-case files, and avoid another massive transition.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 31 15:28:02 2011</span>-</div>----</div>-<div class="comment" id="comment-8f2226286e80b394f62e2ff6bb8c89c2">--<div class="comment-subject">--<a href="/bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.html#comment-8f2226286e80b394f62e2ff6bb8c89c2">comment 1</a>--</div>--<div class="inlinecontent">-They rely on git-ls-files to get a list of files that are checked into git, in order to tell what to unannex.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 21:40:50 2011</span>-</div>----</div>-<div class="comment" id="comment-b00bbc2dbe753760b58ce3fc07739c72">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-b00bbc2dbe753760b58ce3fc07739c72">comment 5</a>--</div>--<div class="inlinecontent">-By the way, the original bug reporter mentioned deleting .git/annex/journal. This is not recommended, and doing it during an upgrade can result in git-annex losing location tracking information. You should probably run <code>git annex fsck</code> or reset to the old git tree (and <code>git config annex.version 2</code>) and upgrade again.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 15:06:48 2011</span>-</div>----</div>-<div class="comment" id="comment-87da8fcd6f2d564e42aa7d7fdadd9feb">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-87da8fcd6f2d564e42aa7d7fdadd9feb">comment 10</a>--</div>--<div class="inlinecontent">-No, I don't need a copy of your repo now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr  1 12:11:52 2011</span>-</div>----</div>-<div class="comment" id="comment-01cc5ba37c77ef7ebd003c06d527acaa">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-01cc5ba37c77ef7ebd003c06d527acaa">comment 6</a>--</div>--<div class="inlinecontent">-OTOH, if encryption makes a bup backend more likely disregard the idea above ;)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 30 15:02:20 2011</span>-</div>----</div>-<div class="comment" id="comment-71d69eb9d4f8e1518d5d212f3c78eb9f">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-71d69eb9d4f8e1518d5d212f3c78eb9f">comment 5</a>--</div>--<div class="inlinecontent">-@ethan the reason that wouldn't work is because git would then see a file that was checked in and had its one line symlinkish content replaced with a huge binary blob. And git commit would try to commit that etc. The potential for foot-shooting is too high.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Jun 10 12:41:43 2011</span>-</div>----</div>-<div class="comment" id="comment-701e43ff72056bc810dc4c943f614f4b">--<div class="comment-subject">--<a href="/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.html#comment-701e43ff72056bc810dc4c943f614f4b">comment 4</a>--</div>--<div class="inlinecontent">-Although, if you really do want to shoot yourself in the foot, or know you have the old content, you can use <code>git-annex setkey</code>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 14 12:29:35 2011</span>-</div>----</div>-<div class="comment" id="comment-8896643b2d33addd248eb9e6fa89b726">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-8896643b2d33addd248eb9e6fa89b726">comment 8</a>--</div>--<div class="inlinecontent">-<p>What you're describing should be impossible; the error message shown can only occur if the object is present in the annex where <code>git-annex-shell recvkey</code> is run. So something strange is going on.</p>--<p>Try reproducing it by running on the remote system, <code>git-annex-shell recvkey /remote/repo.git &#036;key</code> .. if you can reproduce it, I guess the next thing to do will be to strace the command and see why it's thinking the object is there.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 14 20:09:34 2011</span>-</div>----</div>-<div class="comment" id="comment-20e87ffac62bb3483526fbc9a372f2da">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-20e87ffac62bb3483526fbc9a372f2da">comment 16</a>--</div>--<div class="inlinecontent">-Thanks.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon May 16 16:01:28 2011</span>-</div>----</div>-<div class="comment" id="comment-8a282c8f92412ddcca224bbd7b26321c">--<div class="comment-subject">--<a href="/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.html#comment-8a282c8f92412ddcca224bbd7b26321c">comment 2</a>--</div>--<div class="inlinecontent">-<p>I did not. Thanks :)</p>--<p>This still means that you can't re-inject a new version of a file unless you have the old one if you are using a SHA* backend, but that might be a corner case anyway.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 05:00:17 2011</span>-</div>----</div>-<div class="comment" id="comment-5ed89de9b1e43dbcdf68b7c90c5e7d38">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-5ed89de9b1e43dbcdf68b7c90c5e7d38">comment 15</a>--</div>--<div class="inlinecontent">-PS: Just to make this clear, I am using a custom alias for all my copying needs and thus didn't even see that I used --fast. :p--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun May 15 17:38:47 2011</span>-</div>----</div>-<div class="comment" id="comment-0d851a7a326fef41cb559ee66902b78d">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-0d851a7a326fef41cb559ee66902b78d">comment 3</a>--</div>--<div class="inlinecontent">-<p>I wouldn't say it's completly impossible for a WORM100 to work. It would just have the contract that the pair of mtime+100chars has to be unique for each unique piece of data.</p>--<p>But, I have yet to be convinced there's any point, since SHA1 exists.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  9 16:11:59 2011</span>-</div>----</div>-<div class="comment" id="comment-445c365cd2493bc6fcd7d0fa0ab276af">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-445c365cd2493bc6fcd7d0fa0ab276af">comment 3</a>--</div>--<div class="inlinecontent">-Interesting, I had not heard of variable symlinks before. AFAIK linux does not have them.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:03:19 2011</span>-</div>----</div>-<div class="comment" id="comment-e8e0195840dcaadb94e43bdc95a7e0f7">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-e8e0195840dcaadb94e43bdc95a7e0f7">comment 1</a>--</div>--<div class="inlinecontent">-One possible work around is to just create a loopback file system with a case sensitive filesystem. I think I might do that for anything that I really care about for now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 03:23:41 2011</span>-</div>----</div>-<div class="comment" id="comment-def03d1ca17f7b708366ff9d0eb053bd">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-def03d1ca17f7b708366ff9d0eb053bd">comment 13</a>--</div>--<div class="inlinecontent">-<p>The dtrace puzzlingly does not have the same errors shown above, but a set of mostly new errors. I don't know what to make of that.</p>--<blockquote>-  <p>git-annex: git-annex/.t/repo/.git/hooks/pre-commit: fileAccess: permission denied (Operation not permitted)</p>-</blockquote>--<p>This seems to be caused by it setting the execute bit on the file. I don't know why that would fail; it's just written the file and renamed it into place so clearly should be able to write to it.</p>--<blockquote>-  <p>was able to modify annexed file's sha1foo content</p>-</blockquote>--<p>This also suggests something breaking with permissions.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 17:59:47 2011</span>-</div>----</div>-<div class="comment" id="comment-daedab7bd9d5244be3c0c18e1b96a13d">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-daedab7bd9d5244be3c0c18e1b96a13d">comment 1</a>--</div>--<div class="inlinecontent">-<p>Hmm.. is utimensat available at all?</p>--<p>I've committed an update that may convince at least some compilers to expose this newer POSIX stuff. I don't know if it will help, please let me know.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 12:07:26 2011</span>-</div>----</div>-<div class="comment" id="comment-439ffa5ce5a9aa2b097b03a6d0894941">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-439ffa5ce5a9aa2b097b03a6d0894941">comment 3</a>--</div>--<div class="inlinecontent">-Sometimes, I might want to fill up the disk as much as possible. Thus, a warning is preferable to erroring out too early, imo -- Richard--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:40:56 2011</span>-</div>----</div>-<div class="comment" id="comment-bfd03671b8cdf4ec5979ed7ec96d952e">--<div class="comment-subject">--<a href="/bugs/annex_unannex__47__uninit_should_handle_copies.html#comment-bfd03671b8cdf4ec5979ed7ec96d952e">comment 1</a>--</div>--<div class="inlinecontent">-<p>You convince me for unannex, but isn't the goal of uninit to revert all annex operations? In the current state, a clean revert is not possible (because of the broken symlinks after uninit). Instead of copying, using hard links is out of question?</p>--<p>For my needs, is the command "git annex unlock ." (from the root of the repo) a correct workaround?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Mon Jul  4 12:57:25 2011</span>-</div>----</div>-<div class="comment" id="comment-26f727372f789fac6616708ee71062bf">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-26f727372f789fac6616708ee71062bf">comment 6</a>--</div>--<div class="inlinecontent">-Well, focus on a specific file that exhibits the problem. What does <code>git annex whereis</code> say about it? Is the content actually present in annex/objects/ on the bare repository? Does that contradict whereis?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 14 15:23:45 2011</span>-</div>----</div>-<div class="comment" id="comment-fdbb4c81bf2a27250c4f5fe2c3ee9511">--<div class="comment-subject">--<a href="/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html#comment-fdbb4c81bf2a27250c4f5fe2c3ee9511">comment 4</a>--</div>--<div class="inlinecontent">-<p>Nice work on the bisection. It's obviously a compiler bug. Having two test cases that differ in only as trivial and innocous a commit as 828a84ba3341d4b7a84292d8b9002a8095dd2382 might help a GHC developer track it down.</p>--<p>We should probably forward this as a GHC bug. I hope you can find a different version or build of GHC to build git-annex with.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:06:34 2011</span>-</div>----</div>-<div class="comment" id="comment-21fdd436aa72bd764ebe8a1c600d8e30">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-21fdd436aa72bd764ebe8a1c600d8e30">comment 5</a>--</div>--<div class="inlinecontent">-<p>Ah, that gave me a good clue, my system just got pretty confused with a mixture of quickcheck and testpack installs. Would it be possible to put up a list of versions of the software you are using on your development environment? (at least the minimum tested version) </p>--<p>I guess it shouldn't matter to most users who are going to rely on packagers to sort these dependancy issues, but it's nice to know. </p>--<p>Anyway, the tests build now, and they seem to fail on my (rather messy) install of haskell platform + ghc 6.12 on osx 10.6.6.</p>--<pre>-&lt; output that passed some tests &gt;-Testing 1:blackbox:0:git-annex init-Testing 1:blackbox:1:git-annex add:0-Testing 1:blackbox:1:git-annex add:1-Cases: 30  Tried: 9  Errors: 0  Failures: 0test: sha1sum: executeFile: does not exist (No such file or directory)-  git-annex: : hGetLine: end of file-### Failure in: 1:blackbox:1:git-annex add:1-add with SHA1 failed-Testing 1:blackbox:2:git-annex setkey/fromkey-Cases: 30  Tried: 10  Errors: 0  Failures: 1(checksum...) test: sha1sum: executeFile: does not exist (No such file or directory)-### Error in:   1:blackbox:2:git-annex setkey/fromkey-: hGetLine: end of file-Testing 1:blackbox:3:git-annex unannex:0:no content-Cases: 30  Tried: 11  Errors: 1  Failures: 1chmod: -R: No such file or directory-chmod: -R: No such file or directory-Testing 1:blackbox:3:git-annex unannex:1:with content-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes-Cases: 30  Tried: 13  Errors: 1  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:0:no remotes-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:4:git-annex drop:1:with remote-Cases: 30  Tried: 14  Errors: 2  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:1:with remote-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:4:git-annex drop:2:untrusted remote-Cases: 30  Tried: 15  Errors: 3  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:2:untrusted remote-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:5:git-annex get-Cases: 30  Tried: 16  Errors: 4  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:5:git-annex get-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:6:git-annex move-Cases: 30  Tried: 17  Errors: 5  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:6:git-annex move-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:7:git-annex copy-Cases: 30  Tried: 18  Errors: 6  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:7:git-annex copy-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:8:git-annex unlock/lock-Cases: 30  Tried: 19  Errors: 7  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:8:git-annex unlock/lock-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:9:git-annex edit/commit:0-Cases: 30  Tried: 20  Errors: 8  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:9:git-annex edit/commit:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:9:git-annex edit/commit:1-Cases: 30  Tried: 21  Errors: 9  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:9:git-annex edit/commit:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:10:git-annex fix-Cases: 30  Tried: 22  Errors: 10  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:10:git-annex fix-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:11:git-annex trust/untrust/semitrust-Cases: 30  Tried: 23  Errors: 11  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:11:git-annex trust/untrust/semitrust-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:0-Cases: 30  Tried: 24  Errors: 12  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:1-Cases: 30  Tried: 25  Errors: 13  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:2-Cases: 30  Tried: 26  Errors: 14  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:2-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:13:git-annex migrate:0-Cases: 30  Tried: 27  Errors: 15  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:13:git-annex migrate:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:13:git-annex migrate:1-Cases: 30  Tried: 28  Errors: 16  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:13:git-annex migrate:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:14:git-annex unused/dropunused-Cases: 30  Tried: 29  Errors: 17  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:14:git-annex unused/dropunused-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Cases: 30  Tried: 30  Errors: 18  Failures: 2-chmod: -R: No such file or directory-test: .t/repo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-make: *** [test] Error 1-</pre>--<p>I assumed that since the tests built, then running them shouldn't be a problem. It looks like some argument isn't being passed about for the location of the .t directory that gets created. I will check the dependancies on my system again.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Feb  8 15:56:55 2011</span>-</div>----</div>-<div class="comment" id="comment-eb8a38cb5d1181db023aa12f0b9837ca">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-eb8a38cb5d1181db023aa12f0b9837ca">use mini-branches</a>--</div>--<div class="inlinecontent">-<p>if you go for the two-commits version, small intermediate branches (or git-commit-tree) could be used to create a tree like this:</p>--<pre><code>*   commit 106eef2-|\  Merge: 436e46f 9395665-| | -| |     the main commit-| |   -| * commit 9395665-|/  -|       intermediate move-|  -* commit 436e46f-| -|     ...-</code></pre>--<p>while the first commit (436e46f) has a "<code>/subdir/foo → ../.git-annex/where_foo_is</code>", the intermediate (9395665) has "<code>/subdir/deeper/foo → ../.git-annex/where_foo_is</code>", and the inal commit (106eef2) has "<code>/subdir/deeper/foo → ../../.git-annex/where_foo_is</code>".</p>--<p><code>--follow</code> uses the intermediate commit to find the history, but the intermediate commit would neither show up in <code>git log --first-parent</code> nor affect <code>git diff HEAD^..</code> &amp; co. (there could still be confusion over <code>git show</code>, though).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Mar  9 19:47:48 2011</span>-</div>----</div>-<div class="comment" id="comment-4db4ccf15bc3c53f0d51e1464e96b5d9">--<div class="comment-subject">--<a href="/bugs/upgrade_left_untracked_.git-annex__47____42___directories.html#comment-4db4ccf15bc3c53f0d51e1464e96b5d9">comment 1</a>--</div>--<div class="inlinecontent">-<p>I'm not sure how this happened, as far as I can see, and based on my testing, <code>git annex upgrade</code> does stage the location log files. OTOH, I vaguely rememeber needing to stage some of them when I was doing my own upgrades, but that was a while ago, and I don't remember the details.</p>--<p>Your upgrade seems to have gone ok from the file lists you sent, so you can just: <code>git add .git-annex; git commit</code></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 22:26:20 2011</span>-</div>----</div>-<div class="comment" id="comment-9235f7ce139de314e4e411e36555a308">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-9235f7ce139de314e4e411e36555a308">comment 9</a>--</div>--<div class="inlinecontent">-I'm was running git 1.7.4.1 at the time when I came across it, I have just upgraded to 1.7.4.2. I've also just moved to using a loopback fs for the stuff i care about. Do you still want a repo that exhibits the problem (excluding the .git/annex data) ??? I'm also not sure if 1.7.4.2 has corrected the problem yet as I haven't done much with my repos since. I suspect just making all the .git-annex hashed directories seems to be lower case might be better in the long run. --</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Thu Mar 31 17:32:10 2011</span>-</div>----</div>-<div class="comment" id="comment-9514c99a042ad7c4f7bd4478321066e7">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-9514c99a042ad7c4f7bd4478321066e7">Use variable symlinks, relative to the repo&#x27;s root ?</a>--</div>--<div class="inlinecontent">-<p>It all boils down to the fact that the path to a relative symlink's target is determined relative to the symlink itself.</p>--<p>Now, if we define the symlink's target relative to the git repo's root (eg. using the $GIT_DIR environment variable, which can be a relative or absolute path itself), this unfortunately results in an absolute symlink, which would -for obvious reasons- only be usable locally:</p>--<pre><code>user@host:~&#036; mkdir -p tmp/{.git/annex,somefolder}-user@host:~&#036; export GIT_DIR=~/tmp-user@host:~&#036; touch &#036;GIT_DIR/.git/annex/realfile-user@host:~&#036; ln -s &#036;GIT_DIR/.git/annex/realfile &#036;GIT_DIR/somefolder/file-user@host:~&#036; ls -al &#036;GIT_DIR/somefolder/-total 12-drwxr-x--- 2 user group 4096 2011-03-10 16:54 .-drwxr-x--- 4 user group 4096 2011-03-10 16:53 ..-lrwxrwxrwx 1 user group   33 2011-03-10 16:54 file -&gt; /home/user/tmp/.git/annex/realfile-user@host:~&#036;-</code></pre>--<p>So, what we need is the ability to record the actual variable name (instead of it's value) in our symlinks.</p>--<p>It <em>is</em> possible, using <a href="http://en.wikipedia.org/wiki/Symbolic_link#Variable_symbolic_links">variable/variant symlinks</a>, yet I'm unsure as to whether or not this is available on Linux systems, and even if it is, it would introduce compatibility issues in multi-OS environments.</p>--<p>Thoughts on this?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Thu Mar 10 12:50:28 2011</span>-</div>----</div>-<div class="comment" id="comment-bad57d002c788add97aaf3729946800d">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-bad57d002c788add97aaf3729946800d">comment 4</a>--</div>--<div class="inlinecontent">-<p>Ok, well it looks like it isn't doing anything useful at all.</p>--<pre>-jtang@x00:~/develop/git-annex $ make StatFS.hs                                                                                                                                    -hsc2hs StatFS.hsc-perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs-jtang@x00:~/develop/git-annex $ ghci StatFS.hs                                                                                                                                    -GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-Loading package ffi-1.0 ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.7 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})-*StatFS&gt; s &lt;- getFileSystemStats "/"-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})-*StatFS&gt; -</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:02:34 2011</span>-</div>----</div>-<div class="comment" id="comment-8826afeb62ea20bdd529a412f38ef31d">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-8826afeb62ea20bdd529a412f38ef31d">comment 12</a>--</div>--<div class="inlinecontent">-Also, you can delete <code>.git-annex/??</code> if you want to, then running <code>git annex fsck --fast</code> in each of your clones would regenerate the data using only the lower-case hash directories.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 13:58:24 2011</span>-</div>----</div>-<div class="comment" id="comment-0044ff62a2e9fdba1ab02c4bd138f082">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-0044ff62a2e9fdba1ab02c4bd138f082">comment 13</a>--</div>--<div class="inlinecontent">-Ok, thanks for the fix. It seems the fix isn't too reliable with my repos, I get different numbers of  "** No known copies of..." in the various cloned repos that I have. After all the "messing" that I have done to my repos I think git-annex has gotten very confused. I will just leave things as they are and let git-annex slowly migrate over to the new format or re-clone from a linux source and see how things go. I will report back on this issue in abit after I use it more to see.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 03:43:37 2011</span>-</div>----</div>-<div class="comment" id="comment-4187c9f71ba54ff67060492279ccf209">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-4187c9f71ba54ff67060492279ccf209">comment 11</a>--</div>--<div class="inlinecontent">-I got dtruss to give me a trace, the output is quite big to post here (~560kb gzip'd), do you mind if I emailed it or posted it somewhere else for you?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Feb  9 15:35:47 2011</span>-</div>----</div>-<div class="comment" id="comment-0b6a450075d7ccda20aea6e0df6a0fd6">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-0b6a450075d7ccda20aea6e0df6a0fd6">comment 3</a>--</div>--<div class="inlinecontent">-<p>Yes, encrypting the symmetric key with users' regular gpg keys is the plan.</p>--<p>I don't think that encryption of content in a git annex remote makes much sense; the filenames obviously cannot be encrypted there. It's more likely that the same encryption would get used for a bup remote, or with the <a href="./special_remotes/directory.html">directory</a> remote I threw in today.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 30 14:15:18 2011</span>-</div>----</div>-<div class="comment" id="comment-eaa44baeb3b9ee4f4bcc22da1a47cc24">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-eaa44baeb3b9ee4f4bcc22da1a47cc24">comment 1</a>--</div>--<div class="inlinecontent">-Well if it happens again why don't you use <code>ps</code> or <code>strace</code> to see what it's doing.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Jul  4 18:58:46 2011</span>-</div>----</div>-<div class="comment" id="comment-4691120258cc4d52f639385df17d3392">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-4691120258cc4d52f639385df17d3392">comment 3</a>--</div>--<div class="inlinecontent">-<p>As my comment from work is stuck in moderation:</p>--<p>I ran this twice:</p>--<pre><code>git pull &amp;&amp; git annex add . &amp;&amp; git annex copy . --to &lt;remote&gt; --fast --quiet &amp;&amp; git commit -a -m "&#036;HOST &#036;(date +%F--%H-%M-%S-%Z)" &amp;&amp; git push-</code></pre>--<p>but nothing changed</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat May 14 05:06:54 2011</span>-</div>----</div>-<div class="comment" id="comment-6ee8a28402ed3112d5beab865a359ea3">--<div class="comment-subject">--<a href="/bugs/upgrade_left_untracked_.git-annex__47____42___directories.html#comment-6ee8a28402ed3112d5beab865a359ea3">comment 2</a>--</div>--<div class="inlinecontent">-<p>'git add .git-annex' didn't do anything.  That's when I noticed that this-repository is on a case-insensitive HFS+ file system.</p>--<p>So, if I get this right it's not a new bug, but similar to this situation:-<a href="./bugs/git-annex_directory_hashing_problems_on_osx.html">git-annex directory hashing problems on osx</a></p>--<p>Assuming that it was the file system's fault, I went ahead and upgraded yet-another clone.  That one (on an ext3 file system) had neither staged changes-nor left-over untracked files.  Everything seems to just have fallen right into-place.  Is that possible or still weird?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=gernot&amp;do=goto">gernot</a>--</span>---&mdash; <span class="date">Sun Apr  3 11:35:52 2011</span>-</div>----</div>-<div class="comment" id="comment-656ae44d8b76126e1504c44c2aa521ba">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-656ae44d8b76126e1504c44c2aa521ba">comment 4</a>--</div>--<div class="inlinecontent">-<p>Hmm. Old versions may have forgotten to git add a .git-annex location log file when recovering content with fsck. That could be another reason things are out of sync.</p>--<p>But I'm not clear on which repo is trying to copy files to which.</p>--<p>(NB: If the files were recovered on a bare git repo, fsck cannot update the location log there, which could also explain this.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 14 12:13:58 2011</span>-</div>----</div>-<div class="comment" id="comment-2a35c72b34f53e9cfa09a46cbfa07f3c">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-2a35c72b34f53e9cfa09a46cbfa07f3c">comment 3</a>--</div>--<div class="inlinecontent">-<p>I've seen this kind of piping stall that is unblocked by strace before. It can vary with versions of GHC, so it would be good to know what version built git-annex (and on what OS version). I filed a bug report upstream before at <a href="http://bugs.debian.org/624389">http://bugs.debian.org/624389</a>.</p>--<p>I really need a full strace -f from the top, or at least a complete <code>strace -o log</code> of git-annex from one hang through to another hang. The strace you pastebinned does not seem complete. If I can work out which specific git command is being written to when it hangs I can lift the writing out into a separate thread or process to fix it.</p>--<p>@pavel, you mentioned three defunct git processes, and then showed ps output for 3 git processes. Were there 6 git processes in total? And then when you ran it again you said there were no defunct gits -- where the other 3 git processes running once again?</p>--<p>As best I can make out from the (apparently) running git processes, it seems like the journal files for the upgrade had all been written, and the hang occurred when staging them all into the index in preparation for a commit. I have committed a change that lifts the code that does that write out into a new process, which, if I am guessing right on the limited info I have, will avoid the hang.</p>--<p>However, since I can't reproduce it, even when I put 200 thousand files in the journal and have git-annex process them, I can't be sure.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 13:31:22 2011</span>-</div>----</div>-<div class="comment" id="comment-d7303b35a92853295d37b2f0a2db96bc">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-d7303b35a92853295d37b2f0a2db96bc">comment 6</a>--</div>--<div class="inlinecontent">-<p>ok, pulling the latest master and building on OSX now does this...</p>--<pre>-ghc -O2 -Wall -ignore-package monads-fd --make git-annex-[ 1 of 63] Compiling Touch            ( Touch.hs, Touch.o )--Touch.hsc:24:0:-    The type signature for `touchBoth' lacks an accompanying binding--Touch.hsc:27:26: Not in scope: `touchBoth'-make: *** [git-annex] Error 1-</pre>--<p>changing the #if 0 to 1 gives this...</p>--<pre>-ghc -O2 -Wall -ignore-package monads-fd --make git-annex-[ 1 of 63] Compiling Touch            ( Touch.hs, Touch.o )--Touch.hsc:95:43:-    Couldn't match expected type `CLong' against inferred type `CTime'-    In the second argument of `(\ hsc_ptr-                                    -&gt; pokeByteOff hsc_ptr 0)', namely-        `(sec :: CLong)'-    In a stmt of a 'do' expression:-        (\ hsc_ptr -&gt; pokeByteOff hsc_ptr 0) ptr (sec :: CLong)-    In the expression:-        do { (\ hsc_ptr -&gt; pokeByteOff hsc_ptr 0) ptr (sec :: CLong);-             (\ hsc_ptr -&gt; pokeByteOff hsc_ptr 4) ptr (0 :: CLong) }-make: *** [git-annex] Error 1-</pre>--<p>it seems that commit 6634b6a6b84a924f6f6059b5bea61f449d056eee has broken support for OSX.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Mar 20 16:48:41 2011</span>-</div>----</div>-<div class="comment" id="comment-8d6e5b9caecdf1ffb1f6c90e1ec3f526">--<div class="comment-subject">--<a href="/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html#comment-8d6e5b9caecdf1ffb1f6c90e1ec3f526">comment 1</a>--</div>--<div class="inlinecontent">-And, maybe, a way to start a fsck from remote? At least when the other side is a ssh or git annex shell, this would work.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Jun 13 12:58:52 2011</span>-</div>----</div>-<div class="comment" id="comment-a0686284789a15687de5f3bf5ca72b72">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-a0686284789a15687de5f3bf5ca72b72">comment 2</a>--</div>--<div class="inlinecontent">-There's a simple test -- just configure annex.diskreserve to be say, 10 megabytes less than the total free space on your disk. Then try to git annex get a 11 mb file, and a 9 mb file. :)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:05:12 2011</span>-</div>----</div>-<div class="comment" id="comment-b7fb23cf28d5f5f28d1283ecfb9ef969">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-b7fb23cf28d5f5f28d1283ecfb9ef969">comment 1</a>--</div>--<div class="inlinecontent">-<p>Just did some minor digging around and checking, this seems to satisfy the compilers etc... I have yet to confirm that it <em>really</em> is working as expected. Also it might be better to check for a darwin operating system instead of apple I think, though I don't know of any one really using a pure darwin OS. But for now it works (I think)</p>--<pre>-From fbfe27c2e19906ac02e3673b91bffa920f6dae5d Mon Sep 17 00:00:00 2001-From: Jimmy Tang -Date: Wed, 23 Mar 2011 08:15:39 +0000-Subject: [PATCH] Define (__APPLE__) in StatFS--At least on OSX 10.6.6 it appears to have the same defintions as-FreeBSD. The build process doesn't complain and the code is enabled,-this needs to be tested and checked more.----- StatFS.hsc |    4 ++--- 1 files changed, 2 insertions(+), 2 deletions(-)--diff --git a/StatFS.hsc b/StatFS.hsc-index 8b453dc..45fd7e4 100644---- a/StatFS.hsc-+++ b/StatFS.hsc-@@ -53,7 +53,7 @@ import Foreign.C.String- import Data.ByteString (useAsCString)- import Data.ByteString.Char8 (pack)---#if defined (__FreeBSD__)-+#if defined (__FreeBSD__) || defined(__APPLE__)- # include - # include - #else-@@ -84,7 +84,7 @@ data CStatfs- #ifdef UNKNOWN- #warning free space checking code not available for this OS- #else--#if defined(__FreeBSD__)-+#if defined(__FreeBSD__) || defined(__APPLE__)- foreign import ccall unsafe "sys/mount.h statfs"- #else- foreign import ccall unsafe "sys/vfs.h statfs64"--- -1.7.4.1-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 04:21:30 2011</span>-</div>----</div>-<div class="comment" id="comment-5f1ea7c6a5c816a6146a97a62f582656">--<div class="comment-subject">--<a href="/bugs/Displayed_copy_speed_is_wrong.html#comment-5f1ea7c6a5c816a6146a97a62f582656">comment 1</a>--</div>--<div class="inlinecontent">-That is displayed by rsync. It's not unheard of for rsync to resume a transfer and display extremely high speeds.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 21:37:29 2011</span>-</div>----</div>-<div class="comment" id="comment-8ec817274ca172b113f9d5b3a8657704">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-8ec817274ca172b113f9d5b3a8657704">comment 5</a>--</div>--<div class="inlinecontent">-This is brain-storming only so the idea might be crap, but a branch could keep encrypted filenames while master keeps the real deal. This might fit into the whole scheme just nicely or break future stuff in a dozen places, I am not really sure yet. But at least I can't forget the idea, now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 30 14:59:19 2011</span>-</div>----</div>-<div class="comment" id="comment-9953a37609e6e059e2f7cadb6bea61d5">--<div class="comment-subject">--<a href="/bugs/git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html#comment-9953a37609e6e059e2f7cadb6bea61d5">Bisect results</a>--</div>--<div class="inlinecontent">-<p>Completed git-bisect twice, getting roughly the same results:</p>--<pre><code>828a84ba3341d4b7a84292d8b9002a8095dd2382 is the first bad commit-commit 828a84ba3341d4b7a84292d8b9002a8095dd2382-Author: Joey Hess &lt;joey@kitenet.net&gt;-Date:   Sat Mar 19 14:33:24 2011 -0400--    Add version command to show git-annex version as well as repository version information.--:040000 040000 ed849b7b6e9b177d6887ecebd6a0f146357824f3 1c98699dfd3fc3a3e2ce6b55150c4ef917de96e9 M      Command-:100644 100644 b9c22bdfb403b0bdb1999411ccfd34e934f45f5c adf07e5b3e6260b296c982a01a73116b8a9a023c M      GitAnnex.hs-:100644 100644 76dd156f83f3d757e1c20c80d689d24d0c533e16 d201cc73edb31f833b6d00edcbe4cf3f48eaecb0 M      Upgrade.hs-:100644 100644 5f414e93b84589473af5b093381694090c278e50 d4a58d77a29a6a02daf13cec0df08b5aab74f65e M      Version.hs-:100644 100644 f5c2956488a7afafd20374873d79579fb09b1677 f8cd577e992d38c7ec1438ce5c141eb0eb410243 M      configure.hs-:040000 040000 f9b7295e997c0a5b1dda352f151417564458bd6e a30008475c1889f4fd8d60d4d9c982563380a692 M      debian-:040000 040000 9d87a5d8b9b9fe7b722df303252ffd5760d66f75 08834f61a10d36651b3cdcc38389f45991acdf5e M      doc-</code></pre>--<p>contents of final refs/bisect:</p>--<pre><code>bad (828a84ba3341d4b7a84292d8b9002a8095dd2382)-good-33cb114be5135ce02671d8ce80440d40e97ca824-good-942480c47f69e13cf053b8f50c98c2ce4eaa256e-good-ca48255495e1b8ef4bda5f7f019c482d2a59b431-</code></pre>--<p>"roughly" because second bisect gave two commits as a result, failing to build one of them (missing .o file on link, guess it's because of -j4 and bad deps in that version's build system):</p>--<pre><code>There are only 'skip'ped commits left to test.-The first bad commit could be any of:-828a84ba3341d4b7a84292d8b9002a8095dd2382-5022a69e45a073046a2b14b6a4e798910c920ee9-We cannot bisect more!-</code></pre>--<p>Also noticed that "git-annex-shell ..." command succeeds if ran as root user, while failing from unprivileged one.-There are no permission/access errors in "strace -f git-annex-shell ...", so I guess it could be some bug in the GHC indeed.</p>--<p>JIC, logged a whole second bisect operation.-Resulting log: <a href="http://fraggod.net/static/share/git-annex-bisect.log">http://fraggod.net/static/share/git-annex-bisect.log</a></p>--<p>Bisect script I've used (git-annex-shell dies with error code 134 - SIGABRT on GHC error):</p>--<pre><code>res=-while true; do-  if [[ -n "&#036;res" ]]; then-    cd /var/tmp/paludis/build/dev-scm-git-annex-scm.bak/work/git-annex-scm-    echo "---=== BISECT (&#036;res) ===---"; git bisect "&#036;res" 2&gt;&amp;1; echo '---=== /BISECT ===---'-    cd-    rm -Rf /var/tmp/paludis/build/dev-scm-git-annex-scm-    cp -a --reflink=auto /var/tmp/paludis/build/dev-scm-git-annex-scm{.bak,}-    chown -R paludisbuild: /var/tmp/paludis/build/dev-scm-git-annex-scm-  fi-  res=-  cave resolve -zx1 git-annex --skip-until-phase configure || res=skip-  if [[ -z "&#036;res" ]]; then-    cd /remote/path-    sudo -u user git-annex-shell 'sendkey' '/remote/path' 'SHA1-s6654080--abd8edec20648ade69351d68ae1c64c8074a6f0b' '--' rsync --server --sender -vpe.Lsf --inplace . ''-    if [[ &#036;? -eq 134 ]]; then res=bad; else res=good; fi-    cd-  fi-done 2&gt;&amp;1 | tee ~/git-annex-bisect.log-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://fraggod.pip.verisignlabs.com.pip.verisignlabs.com/">fraggod [pip.verisignlabs.com.pip.verisignlabs.com]</a>-</span>---&mdash; <span class="date">Sun Apr  3 02:22:15 2011</span>-</div>----</div>-<div class="comment" id="comment-167c1c6fbb4ac181b57c8f49309bdd80">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-167c1c6fbb4ac181b57c8f49309bdd80">comment 19</a>--</div>--<div class="inlinecontent">-Git does not need to be upgraded. Git-annex needs to be upgraded to git rev 616e6f8a840ef4d99632d12a2e7ea15c3cfb1805 or newer, on all machines.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Apr  3 15:53:44 2011</span>-</div>----</div>-<div class="comment" id="comment-058bd99c9d4e78a25fbc2520487417dd">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-058bd99c9d4e78a25fbc2520487417dd">comment 16</a>--</div>--<div class="inlinecontent">-<p>I think the correct steps should be, make a backup first :) then ...</p>--<ol>-<li>git pull  # update your clone, and commit everything so you don't lose anything</li>-<li>git annex fsck --fast # check the repo first, just in case</li>-<li>rm -rf .git-annex/?? # remove the old metadata</li>-<li>git annex fsck --fast # get git annex to regenerate it all</li>-<li>push your changes out to your other repos, you will need to make sure git-annex is updated everywhere if there are remotes in your setup.</li>-</ol>--<p>I eventually migrated all of my own annex'd repos and I no longer have the old hashed directories but the new ones in the form</p>--<pre><code>.git/annex/aaa/bbb/foo.log-</code></pre>--<p>I did lose some tracking information but not data (as far as I can see for now), but that was quickly fixed by pushing and pulling to my bare repo which tracks most of my data.</p>--<p>I also found that it worked a bit more reliably for me on the copies of repos that were located on case sensitive filesystems, but I guess that was expected.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:02:33 2011</span>-</div>----</div>-<div class="comment" id="comment-d5921f9f232ebef1fbdc20fd80b82d15">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-d5921f9f232ebef1fbdc20fd80b82d15">comment 7</a>--</div>--<div class="inlinecontent">-<p>git 1.7.4 does not make things better. With it, if I add first "X/foo" and then "x/bar", it commits "X/bar".</p>--<p>That will <em>certianly</em> cause problems when interoperating with a repo clone on a case-sensative filesystem, since-git-annex there will not see the location log that git committed to the wrong case directory.</p>--<p>It's possible there is some interoperability problem when pulling from linux like you did, onto HFS+, too. I am not quite sure. Ah, I did find one.. if I clone the repo with "X/foo" in it to a case-sensative filesystem, and add a "x/foo" there,-and pull that commit back to HFS+, git says:</p>--<pre>- * branch            master     -&gt; FETCH_HEAD-Updating 8754149..e3d4640-Fast-forward- x/foo |    1 +- 1 files changed, 1 insertions(+), 0 deletions(-)- create mode 100644 x/foo-joey@gnu:/mnt/r4&gt;ls-X/-joey@gnu:/mnt/r4&gt;git st-# On branch master-# Changes not staged for commit:-#   (use "git add ..." to update what will be committed)-#   (use "git checkout -- ..." to discard changes in working directory--#   modified:   X/foo-</pre>--<p>Aha -- that lets me reproduce your problem with the same file being staged twice with different capitalizations, too:</p>--<pre>-joey@gnu:/mnt/r4&gt;echo haaai &gt;| x/foo-joey@gnu:/mnt/r4&gt;git st-# On branch master-# Changes not staged for commit:-#   (use "git add ..." to update what will be committed)-#   (use "git checkout -- ..." to discard changes in working directory)-#-#   modified:   X/bar-#   modified:   X/foo-#   modified:   x/foo-#-joey@gnu:/mnt/r4&gt;git commit -a-fatal: Will not add file alias 'X/Bar' ('x/Bar' already exists in index)-</pre>--<p>And modified files that git refuses to commit, which entirely explains <a href="./bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.html">git-annex has issues with git when staging&#47;commiting logs</a>.</p>--<pre>-joey@gnu:/mnt/r4&gt;git add X/foo-joey@gnu:/mnt/r4&gt;git commit X/foo-# On branch master-# Changes not staged for commit:-#   (use "git add ..." to update what will be committed)-#   (use "git checkout -- ..." to discard changes in working directory)-#-#   modified:   X/bar-#   modified:   X/foo-#-no changes added to commit (use "git add" and/or "git commit -a")-</pre>--<p>I think git is frankly, buggy. It seems I will need to work around this by stopping using mixed case hashing for location logs.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 31 15:08:01 2011</span>-</div>----</div>-<div class="comment" id="comment-f2b50c0b35555b5533dcc86c6ebf4c5e">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-f2b50c0b35555b5533dcc86c6ebf4c5e">comment 8</a>--</div>--<div class="inlinecontent">-Just tried building both of the code paths, and they seem to build and somewhat function on OSX. I have yet to confirm the functionality is working correctly, but so far it's looking good. (I somewhat care less about the utimes/mtimes of my files since I care more about the content :) )--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 21 04:52:18 2011</span>-</div>----</div>-<div class="comment" id="comment-fba5cc443040c137fdc1f0e37079bf34">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-fba5cc443040c137fdc1f0e37079bf34">maybe killed another osx bug in the test.</a>--</div>--<div class="inlinecontent">-<p>I think I have figured out why </p>--<pre><code>### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-</code></pre>--<p>It goes back to the this piece of code (in test.hs)</p>--<pre><code>copyrepo :: FilePath -&gt; FilePath -&gt; IO FilePath-copyrepo old new = do-        cleanup new-        ensuretmpdir-        Utility.boolSystem "cp" ["-pr", old, new] @? "cp -pr failed"-</code></pre>--<p>It seems that on OSX it does not preserve the symbolic link information, basically cp is not gnu cp on OSX, doing a "cp -a SOURCE DEST" seem's to the right thing on OSX. I tried it out on my archlinux workstation by replacing <em>-pr</em> with just <em>-a</em> and all the tests passed on archlinux.</p>--<p>I'm not sure what the implications would be with changing the test with changing the cp command.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 11:12:10 2011</span>-</div>----</div>-<div class="comment" id="comment-e73e85f136ef33aa0747714ccb883223">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-e73e85f136ef33aa0747714ccb883223">Brainfart</a>--</div>--<div class="inlinecontent">-<p>Haven't given these any serious thought (which will become apparent in a moment) but hoping they will give birth to some less retarded ideas:</p>--<hr />--<h3>Bait'n'switch</h3>--<ul>-<li>pre-commit: Replace all staged symlinks (when pointing to annexed files) with plaintext files containing the key of their respective annexed content, re-stage, and add their paths (relative to repo root) to .gitignore.</li>-<li>post-commit: Replace the plaintext files with (git annex fix'ed) symlinks.</li>-</ul>--<p>In doing so, the blobs to be committed can remain unaltered, irrespective of their related files' depth in the directory hierarchy.</p>--<p>To prevent git from reporting ALL annexed files as unstaged changes after running post-commit hook, their paths would need to be added to .gitignore.</p>--<p>This wouldn't cause any issues when adding files, very little when modifying files (would need some alterations to "git annex unlock"), BUT would make git totally oblivious to removals...</p>--<hr />--<h3>Manifest-based (re)population</h3>--<ul>-<li>Keep a manifest of all annexed files (key + relative path)</li>-<li>DON'T track the symlinks (.gitignore)</li>-<li>Populate/update the directory structure using a post-commit hook.</li>-</ul>--<p>... thus circumventing the issue entirely, yet diffstats (et al.) would be rather uninformative.</p>--<hr />--<p><strong><em>Wide open to suggestions, criticism, mocking laughter and finger-pointing :)</em></strong></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Sun Mar 20 16:11:27 2011</span>-</div>----</div>-<div class="comment" id="comment-d47a1b133c62d957592d170f936828fa">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-d47a1b133c62d957592d170f936828fa">comment 4</a>--</div>--<div class="inlinecontent">-<p>I doubt that git-annex can be used with QuickCheck 1.2.0. The QuickCheck I've tested it with is 2.1.0.3 actually.</p>--<p>I suspect you have an old version of the TestPack haskell library on your system, that is linked against QuickCheck 1.2.0. Git-annex has been tested with TestPack 2.0.0, which uses QuickCheck 2.x.</p>--<p>In any case, you don't have to run 'make test' to build git-annex, and my comments above should make the main program compile, I expect.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  8 15:00:14 2011</span>-</div>----</div>-<div class="comment" id="comment-52947b6595dc95dab047a81a473ea0d0">--<div class="comment-subject">--<a href="/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.html#comment-52947b6595dc95dab047a81a473ea0d0">comment 2</a>--</div>--<div class="inlinecontent">-<p>After mulling this over, I think actually encrypting the filenames is preferable.</p>--<p>Did you consider encrypting the symmetric key with an asymmetric one? That's what TrueCrypt etc are using to allow different people access to a shared volume. This has the added benefit that you could, potentially, add new keys for data that new people should have access to while making access to old data impossible. Or keys per subdirectory, or, or, or.</p>--<p>As an aside, could the same mechanism be extended to transparently encrypt data for a remote annex repo? A friend of mine is interested to host his data with me, but he wants to encrypt his data for obvious reasons.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 30 13:01:40 2011</span>-</div>----</div>-<div class="comment" id="comment-2e6982dcbd6df823415ebc2bfdc7ce30">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-2e6982dcbd6df823415ebc2bfdc7ce30">comment 16</a>--</div>--<div class="inlinecontent">-I've fixed the test suite to not accumulate all those zombie processes. Now only 2 or 3 processes should run max. Am curious to see if that clears up all the problems.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb 13 00:52:26 2011</span>-</div>----</div>-<div class="comment" id="comment-cd73b609f841068fcdeb046a8762efb9">--<div class="comment-subject">--<a href="/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.html#comment-cd73b609f841068fcdeb046a8762efb9">comment 1</a>--</div>--<div class="inlinecontent">-Have you seen <a href="./walkthrough/recover_data_from_lost+found.html">recover data from lost+found</a>? The method described there will also work in this scenario.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 21:46:16 2011</span>-</div>----</div>-<div class="comment" id="comment-afade10cf4229ca277eb1901dbe7b6fd">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-afade10cf4229ca277eb1901dbe7b6fd">Exporting to a FAT filesystem?</a>--</div>--<div class="inlinecontent">-<p>I'm using git-annex to keep my music in sync between all of my different machines. What I'd love to be able to do is to also keep it in sync with my iRiver player. Unfortunately, the firmware, Rockbox, doesn't support ext3, so I'm stuck with a FAT filesystem.</p>--<p>I can see how the design of git-annex makes it rather difficult to get rid of the symlinks, so how about taking a different approach: something like a "git annex export DEST" which would take a destination (not a git remote) and rsync the content over to there as regular files.</p>--<p>Maybe "git annex sync DEST" or "git annex rsync DEST" would be better names if we want to convey the idea that the destination will be made to look like the source repo, including performing the necessary deletions.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=fmarier&amp;do=goto">fmarier</a>--</span>---&mdash; <span class="date">Mon Apr  4 03:40:41 2011</span>-</div>----</div>-<div class="comment" id="comment-916137d3a9d80d834df2986b66503211">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-916137d3a9d80d834df2986b66503211">comment 1</a>--</div>--<div class="inlinecontent">-<p>I followed this to re-inject files which git annex fsck listed as missing.</p>--<p>For everyone of those files, I get </p>--<pre><code>git-annex-shell: key is already present in annex-rsync: connection unexpectedly closed (0 bytes received so far) [sender]-rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.8]-</code></pre>--<p>when trying to copy the files to the remote.</p>--<p>-- Richard</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed May 11 20:07:29 2011</span>-</div>----</div>-<div class="comment" id="comment-ce879fc18ed86902cb2e70a73a261981">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-ce879fc18ed86902cb2e70a73a261981">comment 2</a>--</div>--<div class="inlinecontent">-Right. You probably don't want git-annex to fill up your entire drive anyway, so if it tries to reseve 10 mb or 1% or whatever (probably configurable) for overhead, that should be good enough.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:04:50 2011</span>-</div>----</div>-<div class="comment" id="comment-d31426f345ba610372b31de5cb97a5e1">--<div class="comment-subject">--<a href="/bugs/upgrade_left_untracked_.git-annex__47____42___directories.html#comment-d31426f345ba610372b31de5cb97a5e1">comment 3</a>--</div>--<div class="inlinecontent">-Yes you seem to have come across the same bug that I had initially reported :P--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:05:39 2011</span>-</div>----</div>-<div class="comment" id="comment-9c6f9e249e3793ddbab8d7769d244d16">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-9c6f9e249e3793ddbab8d7769d244d16">comment 8</a>--</div>--<div class="inlinecontent">-The latest change looks good, it seems to be returning sensible numbers for me. Just tried it out on a few different mount points and it appears to be working.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 13:03:51 2011</span>-</div>----</div>-<div class="comment" id="comment-50c69ed5b02a4591489bcc95dbbed40c">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-50c69ed5b02a4591489bcc95dbbed40c">comment 3</a>--</div>--<div class="inlinecontent">-Alright, I've added #idefs and the symlink timestamp mirroring feature will be unavailable on OSX until I get a version that works there.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 13:46:40 2011</span>-</div>----</div>-<div class="comment" id="comment-0e29ccba399c3ec6809026689704d801">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-0e29ccba399c3ec6809026689704d801">comment 15</a>--</div>--<div class="inlinecontent">-<p>It may be possible that OSX has some low resource limits, for user processes (266 per user I think) doing a </p>--<pre><code>sudo sysctl -w kern.maxproc=2048-sudo sysctl -w kern.maxprocperuid=1024-sudo echo "limit maxfiles 1024 unlimited" &gt;&gt; /etc/launchd.conf-sudo echo "limit maxproc 1024 2048" &gt;&gt; /etc/launchd.conf-</code></pre>--<p>seems to change the behaviour of the tests abit...</p>--<pre>-Testing 1:blackbox:3:git-annex unannex:1:with content                         -### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes                              -### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Testing 1:blackbox:4:git-annex drop:1:with remote                             -Testing 1:blackbox:4:git-annex drop:2:untrusted remote                        -Testing 1:blackbox:5:git-annex get                                            -Testing 1:blackbox:6:git-annex move                                           -Testing 1:blackbox:7:git-annex copy                                           -Testing 1:blackbox:8:git-annex unlock/lock                                    -Testing 1:blackbox:9:git-annex edit/commit:0                                  -Cases: 30  Tried: 20  Errors: 0  Failures: 2add foo ok-ok-Testing 1:blackbox:9:git-annex edit/commit:1                                  -Testing 1:blackbox:10:git-annex fix                                           -Testing 1:blackbox:11:git-annex trust/untrust/semitrust                       -Testing 1:blackbox:12:git-annex fsck:0                                        -Cases: 30  Tried: 24  Errors: 0  Failures: 2  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  Bad file size; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/WORM:1297565141:20:foo-  Bad file content; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa-Testing 1:blackbox:12:git-annex fsck:1                                        -### Failure in: 1:blackbox:12:git-annex fsck:1-fsck failed to fail with content only available in untrusted (current) repository-Testing 1:blackbox:12:git-annex fsck:2                                        -Cases: 30  Tried: 26  Errors: 0  Failures: 3  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    58e831c2-371b-11e0-bc1f-47d738dc52ee  -- test repo-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    58e831c2-371b-11e0-bc1f-47d738dc52ee  -- test repo-Testing 1:blackbox:13:git-annex migrate:0                                     -Cases: 30  Tried: 27  Errors: 0  Failures: 3  git-annex: user error (Error in fork: forkProcess: resource exhausted (Resource temporarily unavailable))-### Failure in: 1:blackbox:13:git-annex migrate:0-migrate annexedfile failed-Testing 1:blackbox:13:git-annex migrate:1                                     -### Error in:   1:blackbox:13:git-annex migrate:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:14:git-annex unused/dropunused                             -### Error in:   1:blackbox:14:git-annex unused/dropunused-forkProcess: resource exhausted (Resource temporarily unavailable)-Cases: 30  Tried: 30  Errors: 2  Failures: 4-test: failed-</pre>--<p>the number of failures vary as I change the values of the maxprocs, I think I  have narrowed it down to OSX just being stupid with limits thus causing the tests to fail.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Feb 12 22:45:51 2011</span>-</div>----</div>-<div class="comment" id="comment-ca3006ae376f32f3f7d9636d2c9ac2b9">--<div class="comment-subject">--<a href="/bugs/git_annex_add_eats_files_when_filename_is_too_long.html#comment-ca3006ae376f32f3f7d9636d2c9ac2b9">comment 1</a>--</div>--<div class="inlinecontent">-<p>When I reproduce this, the file is not gone, it's been moved under .git/annex/objects. There is no way an add can delete a file, since all it does is rename it. It would be good for it to error unwind and move the file back though.</p>--<pre>-joey@gnu:~/tmp/a&gt;touch 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif-joey@gnu:~/tmp/a&gt;git annex add *.gif-add 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif failed-git-annex: /home/joey/tmp/a/.git/annex/tmp/8e2_6a4_WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif.log: openBinaryFile: invalid argument (File name too long)-joey@gnu:~/tmp/a&gt;touch 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif-joey@gnu:~/tmp/a&gt;git annex add *.gif-add 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif failed-git-annex: /home/joey/tmp/a/.git/annex/tmp/8e2_6a4_WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif.log: openBinaryFile: invalid argument (File name too long)-joey@gnu:~/tmp/a&gt;find .git/annex/objects -type f-.git/annex/objects/Mk/92/WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif/WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Jul  7 16:27:33 2011</span>-</div>----</div>-<div class="comment" id="comment-9507ebb7dbf72c50e2bf299a05411ff4">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-9507ebb7dbf72c50e2bf299a05411ff4">comment 2</a>--</div>--<div class="inlinecontent">-What if your files have the same prefix and it happens to be 100 chars long? This can not be solved within WORM, but as Joey pointed out, SHA* exists.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr  8 18:02:41 2011</span>-</div>----</div>-<div class="comment" id="comment-6365a0dd8bb1d04c2b6c52cf79ef1aee">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-6365a0dd8bb1d04c2b6c52cf79ef1aee">comment 6</a>--</div>--<div class="inlinecontent">-<p>Alright, I have created a case-insensative HFS+ filesystem here on my linux laptop. </p>--<p>I have not been able to trick git into staging the same file with 2 different capitalizations yet.</p>--<p>It might be helpful if you can send me a copy of a git repository where 'git add -i' shows the same file staged with two capitalizations. Leaving out .git/annex of course. (joey@kitenet.net; a tarball would probably work)</p>--<p>It seems that <code>git add</code> only started properly working on case insensative filesystems quite recently. The commit in question is 5e738ae820ec53c45895b029baa3a1f63e654b1b, "Support case folding for git add when core.ignorecase=true", which was first released in git 1.7.4, January 30, 2011. If you don't yet have that version, that could explain the problem entirely. In about half an hour (dialup!) I will have downloaded an older git and will see if I can reproduce the problem with it.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 31 14:02:42 2011</span>-</div>----</div>-<div class="comment" id="comment-368792c2957dfcc08ab19783ab513b21">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-368792c2957dfcc08ab19783ab513b21">comment 2</a>--</div>--<div class="inlinecontent">-Just pulled the changes, it still fails to build. utimensat doesn't seem to exist on OSX 10.6.6.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 16 12:49:18 2011</span>-</div>----</div>-<div class="comment" id="comment-312082e5e9284b0553ad3f43a944e82d">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-312082e5e9284b0553ad3f43a944e82d">tests fail with more recent installs of haskell platform</a>--</div>--<div class="inlinecontent">-<p>I'm running ghc 6.12.3 with the corresponding haskell-platform package from the HP site which I installed in preference to the macports version of haskell-platform (it's quite old). it seems when you install quickcheck, the version that is installed is of version 2.4.0.1 and not 1.2.0 which git-annex depends on for its tests.</p>--<pre>-jtang@x00:~ $ cabal install quickcheck --reinstall               -Resolving dependencies...-Configuring QuickCheck-2.4.0.1...-Preprocessing library QuickCheck-2.4.0.1...--..-and so on..-..--</pre>--<p>it fails with this</p>--<pre>-[54 of 54] Compiling Main             ( test.hs, test.o )--test.hs:56:3:-    No instance for (QuickCheck-1.2.0.1:Test.QuickCheck.Arbitrary Char)-      arising from a use of `qctest' at test.hs:56:3-64-    Possible fix:-      add an instance declaration for-      (QuickCheck-1.2.0.1:Test.QuickCheck.Arbitrary Char)-    In the expression:-        qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode-    In the first argument of `TestList', namely-        `[qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode,-          qctest "prop_idempotent_fileKey" Locations.prop_idempotent_fileKey,-          qctest-            "prop_idempotent_key_read_show"-            BackendTypes.prop_idempotent_key_read_show,-          qctest-            "prop_idempotent_shellEscape" Utility.prop_idempotent_shellEscape,-          ....]'-    In the second argument of `($)', namely-        `TestList-           [qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode,-            qctest "prop_idempotent_fileKey" Locations.prop_idempotent_fileKey,-            qctest-              "prop_idempotent_key_read_show"-              BackendTypes.prop_idempotent_key_read_show,-            qctest-              "prop_idempotent_shellEscape" Utility.prop_idempotent_shellEscape,-            ....]'-</pre>--<p>I'd imagine if I could downgrade, it would compile and pass the tests (I hope)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Feb  7 08:43:43 2011</span>-</div>----</div>-<div class="comment" id="comment-a0e5c028cc5173042e24add020e44f5e">--<div class="comment-subject">--<a href="/bugs/Unfortunate_interaction_with_Calibre.html#comment-a0e5c028cc5173042e24add020e44f5e">comment 2</a>--</div>--<div class="inlinecontent">-One option would be to use the new <span class="createlink">sharebox a FUSE filesystem for git-annex</span>, which would hide the immutable file details from Calibre, and proxy any changes it made through to git-annex as a series of <code>git annex unlock; modify; git-annex lock</code>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 31 15:32:25 2011</span>-</div>----</div>-<div class="comment" id="comment-ebf0b9e229370e6f7ae4b6cca431e3ae">--<div class="comment-subject">--<a href="/bugs/Displayed_copy_speed_is_wrong.html#comment-ebf0b9e229370e6f7ae4b6cca431e3ae">comment 2</a>--</div>--<div class="inlinecontent">-Pity. Mark as done/upstream (or similar) for house-keeping?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 04:56:48 2011</span>-</div>----</div>-<div class="comment" id="comment-16cd04e8884ab70089cf90d22c8241cc">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-16cd04e8884ab70089cf90d22c8241cc">comment 4</a>--</div>--<div class="inlinecontent">-I've managed to reproduce this and confirmed my fix works.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 14:37:21 2011</span>-</div>----</div>-<div class="comment" id="comment-0eec11ffce77cde9ad7f00392763c90d">--<div class="comment-subject">--<a href="/bugs/conflicting_haskell_packages.html#comment-0eec11ffce77cde9ad7f00392763c90d">how to reproduce the package conflict issue</a>--</div>--<div class="inlinecontent">-<p>If you install the monads-fd package (with cabal install for instance), then you can no longer build git-annex:</p>--<pre>-./configure-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking uuid generator... uuid-  checking xargs -0... yes-  checking rsync... yes-ghc -O2 -Wall --make git-annex--Annex.hs:22:7:-    Ambiguous module name `Control.Monad.State':-      it was found in multiple packages: monads-fd-0.2.0.0 mtl-2.0.1.0-make: *** [git-annex] Error 1-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Mon Feb  7 10:12:43 2011</span>-</div>----</div>-<div class="comment" id="comment-3a63ea67ba45abc2e6091cb08ba3df4c">--<div class="comment-subject">--<a href="/bugs/touch.hsc_has_problems_on_non-linux_based_systems.html#comment-3a63ea67ba45abc2e6091cb08ba3df4c">comment 5</a>--</div>--<div class="inlinecontent">-<p>I'm leaving this bug open because this feature, however minor is not available on OSX and BSD. </p>--<p>I have added a partial implementation using lutimes(3), which should be available on the BSDs. However, it's ifdefed out due to a casting problem: The TimeSpec uses a CTime, while lutimes uses a CLong. These data types may be internally the same on some or all platforms, so if you want this feature you can try changing the "ifdef 0" in Touch.hsc to 1 and try it, see if "git annex add" mirrors file modification time in created symlinks, and let me know.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Mar 20 14:12:59 2011</span>-</div>----</div>-<div class="comment" id="comment-ec872e5d640622448a430219b09cdf36">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-ec872e5d640622448a430219b09cdf36">comment 4</a>--</div>--<div class="inlinecontent">-mtime+100chars can still get collisions and a <em>lot</em> easier than even SHA1. This introduces more problems that it solves, imo.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat Apr  9 19:45:28 2011</span>-</div>----</div>-<div class="comment" id="comment-786e904dc34ae2b2c8a440095eaa6e74">--<div class="comment-subject">--<a href="/bugs/git-annex_directory_hashing_problems_on_osx.html#comment-786e904dc34ae2b2c8a440095eaa6e74">comment 21</a>--</div>--<div class="inlinecontent">-<p>@seqq git-annex always uses the same case when creating and accessing the files pointed to by the symlinks. So it will not matter if it's used on a case-insensative, or case-insensative but preserving system like OSX.</p>--<p>You need to fix up the cases of the files in .git/annex/objects to what it expects. I'm not sure what would be the best way to do that. The method described in <a href="./walkthrough/recover_data_from_lost+found.html">recover data from lost+found</a> might work well.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Jun 10 12:46:03 2011</span>-</div>----</div>-<div class="comment" id="comment-357b365beace5df3a0ff94419f87f29d">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-357b365beace5df3a0ff94419f87f29d">comment 1</a>--</div>--<div class="inlinecontent">-<p>Keep in mind that lots of small files may have significant overhead, so a warning that it's not possible to make sure there's enough space would make sense for certain corner cases. Actually finding out the exact overhead is beyond git-annex' scope and, given transparent compression etc, ability, but a warning, optionally with a "do you want to continue" prompt can't hurt.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 10:11:27 2011</span>-</div>----</div>-<div class="comment" id="comment-77ecb00adb361b21dbfbc3093751d861">--<div class="comment-subject">--<a href="/bugs/copy_fast_confusing_with_broken_locationlog.html#comment-77ecb00adb361b21dbfbc3093751d861">comment 13</a>--</div>--<div class="inlinecontent">-<p>Yes, makes sense. I am so used to using --fast, I forgot a non-fast mode existed. I still think it would be a good idea to fall back to non-fast mode if --fast runs into an error from the remote, but as that is well without my abilities how about this patch?</p>--<pre><code>From 4855510c7a84eb5d28fdada429580a8a42b7112a Mon Sep 17 00:00:00 2001-From: Richard Hartmann &lt;richih.mailinglist@gmail.com&gt;-Date: Sun, 15 May 2011 22:20:42 +0200-Subject: [PATCH] Make error in RecvKey.hs suggest possible solution------ Command/RecvKey.hs |    2 +-- 1 files changed, 1 insertions(+), 1 deletions(-)--diff --git a/Command/RecvKey.hs b/Command/RecvKey.hs-index 126608f..b917a1c 100644---- a/Command/RecvKey.hs-+++ b/Command/RecvKey.hs-@@ -27,7 +27,7 @@ start :: CommandStartKey- start key = do-    present &lt;- inAnnex key-    when present &#036;--       error "key is already present in annex"-+       error "key is already present in annex. If you are running copy, try without '--fast'"--    ok &lt;- getViaTmp key (liftIO . rsyncServerReceive)-    if ok--- -1.7.4.4-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun May 15 16:25:25 2011</span>-</div>----</div>-<div class="comment" id="comment-a014c9b948cdc1def8bad093587fed95">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-a014c9b948cdc1def8bad093587fed95">&#x22;Me too&#x22;</a>--</div>--<div class="inlinecontent">-<p>I've also seen this apparent hang during upgrade to v3. A few more details:</p>--<p>The annex in question has just under 18k files (and hence that many log files), which can slow down directory operations when they're all in the same place (like, for example, .git/annex/journal).</p>--<p>git-annex uses virtually no CPU time and disk IO when it's hanging like this; the first time it happened, 'ps' showed three defunct git processes, with two "git-annex" processes and three "git" procs:</p>--<ul>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex cat-file --batch</li>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex hash-object -w --stdin-paths</li>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex update-index -z --index-info</li>-</ul>--<p>I Ctrl+C'd that and tried again, but it hung again -- this time without the defunct gits.</p>--<p>An strace of the process and its children at the time of hang can be found at http://pastebin.com/4kNh4zEJ . It showed somewhat weird behaviour: When I attached with strace, it would scroll through a whole bunch of syscalls making up the open-fstat-read-close-write loop on .git/annex/journal files, but then would block on a write (sorry, don't have that in my scrollback any more so can't give more details) until I Ctrl+C'd strace; when attaching again, it would again scroll through the syscalls for a second or so and then hang with no output.</p>--<p>Ultimately I detached/reattached with strace about two dozen times and that caused it (?) to finish the upgrade; not really sure how to explain it, but it seems like too much of a timing coincidence.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://lithitux.org/openidserver/users/pavel">pavel</a>-</span>---&mdash; <span class="date">Tue Jul  5 11:54:19 2011</span>-</div>----</div>-<div class="comment" id="comment-26c561e33f9dfe039dfd2618cac1ee34">--<div class="comment-subject">--<a href="/bugs/Cabal_dependency_monadIO_missing.html#comment-26c561e33f9dfe039dfd2618cac1ee34">comment 2</a>--</div>--<div class="inlinecontent">-Finally got a chance to try to reproduce this. I followed your recipe exactly in a clean squeeze chroot. monadIO was not installed, but git-annex built ok, using monad-control.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Aug 17 00:56:30 2011</span>-</div>----</div>-<div class="comment" id="comment-36133327de0a8a306eacf6b19edab562">--<div class="comment-subject">--<a href="/bugs/Cabal_dependency_monadIO_missing.html#comment-36133327de0a8a306eacf6b19edab562">comment 1</a>--</div>--<div class="inlinecontent">-<p>I use Debian Squeeze, I have the Debian package cabal-install 0.8.0-1 installed.</p>--<pre><code>&#036; git clone git://git-annex.branchable.com/-&#036; cd git-annex.branchable.com-&#036; cabal update-&#036; cabal install cabal-install-</code></pre>--<p>This installed: Cabal-1.10.2.0, zlib-0.5.3.1, cabal-install 0.10.2.-No version of monad-control or monadIO installed.</p>--<pre><code>&#036; ~/.cabal/bin/cabal install-Registering QuickCheck-2.4.1.1...-Registering Crypto-4.2.3...-Registering base-unicode-symbols-0.2.2.1...-Registering deepseq-1.1.0.2...-Registering hxt-charproperties-9.1.0...-Registering hxt-regex-xmlschema-9.0.0...-Registering hxt-unicode-9.0.1...-Registering hxt-9.1.2...-Registering stm-2.2.0.1...-Registering hS3-0.5.6...-Registering transformers-0.2.2.0...-Registering monad-control-0.2.0.1...-[1 of 1] Compiling Main             ( Setup.hs, dist/setup/Main.o )-Linking ./dist/setup/setup ...-ghc -O2 -Wall -ignore-package monads-fd -fspec-constr-count=5 --make configure-[1 of 2] Compiling TestConfig       ( TestConfig.hs, TestConfig.o )-[2 of 2] Compiling Main             ( configure.hs, configure.o )-Linking configure ...-./configure-  checking version... 3.20110720-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking uuid generator... uuid-  checking xargs -0... yes-  checking rsync... yes-  checking curl... yes-  checking bup... yes-  checking gpg... yes-  checking sha1... sha1sum-  checking sha256... sha256sum-  checking sha512... sha512sum-  checking sha224... sha224sum-  checking sha384... sha384sum--...--Command/Add.hs:54:3:-    No instance for (Control.Monad.IO.Control.MonadControlIO-                       (Control.Monad.State.Lazy.StateT Annex.AnnexState IO))-      arising from a use of `handle' at Command/Add.hs:54:3-24-    Possible fix:-      add an instance declaration for-      (Control.Monad.IO.Control.MonadControlIO-         (Control.Monad.State.Lazy.StateT Annex.AnnexState IO))-    In the first argument of `(&#036;)', namely `handle (undo file key)'-    In a stmt of a 'do' expression:-          handle (undo file key) &#036; moveAnnex key file-    In the expression:-        do { handle (undo file key) &#036; moveAnnex key file;-             next &#036; cleanup file key }-cabal: Error: some packages failed to install:-git-annex-3.20110719 failed during the building phase. The exception was:-ExitFailure 1-</code></pre>--<p>After I added a depencency for monadIO to the git-annex.cabal file, it installed correctly. <br />--- Thomas</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmFgsNxmnGznb5bbmcoWhoQOoxZZ-io61s">Thomas</a>-</span>---&mdash; <span class="date">Mon Aug  8 05:04:20 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./bugs/done.html">bugs/done</a>--<a href="./forum/wishlist:_support_for_more_ssh_urls_.html">forum/wishlist: support for more ssh urls </a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/--git-dir_and_--work-tree_options.html
@@ -1,126 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>--git-dir and --work-tree options</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">---git-dir and --work-tree options--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex does not take into account the --git-dir and --work-tree command line options (while they can be useful when scripting).</p>--<pre><code>&gt; mkdir /tmp/test-&gt; cd /tmp/test-&gt; git init-Initialized empty Git repository in /tmp/test/.git/-&gt; git annex init test-init test ok-&gt; touch foo-&gt; cd-&gt; git --git-dir=/tmp/test/.git --work-tree=/tmp/test annex add foo-git-annex: Not in a git repository.-</code></pre>--<p>regular git add works:</p>--<pre><code>&gt; git --git-dir=/tmp/test/.git --work-tree=/tmp/test add foo-&gt; git --git-dir=/tmp/test/.git --work-tree=/tmp/test status -# On branch master-#-# Initial commit-#-# Changes to be committed:-#   (use "git rm --cached &lt;file&gt;..." to unstage)-#-#       new file:   foo-#-</code></pre>--<p>git-annex version: 3.20110702</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Build_error_on_Mac_OSX_10.6.html
@@ -1,109 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Build error on Mac OSX 10.6</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Build error on Mac OSX 10.6--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>While following the instructions given at the OSX build page , I get this error:</p>--<p>$ make-ghc -O2 -Wall -ignore-package monads-fd -fspec-constr-count=5 --make git-annex</p>--<p>Utility/JSONStream.hs:14:8:-    Could not find module `Text.JSON':-      Use -v to see a list of the files searched for.-make: <em>*</em> [git-annex] Error 1</p>--<blockquote>-  <p>Updated the instructions. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Cabal_dependency_monadIO_missing.html
@@ -1,243 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Cabal dependency monadIO missing</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Cabal dependency monadIO missing--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Just issuing the command <code>cabal install</code> results in the following error message.</p>--<pre><code>Command/Add.hs:54:3:-    No instance for (Control.Monad.IO.Control.MonadControlIO-                       (Control.Monad.State.Lazy.StateT Annex.AnnexState IO))-      arising from a use of `handle' at Command/Add.hs:54:3-24-</code></pre>--<p>Adding the dependency for <code>monadIO</code> to <code>git-annex.cabal</code> should fix this? <br />--- Thomas</p>--<blockquote>-  <p>No, it's already satisfied by <code>monad-control</code> being listed as a-  dependency in the cabal file. Your system might be old/new/or broken,-  perhaps it's time to provide some details about the version of haskell-  and of <code>monad-control</code> you have installed? --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-36133327de0a8a306eacf6b19edab562">--<div class="comment-subject">--<a href="/bugs/Cabal_dependency_monadIO_missing.html#comment-36133327de0a8a306eacf6b19edab562">comment 1</a>--</div>--<div class="inlinecontent">-<p>I use Debian Squeeze, I have the Debian package cabal-install 0.8.0-1 installed.</p>--<pre><code>&#036; git clone git://git-annex.branchable.com/-&#036; cd git-annex.branchable.com-&#036; cabal update-&#036; cabal install cabal-install-</code></pre>--<p>This installed: Cabal-1.10.2.0, zlib-0.5.3.1, cabal-install 0.10.2.-No version of monad-control or monadIO installed.</p>--<pre><code>&#036; ~/.cabal/bin/cabal install-Registering QuickCheck-2.4.1.1...-Registering Crypto-4.2.3...-Registering base-unicode-symbols-0.2.2.1...-Registering deepseq-1.1.0.2...-Registering hxt-charproperties-9.1.0...-Registering hxt-regex-xmlschema-9.0.0...-Registering hxt-unicode-9.0.1...-Registering hxt-9.1.2...-Registering stm-2.2.0.1...-Registering hS3-0.5.6...-Registering transformers-0.2.2.0...-Registering monad-control-0.2.0.1...-[1 of 1] Compiling Main             ( Setup.hs, dist/setup/Main.o )-Linking ./dist/setup/setup ...-ghc -O2 -Wall -ignore-package monads-fd -fspec-constr-count=5 --make configure-[1 of 2] Compiling TestConfig       ( TestConfig.hs, TestConfig.o )-[2 of 2] Compiling Main             ( configure.hs, configure.o )-Linking configure ...-./configure-  checking version... 3.20110720-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking uuid generator... uuid-  checking xargs -0... yes-  checking rsync... yes-  checking curl... yes-  checking bup... yes-  checking gpg... yes-  checking sha1... sha1sum-  checking sha256... sha256sum-  checking sha512... sha512sum-  checking sha224... sha224sum-  checking sha384... sha384sum--...--Command/Add.hs:54:3:-    No instance for (Control.Monad.IO.Control.MonadControlIO-                       (Control.Monad.State.Lazy.StateT Annex.AnnexState IO))-      arising from a use of `handle' at Command/Add.hs:54:3-24-    Possible fix:-      add an instance declaration for-      (Control.Monad.IO.Control.MonadControlIO-         (Control.Monad.State.Lazy.StateT Annex.AnnexState IO))-    In the first argument of `(&#036;)', namely `handle (undo file key)'-    In a stmt of a 'do' expression:-          handle (undo file key) &#036; moveAnnex key file-    In the expression:-        do { handle (undo file key) &#036; moveAnnex key file;-             next &#036; cleanup file key }-cabal: Error: some packages failed to install:-git-annex-3.20110719 failed during the building phase. The exception was:-ExitFailure 1-</code></pre>--<p>After I added a depencency for monadIO to the git-annex.cabal file, it installed correctly. <br />--- Thomas</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmFgsNxmnGznb5bbmcoWhoQOoxZZ-io61s">Thomas</a>-</span>---&mdash; <span class="date">Mon Aug  8 05:04:20 2011</span>-</div>----</div>-<div class="comment" id="comment-26c561e33f9dfe039dfd2618cac1ee34">--<div class="comment-subject">--<a href="/bugs/Cabal_dependency_monadIO_missing.html#comment-26c561e33f9dfe039dfd2618cac1ee34">comment 2</a>--</div>--<div class="inlinecontent">-Finally got a chance to try to reproduce this. I followed your recipe exactly in a clean squeeze chroot. monadIO was not installed, but git-annex built ok, using monad-control.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Aug 17 00:56:30 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Displayed_copy_speed_is_wrong.html
@@ -1,167 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Displayed copy speed is wrong</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Displayed copy speed is wrong--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When copying data to my remote, I regularly see speeds in excess of 100 MB/s on my home DSL line.</p>--<pre><code>2073939 100%  176.96MB/s    0:00:00 (xfer#1, to-check=0/1)-</code></pre>--<p>This is definitely not correct.</p>--<blockquote>-  <p>Closing, as rsync does this to show you when it's making your life-  faster than it would be w/o rsync. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-5f1ea7c6a5c816a6146a97a62f582656">--<div class="comment-subject">--<a href="/bugs/Displayed_copy_speed_is_wrong.html#comment-5f1ea7c6a5c816a6146a97a62f582656">comment 1</a>--</div>--<div class="inlinecontent">-That is displayed by rsync. It's not unheard of for rsync to resume a transfer and display extremely high speeds.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 21:37:29 2011</span>-</div>----</div>-<div class="comment" id="comment-ebf0b9e229370e6f7ae4b6cca431e3ae">--<div class="comment-subject">--<a href="/bugs/Displayed_copy_speed_is_wrong.html#comment-ebf0b9e229370e6f7ae4b6cca431e3ae">comment 2</a>--</div>--<div class="inlinecontent">-Pity. Mark as done/upstream (or similar) for house-keeping?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 04:56:48 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Makefile_is_missing_dependancies.html
@@ -1,510 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Makefile is missing dependancies</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Makefile is missing dependancies--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<pre>-From e45c73e66fc18d27bdf5797876fbeb07786a4af1 Mon Sep 17 00:00:00 2001-From: Jimmy Tang -Date: Tue, 22 Mar 2011 22:24:07 +0000-Subject: [PATCH] Touch up Makefile to depend on StatFS.hs------ Makefile |    2 +-- 1 files changed, 1 insertions(+), 1 deletions(-)--diff --git a/Makefile b/Makefile-index 08e2f59..4ae8392 100644---- a/Makefile-+++ b/Makefile-@@ -15,7 +15,7 @@ SysConfig.hs: configure.hs TestConfig.hs-        hsc2hs $&lt;-        perl -i -pe 's/^{-# INCLUDE.*//' $@---$(bins): SysConfig.hs Touch.hs-+$(bins): SysConfig.hs Touch.hs StatFS.hs-        $(GHCMAKE) $@-- git-annex.1: doc/git-annex.mdwn--- -1.7.4.1--</pre>--<p>StatFS.hs never gets depended on and compiled, the makefile was just missing something</p>--<blockquote>-  <p>Thanks, <a href="./done.html">done</a>! Interested to hear if StatFS.hs works on OSX (no warning) or-  is a no-op (with warning). --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>for now it gives a warning, it looks like it should be easy enough to add OSX-    support, I guess it's a case of just digging around documentation to find the equivalent-    calls/headers. I'll give it a go at making this feature work on OSX and get back to you.</p>-  </blockquote>-</blockquote>--<pre>-jtang@exia:~/develop/git-annex $ make-hsc2hs StatFS.hsc-StatFS.hsc:85:2: warning: #warning free space checking code not available for this OS-StatFS.hsc:85:2: warning: #warning free space checking code not available for this OS-StatFS.hsc:85:2: warning: #warning free space checking code not available for this OS-</pre>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-b7fb23cf28d5f5f28d1283ecfb9ef969">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-b7fb23cf28d5f5f28d1283ecfb9ef969">comment 1</a>--</div>--<div class="inlinecontent">-<p>Just did some minor digging around and checking, this seems to satisfy the compilers etc... I have yet to confirm that it <em>really</em> is working as expected. Also it might be better to check for a darwin operating system instead of apple I think, though I don't know of any one really using a pure darwin OS. But for now it works (I think)</p>--<pre>-From fbfe27c2e19906ac02e3673b91bffa920f6dae5d Mon Sep 17 00:00:00 2001-From: Jimmy Tang -Date: Wed, 23 Mar 2011 08:15:39 +0000-Subject: [PATCH] Define (__APPLE__) in StatFS--At least on OSX 10.6.6 it appears to have the same defintions as-FreeBSD. The build process doesn't complain and the code is enabled,-this needs to be tested and checked more.----- StatFS.hsc |    4 ++--- 1 files changed, 2 insertions(+), 2 deletions(-)--diff --git a/StatFS.hsc b/StatFS.hsc-index 8b453dc..45fd7e4 100644---- a/StatFS.hsc-+++ b/StatFS.hsc-@@ -53,7 +53,7 @@ import Foreign.C.String- import Data.ByteString (useAsCString)- import Data.ByteString.Char8 (pack)---#if defined (__FreeBSD__)-+#if defined (__FreeBSD__) || defined(__APPLE__)- # include - # include - #else-@@ -84,7 +84,7 @@ data CStatfs- #ifdef UNKNOWN- #warning free space checking code not available for this OS- #else--#if defined(__FreeBSD__)-+#if defined(__FreeBSD__) || defined(__APPLE__)- foreign import ccall unsafe "sys/mount.h statfs"- #else- foreign import ccall unsafe "sys/vfs.h statfs64"--- -1.7.4.1-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 04:21:30 2011</span>-</div>----</div>-<div class="comment" id="comment-a0686284789a15687de5f3bf5ca72b72">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-a0686284789a15687de5f3bf5ca72b72">comment 2</a>--</div>--<div class="inlinecontent">-There's a simple test -- just configure annex.diskreserve to be say, 10 megabytes less than the total free space on your disk. Then try to git annex get a 11 mb file, and a 9 mb file. :)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:05:12 2011</span>-</div>----</div>-<div class="comment" id="comment-e184d770e17e252c5f0ddf423f2769bb">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-e184d770e17e252c5f0ddf423f2769bb">comment 3</a>--</div>--<div class="inlinecontent">-<p>Alternatively, you can just load it up in ghci and see if it reports numbers that make sense:</p>--<pre>-joey@gnu:~/src/git-annex&gt;make StatFS.hs-hsc2hs StatFS.hsc-perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs-joey@gnu:~/src/git-annex&gt;ghci StatFS.hs-GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.5 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 7427989, fsStatByteCount = 30425042944, fsStatBytesFree = 2528489472, fsStatBytesAvailable = 2219384832, fsStatBytesUsed = 27896553472})-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:13:33 2011</span>-</div>----</div>-<div class="comment" id="comment-bad57d002c788add97aaf3729946800d">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-bad57d002c788add97aaf3729946800d">comment 4</a>--</div>--<div class="inlinecontent">-<p>Ok, well it looks like it isn't doing anything useful at all.</p>--<pre>-jtang@x00:~/develop/git-annex $ make StatFS.hs                                                                                                                                    -hsc2hs StatFS.hsc-perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs-jtang@x00:~/develop/git-annex $ ghci StatFS.hs                                                                                                                                    -GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-Loading package ffi-1.0 ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.7 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})-*StatFS&gt; s &lt;- getFileSystemStats "/"-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})-*StatFS&gt; -</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:02:34 2011</span>-</div>----</div>-<div class="comment" id="comment-da5cfa01c344e8c89cd74fc03acbea09">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-da5cfa01c344e8c89cd74fc03acbea09">comment 5</a>--</div>--<div class="inlinecontent">-<p>Actually I may have just been stupid and should have read the man page on statfs...</p>--<pre>-jtang@x00:~/develop/git-annex $ git diff-diff --git a/StatFS.hsc b/StatFS.hsc-index 8b453dc..e10b2dd 100644---- a/StatFS.hsc-+++ b/StatFS.hsc-@@ -53,7 +53,7 @@ import Foreign.C.String- import Data.ByteString (useAsCString)- import Data.ByteString.Char8 (pack)---#if defined (__FreeBSD__)-+#if defined (__FreeBSD__) || defined (__APPLE__)- # include - # include - #else-@@ -84,8 +84,8 @@ data CStatfs- #ifdef UNKNOWN- #warning free space checking code not available for this OS- #else--#if defined(__FreeBSD__)--foreign import ccall unsafe "sys/mount.h statfs"-+#if defined(__FreeBSD__) || defined (__APPLE__)-+foreign import ccall unsafe "sys/mount.h statfs64"- #else- foreign import ccall unsafe "sys/vfs.h statfs64"- #endif-</pre>--<p>yields this...</p>--<pre>-jtang@x00:~/develop/git-annex $ ghci StatFS.hs                                                                                                                                    -GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help-Loading package ghc-prim ... linking ... done.-Loading package integer-gmp ... linking ... done.-Loading package base ... linking ... done.-Loading package ffi-1.0 ... linking ... done.-[1 of 1] Compiling StatFS           ( StatFS.hs, interpreted )-Ok, modules loaded: StatFS.-*StatFS&gt; s &lt;- getFileSystemStats "."-Loading package bytestring-0.9.1.7 ... linking ... done.-*StatFS&gt; s-Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 244106668, fsStatByteCount = 999860912128, fsStatBytesFree = 423097798656, fsStatBytesAvailable = 422835654656, fsStatBytesUsed = 576763113472})-*StatFS&gt; -</pre>--<p>we could just stick another if defined (<strong>APPLE</strong>) instead of what I previously had and it looks like it will do the right thing on OSX.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:14:22 2011</span>-</div>----</div>-<div class="comment" id="comment-3196b43b7d745ab206435d0a69686815">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-3196b43b7d745ab206435d0a69686815">comment 6</a>--</div>--<div class="inlinecontent">-<p>I forgot to mention that the statfs64 stuff in OSX seems to be deprecated, see http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/statfs64.2.html</p>--<p>on a slightly different note, is anonymous pushing to the "wiki" over git allowed? I'd prefer to be able to edit stuff inline for updating some of my own comments if I can :P</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:23:56 2011</span>-</div>----</div>-<div class="comment" id="comment-3ade9863d5c856959bb854613fc19fd8">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-3ade9863d5c856959bb854613fc19fd8">comment 7</a>--</div>--<div class="inlinecontent">-<p>Try the changes I've pushed to use statfs64 on apple.</p>--<p>There is actually a standardized statvfs that I'd rather use, but after the last time that I tried going with the POSIX option first only to find it was not broadly implemented, I was happy to find some already existing code that worked for some OSs.</p>--<p>(While ikiwiki supports anonymous git push, it's a feature we have not rolled out on Branchable.com yet, and anyway, ikiwiki disallows editing existing comments that way. I would, however, be happy to git pull changes from somewhere.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 12:57:56 2011</span>-</div>----</div>-<div class="comment" id="comment-9c6f9e249e3793ddbab8d7769d244d16">--<div class="comment-subject">--<a href="/bugs/Makefile_is_missing_dependancies.html#comment-9c6f9e249e3793ddbab8d7769d244d16">comment 8</a>--</div>--<div class="inlinecontent">-The latest change looks good, it seems to be returning sensible numbers for me. Just tried it out on a few different mount points and it appears to be working.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Mar 23 13:03:51 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/No_version_information_from_cli.html
@@ -1,117 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>No version information from cli</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-No version information from cli--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex does not listen to -v, --version or version.</p>--<p>At the very least, it should return both the version of the binary and the version of the object store it supports.-If it supports several annex versions, they should be listed in a comma-separated fashion.-If git-annex is called from within an annex, it should print the version of the local object store.</p>--<p>Sample:</p>--<pre><code>% git annex version-git-annex version               : 0.24-default object store version    : 3-supported object store versions : 2,3-local object store version      : 2-% -</code></pre>--<p>The above might look like overkill, but it's in a form that will, most likely, never need to be extended.</p>--<blockquote>-  <p>Great idea, <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Prevent_accidental_merges.html
@@ -1,112 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Prevent accidental merges</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Prevent accidental merges--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>With the storage layout v3, pulling the git-annex branch into the master branch is... less than ideal.</p>--<p>The fact that the two branches contain totally different data make an accidental merge worse, arguably.</p>--<p>Adding a tiny binary file called .gitnomerge to both branches would solve that without any noticeable overhead.</p>--<p>Yes, there is an argument to be made that this is too much hand-holding, but I still think it's worth it.</p>--<p>-- Richard</p>--<blockquote>-  <p>It should be as easy to undo such an accidential merge-  as it is to undo any other git commit, right? I quite like that git-annex -  no longer adds any clutter to the master branch, and would be reluctant-  to change that. --<span class="createlink">Joey</span></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Problems_running_make_on_osx.html
@@ -1,1089 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Problems running make on osx</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Problems running make on osx--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Followed the instructions over here: http://git-annex.branchable.com/forum/git-annex_on_OSX/</p>--<p>and had to install the following extra packages to be able to get make to start:</p>--<p>[realizes pcre-light is needed but pcre not installed on my mac] <br />-sudo port install pcre <br />-sudo cabal install pcre-light  </p>--<blockquote>-  <p>Ah right, that is a new dependency. I've updated the forum page-  with this info.-  --<span class="createlink">Joey</span> </p>-</blockquote>--<p>But then I got the following error:  </p>--<pre>-ghc -O2 -Wall --make git-annex  -[ 7 of 52] Compiling BackendTypes     ( BackendTypes.hs, BackendTypes.o   --BackendTypes.hs:71:17:  -    No instance for (Arbitrary Char)  -      arising from a use of `arbitrary' at BackendTypes.hs:71:17-25  -    Possible fix: add an instance declaration for (Arbitrary Char)  -    In a stmt of a 'do' expression: backendname &lt;- arbitrary  -    In the expression:  -        do backendname &lt;- arbitrary  -           keyname &lt;- arbitrary  -             return $ Key (backendname, keyname)  -    In the definition of `arbitrary':  -        arbitrary = do backendname &lt;- arbitrary  -                       keyname &lt;- arbitrary  -                         return $ Key (backendname, keyname)  -make: *** [git-annex] Error 1  -</pre>--<p>My knowledge of Haskell (had to lookup the spelling...) is more than rudimentary so any help would be appreciated.</p>--<blockquote>-  <p>Hmm, it seems you may be missing part of the quickcheck haskell-  library, or have a different version than me.</p>-  -  <p>The easy fix is probably to just edit BackendTypes.hs and delete the-  entire end of the file from line 68, "for quickcheck" down. This code-  is only used by the test suite (so "make test" will fail), -  but it should get it to build. --<span class="createlink">Joey</span></p>-</blockquote>--<hr />--<p>Closing this bug because the above problem now has a solution documented on-the install page, and the below test suite failure problems should all be-resolved on OSX. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-fdfdb9dad144abc5d599eae70b692c9f">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-fdfdb9dad144abc5d599eae70b692c9f">Got it going!</a>--</div>--<div class="inlinecontent">-<p>Thanks to your feedback, I got it going.  </p>--<p>Maybe those two should be added to the 'OSX how-to' in the forum   </p>--<p>[realizes pcre-light is needed but pcre not installed on my mac] <br />-sudo port install pcre <br />-sudo cabal install pcre-light  </p>--<p>[tests are failing, need haskell's quickcheck] <br />-sudo cabal install quickcheck  </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmd3qri1pXEYktlxYGwj37wCnrM4FMEJCc">Antoine</a>-</span>---&mdash; <span class="date">Sun Feb  6 02:02:57 2011</span>-</div>----</div>-<div class="comment" id="comment-6662709724463f8b2bc8bbb805b599a2">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-6662709724463f8b2bc8bbb805b599a2">comment 2</a>--</div>--<div class="inlinecontent">-Yes, I've moved it to <a href="../install/OSX.html">OSX</a> page where anyone can update it in this wiki, and added your improvements.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb  6 13:39:52 2011</span>-</div>----</div>-<div class="comment" id="comment-312082e5e9284b0553ad3f43a944e82d">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-312082e5e9284b0553ad3f43a944e82d">tests fail with more recent installs of haskell platform</a>--</div>--<div class="inlinecontent">-<p>I'm running ghc 6.12.3 with the corresponding haskell-platform package from the HP site which I installed in preference to the macports version of haskell-platform (it's quite old). it seems when you install quickcheck, the version that is installed is of version 2.4.0.1 and not 1.2.0 which git-annex depends on for its tests.</p>--<pre>-jtang@x00:~ $ cabal install quickcheck --reinstall               -Resolving dependencies...-Configuring QuickCheck-2.4.0.1...-Preprocessing library QuickCheck-2.4.0.1...--..-and so on..-..--</pre>--<p>it fails with this</p>--<pre>-[54 of 54] Compiling Main             ( test.hs, test.o )--test.hs:56:3:-    No instance for (QuickCheck-1.2.0.1:Test.QuickCheck.Arbitrary Char)-      arising from a use of `qctest' at test.hs:56:3-64-    Possible fix:-      add an instance declaration for-      (QuickCheck-1.2.0.1:Test.QuickCheck.Arbitrary Char)-    In the expression:-        qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode-    In the first argument of `TestList', namely-        `[qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode,-          qctest "prop_idempotent_fileKey" Locations.prop_idempotent_fileKey,-          qctest-            "prop_idempotent_key_read_show"-            BackendTypes.prop_idempotent_key_read_show,-          qctest-            "prop_idempotent_shellEscape" Utility.prop_idempotent_shellEscape,-          ....]'-    In the second argument of `($)', namely-        `TestList-           [qctest "prop_idempotent_deencode" Git.prop_idempotent_deencode,-            qctest "prop_idempotent_fileKey" Locations.prop_idempotent_fileKey,-            qctest-              "prop_idempotent_key_read_show"-              BackendTypes.prop_idempotent_key_read_show,-            qctest-              "prop_idempotent_shellEscape" Utility.prop_idempotent_shellEscape,-            ....]'-</pre>--<p>I'd imagine if I could downgrade, it would compile and pass the tests (I hope)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Feb  7 08:43:43 2011</span>-</div>----</div>-<div class="comment" id="comment-d47a1b133c62d957592d170f936828fa">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-d47a1b133c62d957592d170f936828fa">comment 4</a>--</div>--<div class="inlinecontent">-<p>I doubt that git-annex can be used with QuickCheck 1.2.0. The QuickCheck I've tested it with is 2.1.0.3 actually.</p>--<p>I suspect you have an old version of the TestPack haskell library on your system, that is linked against QuickCheck 1.2.0. Git-annex has been tested with TestPack 2.0.0, which uses QuickCheck 2.x.</p>--<p>In any case, you don't have to run 'make test' to build git-annex, and my comments above should make the main program compile, I expect.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  8 15:00:14 2011</span>-</div>----</div>-<div class="comment" id="comment-21fdd436aa72bd764ebe8a1c600d8e30">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-21fdd436aa72bd764ebe8a1c600d8e30">comment 5</a>--</div>--<div class="inlinecontent">-<p>Ah, that gave me a good clue, my system just got pretty confused with a mixture of quickcheck and testpack installs. Would it be possible to put up a list of versions of the software you are using on your development environment? (at least the minimum tested version) </p>--<p>I guess it shouldn't matter to most users who are going to rely on packagers to sort these dependancy issues, but it's nice to know. </p>--<p>Anyway, the tests build now, and they seem to fail on my (rather messy) install of haskell platform + ghc 6.12 on osx 10.6.6.</p>--<pre>-&lt; output that passed some tests &gt;-Testing 1:blackbox:0:git-annex init-Testing 1:blackbox:1:git-annex add:0-Testing 1:blackbox:1:git-annex add:1-Cases: 30  Tried: 9  Errors: 0  Failures: 0test: sha1sum: executeFile: does not exist (No such file or directory)-  git-annex: : hGetLine: end of file-### Failure in: 1:blackbox:1:git-annex add:1-add with SHA1 failed-Testing 1:blackbox:2:git-annex setkey/fromkey-Cases: 30  Tried: 10  Errors: 0  Failures: 1(checksum...) test: sha1sum: executeFile: does not exist (No such file or directory)-### Error in:   1:blackbox:2:git-annex setkey/fromkey-: hGetLine: end of file-Testing 1:blackbox:3:git-annex unannex:0:no content-Cases: 30  Tried: 11  Errors: 1  Failures: 1chmod: -R: No such file or directory-chmod: -R: No such file or directory-Testing 1:blackbox:3:git-annex unannex:1:with content-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes-Cases: 30  Tried: 13  Errors: 1  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:0:no remotes-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:4:git-annex drop:1:with remote-Cases: 30  Tried: 14  Errors: 2  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:1:with remote-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:4:git-annex drop:2:untrusted remote-Cases: 30  Tried: 15  Errors: 3  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:4:git-annex drop:2:untrusted remote-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:5:git-annex get-Cases: 30  Tried: 16  Errors: 4  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:5:git-annex get-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:6:git-annex move-Cases: 30  Tried: 17  Errors: 5  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:6:git-annex move-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:7:git-annex copy-Cases: 30  Tried: 18  Errors: 6  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:7:git-annex copy-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:8:git-annex unlock/lock-Cases: 30  Tried: 19  Errors: 7  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:8:git-annex unlock/lock-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:9:git-annex edit/commit:0-Cases: 30  Tried: 20  Errors: 8  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:9:git-annex edit/commit:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:9:git-annex edit/commit:1-Cases: 30  Tried: 21  Errors: 9  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:9:git-annex edit/commit:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:10:git-annex fix-Cases: 30  Tried: 22  Errors: 10  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:10:git-annex fix-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:11:git-annex trust/untrust/semitrust-Cases: 30  Tried: 23  Errors: 11  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:11:git-annex trust/untrust/semitrust-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:0-Cases: 30  Tried: 24  Errors: 12  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:1-Cases: 30  Tried: 25  Errors: 13  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:12:git-annex fsck:2-Cases: 30  Tried: 26  Errors: 14  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:12:git-annex fsck:2-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:13:git-annex migrate:0-Cases: 30  Tried: 27  Errors: 15  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:13:git-annex migrate:0-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:13:git-annex migrate:1-Cases: 30  Tried: 28  Errors: 16  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:13:git-annex migrate:1-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Testing 1:blackbox:14:git-annex unused/dropunused-Cases: 30  Tried: 29  Errors: 17  Failures: 2chmod: -R: No such file or directory-### Error in:   1:blackbox:14:git-annex unused/dropunused-.t/tmprepo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-Cases: 30  Tried: 30  Errors: 18  Failures: 2-chmod: -R: No such file or directory-test: .t/repo/.git/annex/objects/WORM:1297194705:20:foo/WORM:1297194705:20:foo: removeLink: permission denied (Permission denied)-make: *** [test] Error 1-</pre>--<p>I assumed that since the tests built, then running them shouldn't be a problem. It looks like some argument isn't being passed about for the location of the .t directory that gets created. I will check the dependancies on my system again.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Feb  8 15:56:55 2011</span>-</div>----</div>-<div class="comment" id="comment-307e0720671f3ca196ff9efd4072e650">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-307e0720671f3ca196ff9efd4072e650">comment 6</a>--</div>--<div class="inlinecontent">-<p>You're missing the sha1sum command, everything else is a followon error from that. Added a hint about this to <a href="../install.html">install</a>,-and in the next version configure will check for sha1sum.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  8 19:20:08 2011</span>-</div>----</div>-<div class="comment" id="comment-5acf0035c0171ee7026fc43aa31ab7eb">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-5acf0035c0171ee7026fc43aa31ab7eb">comment 7</a>--</div>--<div class="inlinecontent">-<p>That's odd, I have the md5sha1sum package installed and it still fails with pretty much the same error</p>--<pre>-Testing 1:blackbox:0:git-annex init-Cases: 30  Tried: 7  Errors: 0  Failures: 0chmod: -R: No such file or directory-### Error in:   1:blackbox:0:git-annex init-.t/repo/.git/annex/objects/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa: removeLink: permission denied (Permission denied)-Testing 1:blackbox:1:git-annex add:0-### Error in:   1:blackbox:1:git-annex add:0-foo: openFile: permission denied (Permission denied)--&lt; and so on &gt;-</pre>--<p>the configure script finds sha1sum, builds and starts to run.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Feb  8 20:45:31 2011</span>-</div>----</div>-<div class="comment" id="comment-a80ca28341d111694df26e988e8ba862">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-a80ca28341d111694df26e988e8ba862">comment 8</a>--</div>--<div class="inlinecontent">-The chmod errors are because your chmod does not understand the -R argument. Only the test suite uses chmod -R. I've fixed it to modify modes manually.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 00:10:27 2011</span>-</div>----</div>-<div class="comment" id="comment-16afeb2906f20f7b774397f8f70ee4c9">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-16afeb2906f20f7b774397f8f70ee4c9">comment 9</a>--</div>--<div class="inlinecontent">-<p><a href="http://git.kitenet.net/?p=git-annex;a=commit;h=7a0826293e0ac6c0000f49a1618c1c613b909aa1">a0826293</a> fixed the last problem, there is coreutils available in macports, if they are installed you get the gnu equivalents but they are prefixed with a g (e.g. gchmod instead of chmod), I guess not everyone will have these install or prefer these on <a href="../install/OSX.html">OSX</a></p>--<p>Some more tests fail now...</p>--<pre>-Testing 1:blackbox:3:git-annex unannex:1:with content-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes-### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Testing 1:blackbox:4:git-annex drop:1:with remote-Testing 1:blackbox:4:git-annex drop:2:untrusted remote-Testing 1:blackbox:5:git-annex get-Testing 1:blackbox:6:git-annex move-Testing 1:blackbox:7:git-annex copy-### Failure in: 1:blackbox:7:git-annex copy-move --to of file already there failed-Testing 1:blackbox:8:git-annex unlock/lock-### Error in:   1:blackbox:8:git-annex unlock/lock-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:9:git-annex edit/commit:0-### Error in:   1:blackbox:9:git-annex edit/commit:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:9:git-annex edit/commit:1-### Error in:   1:blackbox:9:git-annex edit/commit:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:10:git-annex fix-### Error in:   1:blackbox:10:git-annex fix-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:11:git-annex trust/untrust/semitrust-### Error in:   1:blackbox:11:git-annex trust/untrust/semitrust-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:0-### Error in:   1:blackbox:12:git-annex fsck:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:1-### Error in:   1:blackbox:12:git-annex fsck:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:12:git-annex fsck:2-### Error in:   1:blackbox:12:git-annex fsck:2-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:13:git-annex migrate:0-### Error in:   1:blackbox:13:git-annex migrate:0-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:13:git-annex migrate:1-### Error in:   1:blackbox:13:git-annex migrate:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:14:git-annex unused/dropunused-### Error in:   1:blackbox:14:git-annex unused/dropunused-forkProcess: resource exhausted (Resource temporarily unavailable)-Cases: 30  Tried: 30  Errors: 11  Failures: 3-test: failed-make: *** [test] Error 1-</pre>--<p>On a side note, I think I found another bug in the testing. I had tested in a virtual machine in archlinux (a very recent updated version) Please see the report here <a href="./tests_fail_when_there_is_no_global_.gitconfig_for_the_user.html">tests fail when there is no global .gitconfig for the user</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Feb  9 05:12:52 2011</span>-</div>----</div>-<div class="comment" id="comment-9d352379b85d766eb9ec38e493a33f6d">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-9d352379b85d766eb9ec38e493a33f6d">comment 10</a>--</div>--<div class="inlinecontent">-I don't know what these problems forking could be. Can you strace it?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 11:04:50 2011</span>-</div>----</div>-<div class="comment" id="comment-4187c9f71ba54ff67060492279ccf209">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-4187c9f71ba54ff67060492279ccf209">comment 11</a>--</div>--<div class="inlinecontent">-I got dtruss to give me a trace, the output is quite big to post here (~560kb gzip'd), do you mind if I emailed it or posted it somewhere else for you?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Feb  9 15:35:47 2011</span>-</div>----</div>-<div class="comment" id="comment-0f737df732a24e021bd1e9284adf6623">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-0f737df732a24e021bd1e9284adf6623">comment 12</a>--</div>--<div class="inlinecontent">-joey@kitenet.net (hope I can make sense of dtruss output)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 15:47:30 2011</span>-</div>----</div>-<div class="comment" id="comment-def03d1ca17f7b708366ff9d0eb053bd">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-def03d1ca17f7b708366ff9d0eb053bd">comment 13</a>--</div>--<div class="inlinecontent">-<p>The dtrace puzzlingly does not have the same errors shown above, but a set of mostly new errors. I don't know what to make of that.</p>--<blockquote>-  <p>git-annex: git-annex/.t/repo/.git/hooks/pre-commit: fileAccess: permission denied (Operation not permitted)</p>-</blockquote>--<p>This seems to be caused by it setting the execute bit on the file. I don't know why that would fail; it's just written the file and renamed it into place so clearly should be able to write to it.</p>--<blockquote>-  <p>was able to modify annexed file's sha1foo content</p>-</blockquote>--<p>This also suggests something breaking with permissions.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Feb  9 17:59:47 2011</span>-</div>----</div>-<div class="comment" id="comment-737dfd1b223c01e2ed5770ae5cbb652b">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-737dfd1b223c01e2ed5770ae5cbb652b">comment 14</a>--</div>--<div class="inlinecontent">-I've been trying to dig around the trace and code, and used google to see if the forkProcess issue was a haskell thing or an OSX thing. It seems that <a href="http://hackage.haskell.org/trac/ghc/ticket/4493">http://hackage.haskell.org/trac/ghc/ticket/4493</a> someone may have ran into a similar issue, though I am not sure if its related.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Feb 12 17:19:24 2011</span>-</div>----</div>-<div class="comment" id="comment-0e29ccba399c3ec6809026689704d801">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-0e29ccba399c3ec6809026689704d801">comment 15</a>--</div>--<div class="inlinecontent">-<p>It may be possible that OSX has some low resource limits, for user processes (266 per user I think) doing a </p>--<pre><code>sudo sysctl -w kern.maxproc=2048-sudo sysctl -w kern.maxprocperuid=1024-sudo echo "limit maxfiles 1024 unlimited" &gt;&gt; /etc/launchd.conf-sudo echo "limit maxproc 1024 2048" &gt;&gt; /etc/launchd.conf-</code></pre>--<p>seems to change the behaviour of the tests abit...</p>--<pre>-Testing 1:blackbox:3:git-annex unannex:1:with content                         -### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-Testing 1:blackbox:4:git-annex drop:0:no remotes                              -### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Testing 1:blackbox:4:git-annex drop:1:with remote                             -Testing 1:blackbox:4:git-annex drop:2:untrusted remote                        -Testing 1:blackbox:5:git-annex get                                            -Testing 1:blackbox:6:git-annex move                                           -Testing 1:blackbox:7:git-annex copy                                           -Testing 1:blackbox:8:git-annex unlock/lock                                    -Testing 1:blackbox:9:git-annex edit/commit:0                                  -Cases: 30  Tried: 20  Errors: 0  Failures: 2add foo ok-ok-Testing 1:blackbox:9:git-annex edit/commit:1                                  -Testing 1:blackbox:10:git-annex fix                                           -Testing 1:blackbox:11:git-annex trust/untrust/semitrust                       -Testing 1:blackbox:12:git-annex fsck:0                                        -Cases: 30  Tried: 24  Errors: 0  Failures: 2  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  Bad file size; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/WORM:1297565141:20:foo-  Bad file content; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa-Testing 1:blackbox:12:git-annex fsck:1                                        -### Failure in: 1:blackbox:12:git-annex fsck:1-fsck failed to fail with content only available in untrusted (current) repository-Testing 1:blackbox:12:git-annex fsck:2                                        -Cases: 30  Tried: 26  Errors: 0  Failures: 3  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    58e831c2-371b-11e0-bc1f-47d738dc52ee  -- test repo-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    58e831c2-371b-11e0-bc1f-47d738dc52ee  -- test repo-Testing 1:blackbox:13:git-annex migrate:0                                     -Cases: 30  Tried: 27  Errors: 0  Failures: 3  git-annex: user error (Error in fork: forkProcess: resource exhausted (Resource temporarily unavailable))-### Failure in: 1:blackbox:13:git-annex migrate:0-migrate annexedfile failed-Testing 1:blackbox:13:git-annex migrate:1                                     -### Error in:   1:blackbox:13:git-annex migrate:1-forkProcess: resource exhausted (Resource temporarily unavailable)-Testing 1:blackbox:14:git-annex unused/dropunused                             -### Error in:   1:blackbox:14:git-annex unused/dropunused-forkProcess: resource exhausted (Resource temporarily unavailable)-Cases: 30  Tried: 30  Errors: 2  Failures: 4-test: failed-</pre>--<p>the number of failures vary as I change the values of the maxprocs, I think I  have narrowed it down to OSX just being stupid with limits thus causing the tests to fail.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Feb 12 22:45:51 2011</span>-</div>----</div>-<div class="comment" id="comment-2e6982dcbd6df823415ebc2bfdc7ce30">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-2e6982dcbd6df823415ebc2bfdc7ce30">comment 16</a>--</div>--<div class="inlinecontent">-I've fixed the test suite to not accumulate all those zombie processes. Now only 2 or 3 processes should run max. Am curious to see if that clears up all the problems.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb 13 00:52:26 2011</span>-</div>----</div>-<div class="comment" id="comment-3e4e37bdbfe669db40182d3ca36b19ce">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-3e4e37bdbfe669db40182d3ca36b19ce">comment 17</a>--</div>--<div class="inlinecontent">-<p>Yeap, that did the trick. I just tested a few separate OSX 10.6.6 systems and the tests are better behaved now, only 3 failures now.</p>--<p>So the tests behave better (at least we don't get resource fork errors any more)</p>--<ul>-<li>after the commit c319a3 without modifying the system limits (of 266 procs per user)</li>-<li>without the commit c319a3 and when I increase the system process limits to as much as OSX allows</li>-</ul>--<p>On all the systems I tested on, I'm down to 3 failures now.</p>--<pre>-### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-### Failure in: 1:blackbox:4:git-annex drop:0:no remotes-drop wrongly succeeded with no known copy of file-Cases: 30  Tried: 20  Errors: 0  Failures: 2add foo ok-ok-Cases: 30  Tried: 24  Errors: 0  Failures: 2  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  Bad file size; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/WORM:1297594011:20:foo-  Bad file content; moved to /Users/jtang/develop/git-annex/.t/tmprepo/.git/annex/bad/SHA1:ee80d2cec57a3810db83b80e1b320df3a3721ffa-### Failure in: 1:blackbox:12:git-annex fsck:1-fsck failed to fail with content only available in untrusted (current) repository-Cases: 30  Tried: 26  Errors: 0  Failures: 3  Only 1 of 2 trustworthy copies of foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    90d63906-375e-11e0-8867-abb8a6368269  -- test repo-  Only 1 of 2 trustworthy copies of sha1foo exist.-  Back it up with git-annex copy.-  The following untrusted locations may also have copies: -    90d63906-375e-11e0-8867-abb8a6368269  -- test repo-Cases: 30  Tried: 30  Errors: 0  Failures: 3-</pre>--<p>It's the same set of failures across all the OSX systems that I have tested on. Now I just need to figure out why there are still these three failures.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 06:46:54 2011</span>-</div>----</div>-<div class="comment" id="comment-fba5cc443040c137fdc1f0e37079bf34">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-fba5cc443040c137fdc1f0e37079bf34">maybe killed another osx bug in the test.</a>--</div>--<div class="inlinecontent">-<p>I think I have figured out why </p>--<pre><code>### Failure in: 1:blackbox:3:git-annex unannex:1:with content-foo is not a symlink-</code></pre>--<p>It goes back to the this piece of code (in test.hs)</p>--<pre><code>copyrepo :: FilePath -&gt; FilePath -&gt; IO FilePath-copyrepo old new = do-        cleanup new-        ensuretmpdir-        Utility.boolSystem "cp" ["-pr", old, new] @? "cp -pr failed"-</code></pre>--<p>It seems that on OSX it does not preserve the symbolic link information, basically cp is not gnu cp on OSX, doing a "cp -a SOURCE DEST" seem's to the right thing on OSX. I tried it out on my archlinux workstation by replacing <em>-pr</em> with just <em>-a</em> and all the tests passed on archlinux.</p>--<p>I'm not sure what the implications would be with changing the test with changing the cp command.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 11:12:10 2011</span>-</div>----</div>-<div class="comment" id="comment-2b8ef7134e8374c9ed68089f3c3cf0c2">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-2b8ef7134e8374c9ed68089f3c3cf0c2">comment 19</a>--</div>--<div class="inlinecontent">-<p>On second thought and after some messing (trying most of the options and combinations of options on OSX for).... I tried replacing cp with gnu cp from coreutils on my OSX install, and all the tests passed. <em>sigh</em> cp -a is preserving some permissions and attributes but not all, its not behaving in the same way as the gnu cp does... the closet thing that I have found on OSX that behaves in the same way as gnu "cp -pr" is to use "ditto".</p>--<p>Just doing a "ditto SOURCE DEST" in the tests passes everything. I'm not sure if its a good idea to use this even though it works. Though this is just the tests, does it affect CopyFile.hs where "cp" is called?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Feb 13 11:55:47 2011</span>-</div>----</div>-<div class="comment" id="comment-b38824a290d97393c1b81179462d0cf6">--<div class="comment-subject">--<a href="/bugs/Problems_running_make_on_osx.html#comment-b38824a290d97393c1b81179462d0cf6">comment 20</a>--</div>--<div class="inlinecontent">-<p>Outside the test suite, git-annex's actual use of cp puts fairly low demands on it. It tries to use cp -a or cp -p if available just to preserve whatever attributes it can preserve, but the worst case if that you have a symlink pointing to a file that doesn't have the original timestamp or whatever. And there's little expectation git preserves that stuff anyway.</p>--<p>I will probably try to make the test suite entirely use git clone rather than cp.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Feb 13 13:54:09 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/S3_memory_leaks.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>S3 memory leaks</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-S3 memory leaks--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>S3 has memory leaks</p>--<p>Sending a file to S3 causes a slow memory increase toward the file size.</p>--<p>Copying the file back from S3 causes a slow memory increase toward the-file size.</p>--<p>The author of hS3 is aware of the problem, and working on it. I think I-have identified the root cause of the buffering; it's done by hS3 so it can-resend the data if S3 sends it a 307 redirect. --<span class="createlink">Joey</span></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/Unfortunate_interaction_with_Calibre.html
@@ -1,179 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Unfortunate interaction with Calibre</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-Unfortunate interaction with Calibre--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h1>Calibre</h1>--<p>Calibre is a somewhat popular eBook management package that's also free software.  <a href="http://calibre-ebook.com/">http://calibre-ebook.com/</a>  </p>--<p>Install via-    # apt-get install calibre</p>--<p>There is a somewhat unfortunate interaction between Calibre and git-annex...</p>--<ul>-<li>git-annex makes its files become read-only.  By the way, that's not quite obvious from the documentation; I suggest making that more prominent.</li>-<li>Calibre modifies files (not quite sure of semantics, how, or why) when doing various operations, notably such as when copying a book from one's library to one's portable reading device.</li>-</ul>--<p>These don't play well together, sadly.</p>--<p>I'd expect most of the issue to sit on the Calibre side, and have reported it as a bug.-<a href="https://bugs.launchpad.net/calibre/+bug/739045">Calibre bug #739045</a>-Preliminary indication is that they're treating it as a functionality change they'll decline to fix.  Which isn't entirely unreasonable - I anticipated as much, and I don't want to treat that as a bad/wrong decision.</p>--<p>However, I think it's:-* Unfortunate, as fitting Calibre together with git-annex seems like a neat idea.-* Useful to make sure that this kind of "doesn't play well together" condition is documented, even if only as a bug report.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-e425e0132fe01b964c51ae037a770bd6">--<div class="comment-subject">--<a href="/bugs/Unfortunate_interaction_with_Calibre.html#comment-e425e0132fe01b964c51ae037a770bd6">comment 1</a>--</div>--<div class="inlinecontent">-Maybe I will run into issues myself somewhere down the road, but generally speaking, I really really like the fact that files are immutable by default.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 21 09:15:03 2011</span>-</div>----</div>-<div class="comment" id="comment-a0e5c028cc5173042e24add020e44f5e">--<div class="comment-subject">--<a href="/bugs/Unfortunate_interaction_with_Calibre.html#comment-a0e5c028cc5173042e24add020e44f5e">comment 2</a>--</div>--<div class="inlinecontent">-One option would be to use the new <span class="createlink">sharebox a FUSE filesystem for git-annex</span>, which would hide the immutable file details from Calibre, and proxy any changes it made through to git-annex as a series of <code>git annex unlock; modify; git-annex lock</code>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 31 15:32:25 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/WORM:_Handle_long_filenames_correctly.html
@@ -1,224 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>WORM: Handle long filenames correctly</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-WORM: Handle long filenames correctly--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>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.</p>--<blockquote>-  <p>Since there seems no strong argument for a WORM100, and better options-  exist, closing. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-27efbeffb106ffae521f30101c4cd9d4">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-27efbeffb106ffae521f30101c4cd9d4">comment 1</a>--</div>--<div class="inlinecontent">-<p>Seems like you probably have files in git with nearly as long filenames as the key files. Course, you can rename those yourself.</p>--<p>This couldn't be changed directly in WORM without some ugly transition, but it would be possible to implement it as a WORM100 or so. OTOH, if you're going to git annex migrate, you might as well use SHA1.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr  8 13:14:25 2011</span>-</div>----</div>-<div class="comment" id="comment-9507ebb7dbf72c50e2bf299a05411ff4">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-9507ebb7dbf72c50e2bf299a05411ff4">comment 2</a>--</div>--<div class="inlinecontent">-What if your files have the same prefix and it happens to be 100 chars long? This can not be solved within WORM, but as Joey pointed out, SHA* exists.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr  8 18:02:41 2011</span>-</div>----</div>-<div class="comment" id="comment-0d851a7a326fef41cb559ee66902b78d">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-0d851a7a326fef41cb559ee66902b78d">comment 3</a>--</div>--<div class="inlinecontent">-<p>I wouldn't say it's completly impossible for a WORM100 to work. It would just have the contract that the pair of mtime+100chars has to be unique for each unique piece of data.</p>--<p>But, I have yet to be convinced there's any point, since SHA1 exists.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  9 16:11:59 2011</span>-</div>----</div>-<div class="comment" id="comment-ec872e5d640622448a430219b09cdf36">--<div class="comment-subject">--<a href="/bugs/WORM:_Handle_long_filenames_correctly.html#comment-ec872e5d640622448a430219b09cdf36">comment 4</a>--</div>--<div class="inlinecontent">-mtime+100chars can still get collisions and a <em>lot</em> easier than even SHA1. This introduces more problems that it solves, imo.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat Apr  9 19:45:28 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/add_script-friendly_output_options.html
@@ -1,119 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>add script-friendly output options</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-add script-friendly output options--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I have a need to use git-annex from a larger program. It'd be great if the information output by some of the commands that is descriptive (for example, whereis) could be sent to stdout in a machine-readable format like (preferably) JSON, or XML. That way I can simply read in the output of the command and use the data directly instead of having to parse it via regexes or other such string manipulation.</p>--<p>This could perhaps be triggered by a --json or --xml flag to the relevant commands.</p>--<blockquote>-  <p>This is <a href="./done.html">done</a>, --json is supported by all commands, more or less.</p>-  -  <p>Caveats: </p>-  -  <ul>-  <li>the version, status, and find commands produce custom output and so-  no json. This could change for version and status; find needs to just-  be a simple list of files, I think </li>-  <li>The "note" fields may repeat multiple times per object with different-  notes and are of course not machine readable, and subject to change.</li>-  <li>Output of helper commands like rsync is not diverted away, and-  could clutter up the json output badly. Should only affect commands-  that transfer data. And AFAICS, wget and rsync both output their-  progress displays to stderr, so shouldn't be a problem.</li>-  </ul>-  -  <p>--<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/annex_add_in_annex.html
@@ -1,104 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>annex add in annex</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-annex add in annex--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I accidentally annexed some files in the .git-annex directory and it cause git-annex/git to be very unhappy when i pulled the repo to somewhere else. It might be worth teaching git-annex to disallow annex'ing of files inside the .git-annex/.git directories.</p>--<blockquote>-  <p>There is a guard against <code>git annex add .git-annex/foo</code>, but it doesn't-  notice <code>cd .git-annex; git annex add foo</code>. --<span class="createlink">Joey</span></p>-  -  <p>Now fixed, by removing the .git-annex directory. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/bare_git_repos.html
@@ -1,129 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>bare git repos</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-bare git repos--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>It would be nice if git-annex could be used in bare git repos.-However, that is not currently supported. Problems include:</p>--<ul>-<li>git-annex often does not read a git repo's config before touching it,-so it doesn't know if the repo is bare or not-(reading the config when operating on ssh repos would be a pain and SLOW;-I had some of that code in as of 1aa19422ac8748eeff219ac4f46df166dae783c5,-but ripped it all out)</li>-<li>.. which results in creating <code>.git/annex</code> in a bare repo, which mightily-confuses git (so it will complain that the bare repo is not-a git repo at all!)</li>-<li><code>.git-annex/</code> needs to have state recorded to it and committed, and that-is not possible with a bare repo. (If <a href="../todo/branching.html">branching</a> were done,-that might be fixed.) (now fixed)</li>-</ul>--<hr />--<p>Update: Now that git-annex-shell is used for accessing remote repos,-it would be possible to add smarts about bare repos there, and avoid-some of the above problems. Probably only the state recording problem-remains.</p>--<p>A possible other approach to the state recording repo is to not-record state changes on the remote in that case. Git-annex already-records remote state changes locally whenever it modifies the state of a-remote. --<span class="createlink">Joey</span></p>--<blockquote>-  <p>And... <a href="./done.html">done</a>! See <a href="../bare_repositories.html">bare repositories</a> for current status-  and gotchas. --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/building_on_lenny.html
@@ -1,190 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>building on lenny</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-building on lenny--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>hi,</p>--<p>I am trying to build git annex on lenny.</p>--<p>I checked out the latest from git c88d4939453845efee04da811d64aa41046f9c11,-installed all the packages (some from backports) as required by dpkg-buildpackage</p>--<p>Then I get this:</p>--<pre><code>...-mkdir -p build-ghc -odir build -hidir build --make git-annex-[ 1 of 19] Compiling Utility          ( Utility.hs, build/Utility.o )-[ 2 of 19] Compiling GitRepo          ( GitRepo.hs, build/GitRepo.o )-[ 3 of 19] Compiling GitQueue         ( GitQueue.hs, build/GitQueue.o )-[ 4 of 19] Compiling TypeInternals    ( TypeInternals.hs, build/TypeInternals.o )-[ 5 of 19] Compiling Types            ( Types.hs, build/Types.o )-[ 6 of 19] Compiling Annex            ( Annex.hs, build/Annex.o )-[ 7 of 19] Compiling Locations        ( Locations.hs, build/Locations.o )-[ 8 of 19] Compiling UUID             ( UUID.hs, build/UUID.o )-[ 9 of 19] Compiling LocationLog      ( LocationLog.hs, build/LocationLog.o )-[10 of 19] Compiling Core             ( Core.hs, build/Core.o )-[11 of 19] Compiling Backend.URL      ( Backend/URL.hs, build/Backend/URL.o )-[12 of 19] Compiling Backend          ( Backend.hs, build/Backend.o )--Backend.hs:114:50:-    Not in scope: type constructor or class `SomeException'-make[1]: *** [git-annex] Error 1-make[1]: Leaving directory `/home/cstamas/tmp/git-annex'-dh_auto_build: make -j1 returned exit code 2-make: *** [build] Error 2-dpkg-buildpackage: failure: debian/rules build gave error exit status 2-</code></pre>--<p>I will try to check the mentioned file for error, but I do not know how to program in haskell.</p>--<p>Thanks for your help! --<span class="createlink">cstamas</span></p>--<blockquote>-  <p>Newer versions of ghc changed their exception handling types, and-  I coded git-annex to use the new style and not the old. gch6 6.12 will-  work. I do not think there is a backport available though. --<span class="createlink">Joey</span></p>-  -  <p>Ok, found and deployed a workaround. It is not tested. Let me know how it-  works for you. --<span class="createlink">Joey</span></p>-  -  <blockquote>-    <p>I did a git pull and now I get:</p>-  </blockquote>-</blockquote>--<pre><code>mkdir -p build-ghc -cpp -odir build -hidir build --make git-annex-[ 1 of 20] Compiling Portability      ( Portability.hs, build/Portability.o )--Portability.hs:13:21:-    Not in scope: type constructor or class `Exception'-make[1]: *** [git-annex] Error 1-make[1]: Leaving directory `/home/cstamas/tmp/git-annex'-dh_auto_build: make -j1 returned exit code 2-make: *** [build] Error 2-dpkg-buildpackage: failure: debian/rules build gave error exit status 2-</code></pre>--<blockquote>-  <blockquote>-    <p>--<span class="createlink">cstamas</span></p>-    -    <blockquote>-      <p>Ok well, I'm not going to try to reimplement all of-      Control.Exception.Extensible so I've made it use it. You will have to-      figure out how to install that library yourself though, I don't know-      how to use cabal with such an old ghc. Library is here:-      <a href="http://hackage.haskell.org/package/extensible-exceptions">http://hackage.haskell.org/package/extensible-exceptions</a> -      and I asked how to get it on stable here:-      <a href="http://ask.debian.net/questions/how-to-get-haskell-extensible-extceptions-on-stable">http://ask.debian.net/questions/how-to-get-haskell-extensible-extceptions-on-stable</a> --<span class="createlink">Joey</span> </p>-      -      <blockquote>-        <p>I made some effort with cabal on lenny. I can install (and I did it) cabal-        from squeeze as dependencies are ok. Then I installed extensible-        exceptions, but it places it in some local dir that git-annex's installer-        (or ghc itself) does not know about.</p>-        -        <p>Later I realized that <em>only</em> for the compilation ghc6 and its friends are-        needed. So I built the package on my other machine running squeeze. Then-        resulting deb packages cleanly installs on lenny</p>-        -        <p>For me this is OK. Thanks! --<span class="createlink">cstamas</span></p>-      </blockquote>-    </blockquote>-  </blockquote>-</blockquote>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Wed Apr 13 16:18:01 2011</span>-<!-- Created <span class="date">Wed Apr 13 16:18:01 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/check_for_curl_in_configure.hs.html
@@ -1,193 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>arbitrary/configurable backends</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-arbitrary/configurable backends--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>(Retitling as this has drifted..)</p>--<hr />--<p>I thought this might be useful, since curl is being used for the URL backend, it might be worth checking for it's existence.</p>--<pre>-diff --git a/configure.hs b/configure.hs-index 772ba54..1a563e0 100644---- a/configure.hs-+++ b/configure.hs-@@ -13,6 +13,7 @@ tests = [-        , TestCase "uuid generator" $ selectCmd "uuid" ["uuid", "uuidgen"]-        , TestCase "xargs -0" $ requireCmd "xargs_0" "xargs -0 --<blockquote>-  <p>Well, curl is an optional extra, so requireCmd is too strong. Changed-  to testCmd and applied, thank you!</p>-  -  <p>I thought about actually <em>using</em> the resulting SysConfig.curl-  to disable the URL backend if False.. but probably it's better-  to just let it fail if curl is not available. Although, if we wanted-  to add a check for wget or something and use it when curl was not-  available, that might be worth doing. --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>I was thinking that is it worth doing a generic "stat", "delete", "get" -    and "put" options, I do like the idea of having the possibility of -    being about to use completely arbitrary storage systems or arbitrary -    transfer systems. If there was the capability of doing so it would be -    interesting to see possibilities of using aria2 for using something -    like bittorrent as backend, or using something like irods or some -    grid storage system as the storage archive. It's just an idea as -    I have seen it implemented quite well in irods.</p>-    -    <blockquote>-      <p>I'm unsure about the idea of having a backend where that is-      parameterized. It would mean that one annex's GENERIC-foo key-      might be entirely different from another's key with the same backend-      and details. And a misconfiguration could get data the wrong-      way and get the wrong data, etc.</p>-      -      <p>I mostly look at the URL backend as an example that can be modified to-      make this kind of custom backend. You already probably know enough to-      make a TORRENT backend where keys are the urls to torrents to download-      with <code>aria2c --follow-torrent=mem</code>.</p>-      -      <p>I am also interested in doing backends that use eg, cloud storage.-      A S3 backend that could upload files to S3 in addition to downloading-      them, for example, would be handy. --<span class="createlink">Joey</span></p>-      -      <blockquote>-        <p>So, rather than use backends to do this, it instead made more sense-        to make them <a href="../special_remotes.html">special remotes</a>. The URL backend remains a bit-        of a special case, and a bittorrent backend that downloaded a file-        from a bittorrent url would still be a good use of backend, but for-        storing files in external data stores like S3, making it a remote-        makes better sense. I think I can close this bug now, <a href="./done.html">done</a>-        --<span class="createlink">Joey</span> </p>-      </blockquote>-    </blockquote>-  </blockquote>-</blockquote>--<p>also in Backend/URL.hs is it worth making a minor change to the way curl is called (I'm not sure if the following is correct or not)</p>--<blockquote>-  <p>It's correct, typewise, but I don't see any real reason to bother-  with the change. But I do appreciate patches, which have been rare-  so far, probaby because of Haskell.. :) --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>heh agreed</p>-  </blockquote>-</blockquote>--<pre>-diff --git a/Backend/URL.hs b/Backend/URL.hs-index 29dc8fe..4afcf86 100644---- a/Backend/URL.hs-+++ b/Backend/URL.hs-@@ -50,10 +50,13 @@ dummyFsck _ _ _ = return True- dummyOk :: Key -&gt; Annex Bool- dummyOk _ = return True--+curl :: [CommandParam] -&gt; IO Bool-+curl = boolSystem "curl"-+- downloadUrl :: Key -&gt; FilePath -&gt; Annex Bool- downloadUrl key file = do-        showNote "downloading"-        showProgress -- make way for curl progress bar--       liftIO $ boolSystem "curl" [Params "-# -o", File file, File url]-+       liftIO $ curl [Params "-# -o", File file, File url]-        where-                url = join ":" $ drop 1 $ split ":" $ show key -</pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/conflicting_haskell_packages.html
@@ -1,163 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>conflicting haskell packages</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-conflicting haskell packages--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The compilation command should states which packages are used and avoid the default mechnasim that automatically search for them.</p>--<p>This can be done by the flags -hide-packages and then -package foo</p>--<blockquote>-  <p>My ghc does not have a <code>--hide-packages</code> option.</p>-  -  <p>Could you just show the build problem that you are suggesting I work-  around? --<span class="createlink">Joey</span></p>-  -  <p>Thanks npouillard, I see the problem now.-  <a href="http://stackoverflow.com/questions/2048953/control-monad-state-found-in-multiple-packages-haskell">http://stackoverflow.com/questions/2048953/control-monad-state-found-in-multiple-packages-haskell</a></p>-  -  <p>I've added "-ignore-package monads-fd" to GHCFLAGS. I hope I don't-  really have to hide all packages and individually turn them back on;-  surely this monads-fd/mtl conflict is an exception, and Haskell's module-  system is not a mess of conflicting modules? --<span class="createlink">Joey</span> <a href="./done.html">done</a></p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-0eec11ffce77cde9ad7f00392763c90d">--<div class="comment-subject">--<a href="/bugs/conflicting_haskell_packages.html#comment-0eec11ffce77cde9ad7f00392763c90d">how to reproduce the package conflict issue</a>--</div>--<div class="inlinecontent">-<p>If you install the monads-fd package (with cabal install for instance), then you can no longer build git-annex:</p>--<pre>-./configure-  checking cp -a... yes-  checking cp -p... yes-  checking cp --reflink=auto... yes-  checking uuid generator... uuid-  checking xargs -0... yes-  checking rsync... yes-ghc -O2 -Wall --make git-annex--Annex.hs:22:7:-    Ambiguous module name `Control.Monad.State':-      it was found in multiple packages: monads-fd-0.2.0.0 mtl-2.0.1.0-make: *** [git-annex] Error 1-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Mon Feb  7 10:12:43 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/done.html
@@ -1,331 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>done</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-done--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>recently fixed <a href="../bugs.html">bugs</a></p>--<div id="feedlink">---</div>-<p>--<a href="./Build_error_on_Mac_OSX_10.6.html">Build error on Mac OSX 10.6</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.html">rsync special remote fails to &#96;get&#96; files which have names containing spaces</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./fsck_output.html">fsck output</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./support_bare_git_repo__44___with_the_annex_directory_exposed_to_http.html">support bare git repo&#44; with the annex directory exposed to http</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./test_suite_shouldn__39__t_fail_silently.html">test suite shouldn&#39;t fail silently</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./add_script-friendly_output_options.html">add script-friendly output options</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.html">Error while adding a file &#34;createSymbolicLink: already exists&#34;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./annex_unannex__47__uninit_should_handle_copies.html">annex unannex&#47;uninit should handle copies</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./git-annex_has_issues_with_git_when_staging__47__commiting_logs.html">git-annex has issues with git when staging&#47;commiting logs</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./git_annex_upgrade_loses_track_of_files_with___34____38____34___character___40__and_probably_others__41__.html">git annex upgrade loses track of files with &#34;&#38;&#34; character &#40;and probably others&#41;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>---</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./__39__annex_add__39___fails_to___39__git_add__39___for_parent_relative_path.html">&#39;annex add&#39; fails to &#39;git add&#39; for parent relative path</a>--<a href="./Build_error_on_Mac_OSX_10.6.html">Build error on Mac OSX 10.6</a>--<a href="./Displayed_copy_speed_is_wrong.html">Displayed copy speed is wrong</a>--<a href="./Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.html">Error while adding a file &#34;createSymbolicLink: already exists&#34;</a>--<a href="./Makefile_is_missing_dependancies.html">Makefile is missing dependancies</a>--<a href="./Name_scheme_does_not_follow_git__39__s_rules.html">Name scheme does not follow git&#39;s rules</a>--<a href="./No_easy_way_to_re-inject_a_file_into_an_annex.html">No easy way to re-inject a file into an annex</a>--<a href="./No_version_information_from_cli.html">No version information from cli</a>--<a href="./Problems_running_make_on_osx.html">Problems running make on osx</a>--<a href="./S3_bucket_uses_the_same_key_for_encryption_and_hashing.html">S3 bucket uses the same key for encryption and hashing</a>---<span class="popup">...-<span class="balloon">--<a href="./WORM:_Handle_long_filenames_correctly.html">WORM: Handle long filenames correctly</a>--<a href="./add_range_argument_to___34__git_annex_dropunused__34___.html">add range argument to &#34;git annex dropunused&#34; </a>--<a href="./add_script-friendly_output_options.html">add script-friendly output options</a>--<a href="./annex_add_in_annex.html">annex add in annex</a>--<a href="./annex_unannex__47__uninit_should_handle_copies.html">annex unannex&#47;uninit should handle copies</a>--<a href="./backend_version_upgrade_leaves_repo_unusable.html">backend version upgrade leaves repo unusable</a>--<a href="./bare_git_repos.html">bare git repos</a>--<a href="../bugs.html">bugs</a>--<a href="./build_issue_with_latest_release_0.20110522-1-gde817ba.html">build issue with latest release 0.20110522-1-gde817ba</a>--<a href="./building_on_lenny.html">building on lenny</a>--<a href="./check_for_curl_in_configure.hs.html">check for curl in configure.hs</a>--<a href="./configure_script_should_detect_uuidgen_instead_of_just_uuid.html">configure script should detect uuidgen instead of just uuid</a>--<a href="./conflicting_haskell_packages.html">conflicting haskell packages</a>--<a href="./copy_fast_confusing_with_broken_locationlog.html">copy fast confusing with broken locationlog</a>--<a href="./dotdot_problem.html">dotdot problem</a>--<a href="./dropping_files_with_a_URL_backend_fails.html">dropping files with a URL backend fails</a>--<a href="./encrypted_S3_stalls.html">encrypted S3 stalls</a>--<a href="./error_propigation.html">error propigation</a>--<a href="./error_with_file_names_starting_with_dash.html">error with file names starting with dash</a>--<a href="./fat_support.html">fat support</a>--<a href="./free_space_checking.html">free space checking</a>--<a href="./fsck_output.html">fsck output</a>--<a href="./fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.html">fsck&#47;fix should check&#47;fix the permissions of .git&#47;annex</a>--<a href="./git_annex_add_eats_files_when_filename_is_too_long.html">git annex add eats files when filename is too long</a>--<a href="./git_annex_copy_--fast_does_not_copy_files.html">git annex copy --fast does not copy files</a>--<a href="./git_annex_copy_-f_REMOTE_._doesn__39__t_work_as_expected.html">git annex copy -f REMOTE . doesn&#39;t work as expected</a>--<a href="./git_annex_get_choke_when_remote_is_an_ssh_url_with_a_port.html">git annex get choke when remote is an ssh url with a port</a>--<a href="./git_annex_gets_confused_about_remotes_with_dots_in_their_names.html">git annex gets confused about remotes with dots in their names</a>--<a href="./git_annex_initremote_walks_.git-annex.html">git annex initremote walks .git-annex</a>--<a href="./git_annex_migrate_leaves_old_backend_versions_around.html">git annex migrate leaves old backend versions around</a>--<a href="./git_annex_should_use___39__git_add_-f__39___internally.html">git annex should use &#39;git add -f&#39; internally</a>--<a href="./git_annex_unlock_is_not_atomic.html">git annex unlock is not atomic</a>--<a href="./git_annex_unused_failes_on_empty_repository.html">git annex unused failes on empty repository</a>--<a href="./git_annex_upgrade_loses_track_of_files_with___34____38____34___character___40__and_probably_others__41__.html">git annex upgrade loses track of files with &#34;&#38;&#34; character &#40;and probably others&#41;</a>--<a href="./git_command_line_constructed_by_unannex_command_has_tons_of_redundant_-a_paramters.html">git command line constructed by unannex command has tons of redundant -a paramters</a>--<a href="./git-annex_directory_hashing_problems_on_osx.html">git-annex directory hashing problems on osx</a>--<a href="./git-annex_has_issues_with_git_when_staging__47__commiting_logs.html">git-annex has issues with git when staging&#47;commiting logs</a>--<a href="./git-annex_incorrectly_parses_bare_IPv6_addresses.html">git-annex incorrectly parses bare IPv6 addresses</a>--<a href="./git-annex-shell:_internal_error:_evacuate__40__static__41__:_strange_closure_type_30799.html">git-annex-shell: internal error: evacuate&#40;static&#41;: strange closure type 30799</a>--<a href="./ordering.html">ordering</a>--<a href="./problem_commit_normal_links.html">problem commit normal links</a>--<a href="./problem_with_upgrade_v2_-__62___v3.html">problem with upgrade v2 -&#62; v3</a>--<a href="./problems_with_utf8_names.html">problems with utf8 names</a>--<a href="./rsync_special_remote_fails_to___96__get__96___files_which_have_names_containing_spaces.html">rsync special remote fails to &#96;get&#96; files which have names containing spaces</a>--<a href="./scp_interrupt_to_background.html">scp interrupt to background</a>--<a href="./support_bare_git_repo__44___with_the_annex_directory_exposed_to_http.html">support bare git repo&#44; with the annex directory exposed to http</a>--<a href="./test_suite_shouldn__39__t_fail_silently.html">test suite shouldn&#39;t fail silently</a>--<a href="./tests_fail_when_there_is_no_global_.gitconfig_for_the_user.html">tests fail when there is no global .gitconfig for the user</a>--<a href="./tmp_file_handling.html">tmp file handling</a>--<a href="./unannex_vs_unlock_hook_confusion.html">unannex vs unlock hook confusion</a>--<a href="./unhappy_without_UTF8_locale.html">unhappy without UTF8 locale</a>--<a href="./upgrade_left_untracked_.git-annex__47____42___directories.html">upgrade left untracked .git-annex&#47;&#42; directories</a>--<a href="./weird_local_clone_confuses.html">weird local clone confuses</a>--</span>-</span>--</div>-------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/dotdot_problem.html
@@ -1,100 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>dotdot problem</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-dotdot problem--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>cannot "git annex ../foo"   (GitRepo.relative is buggy and-git-ls-files also refuses w/o --full-name, which would need other changes)</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/dropping_files_with_a_URL_backend_fails.html
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>dropping files with a URL backend fails</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-dropping files with a URL backend fails--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I was trying out the example with the walkthrough <span class="createlink">using the URL backend</span>. I tried dropping files that I had after doing an "git annex get ." which have the URL backend associated with the files it fails with</p>--<pre>-[jtang@lenny gc]$ git annex drop -v curl-7.21.4.tar.gz-drop curl-7.21.4.tar.gz-failed-git-annex: 1 failed-</pre>--<p>At first I thought it was just my OSX machine not having the coreutils stuff load up before the BSD utils, but I then tried the same thing on my archlinux machine and it showed the same behaviour, that is I could not drop a file with the URL backend as shown in the walkthrough.</p>--<blockquote>-  <p>Whoops, got some logic backwards. <a href="./done.html">fixed</a>! --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/encrypted_S3_stalls.html
@@ -1,105 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>encrypted S3 stalls</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-encrypted S3 stalls--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Sending large-ish (few megabytes) files to encrypted S3 remotes stalls out.-It works for the tiny files I was using to test while developing it, on-dialup.</p>--<p>There was a similar issue with bup, which I fixed by forking a process-rather than using a thread to do some IO. Probably need the same here.---<span class="createlink">Joey</span></p>--<p><a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/error_propigation.html
@@ -1,99 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>error propigation</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-error propigation--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>If a subcommand fails w/o throwing an error, no error is propigated to the-git-annex exit code. With --quiet, this makes it look like the command-succeeded. <a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/error_with_file_names_starting_with_dash.html
@@ -1,113 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>error with file names starting with dash</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-error with file names starting with dash--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git annex add has problems if items start with dashes, example:</p>--<p>-wut-a-directory-name-/file1</p>--<p>leads to</p>--<p>[[!format  bash """-add -wut-a-directory-name-/file1 (checksum...) sha1sum: invalid option -- 'u'-„sha1sum --help“ gibt weitere Informationen.</p>--<p>git-annex: : hGetLine: end of file-"""]]</p>--<blockquote>-  <p>This is fixed in git, at least I think I've found all cases where-  filenames are passed to programs and escaped them. --<span class="createlink">Joey</span> <a href="./done.html">done</a></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/fat_support.html
@@ -1,296 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fat support</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-fat support--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Klaus pointed out that there are two problems that keep-git-annex from being used on USB keys, that would typically-be VFAT formatted:</p>--<ul>-<li>Use of symlinks, which VFAT does not support. Very hard to fix.-Instead, just use <a href="../bare_repositories.html">bare repositories</a> on the key,-they're supported now.</li>-<li>Use of ":" in filenames of object files, also not supported.-Could easily be fixed by reorganizing the object directory.</li>-</ul>--<p><a href="./done.html">Done</a>; in annex.version 2 repos, colons are entirely avoided in-filenames. So a bare git clone can be put on VFAT, and git-annex-used to move stuff --to and --from it, for sneakernet.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-afade10cf4229ca277eb1901dbe7b6fd">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-afade10cf4229ca277eb1901dbe7b6fd">Exporting to a FAT filesystem?</a>--</div>--<div class="inlinecontent">-<p>I'm using git-annex to keep my music in sync between all of my different machines. What I'd love to be able to do is to also keep it in sync with my iRiver player. Unfortunately, the firmware, Rockbox, doesn't support ext3, so I'm stuck with a FAT filesystem.</p>--<p>I can see how the design of git-annex makes it rather difficult to get rid of the symlinks, so how about taking a different approach: something like a "git annex export DEST" which would take a destination (not a git remote) and rsync the content over to there as regular files.</p>--<p>Maybe "git annex sync DEST" or "git annex rsync DEST" would be better names if we want to convey the idea that the destination will be made to look like the source repo, including performing the necessary deletions.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=fmarier&amp;do=goto">fmarier</a>--</span>---&mdash; <span class="date">Mon Apr  4 03:40:41 2011</span>-</div>----</div>-<div class="comment" id="comment-1e8c1c70e970b1ddd177fd2d98a99e12">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-1e8c1c70e970b1ddd177fd2d98a99e12">comment 2</a>--</div>--<div class="inlinecontent">-<p>Hey @fmarier. Well, this bug report is closed because you can already get rid of the symlinks. Just put a bare git repo on your fat filesystem, and use git-annex copy --to/--from there.</p>--<p>Now, that puts all the files that are on the device in .git/annex/objects/xx/yy/blah.mp3 -- how well rockbox would support that I don't know. And if it tries to modify or delete those files, git annex also can't help you manage those changes.</p>--<p>Another recent option is the <a href="../special_remotes/directory.html">directory</a> special remote type, which again uses "xx/yy/blah.mp3" and can't track changes made to the files. This could perhaps be extended in the direction you suggest, although trying to fit this into the special remote infrastructure might not be a good fit really.</p>--<p>The most likely way this has to get dealt with is really by using <a href="../todo/smudge.html">smudge</a> filters, which would eliminate the symlinks and allow copying a non-bare git repo onto vfat. </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Apr  4 14:20:45 2011</span>-</div>----</div>-<div class="comment" id="comment-94c2975bfa60805cff0f1d382d62f431">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-94c2975bfa60805cff0f1d382d62f431">comment 3</a>--</div>--<div class="inlinecontent">-<p>Thanks for the reply @joey.</p>--<p>While it would certainly be possible for a bare repo to exist on my iRiver, the problem is that the music player uses the filesystem to organize files into directories like "Artist/Album/Track.ogg". So replacing that with "..../xx/yy/Track.ogg" would make it fairly difficult to browse my music collection and select the album/track I want to listen to :)</p>--<p>So unless I have the files physically organized like the symlinks, then it's probably not going to work very for that particular workflow. Smudge filters are interesting though. In the meantime, I'll look into rsyncing from another box which has the right filesystem layout onto my iRiver directly.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=fmarier&amp;do=goto">fmarier</a>--</span>---&mdash; <span class="date">Tue Apr  5 06:00:21 2011</span>-</div>----</div>-<div class="comment" id="comment-947af200a9d32f28dd0ca3d11b0a3260">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-947af200a9d32f28dd0ca3d11b0a3260">no symlinks</a>--</div>--<div class="inlinecontent">-<p>If you try to clone a git repo that has a symlink over to a VFAT filesystem, you get (in its place) a regular file that contains the name of the symlink target.  So why can't git-annex use that?  I could still do git annex get on this file, git annex would still "know" that it's a symlink, and could replace it with a copy of the real file (instead of putting it in .git/annex).</p>--<p>I know if it were that simple, someone would have done it already, so what am I missing?  I guess trying to get the file FROM the repository would fail because it wouldn't find the file in .git/annex?  Couldn't you store a reverse mapping?  You wouldn't be able to move the file around, but you already lose that once you give up symlinks.  It would also be a little harder to tell which symlinks were "dangling"; I don't see an easy way to get around that.  It would still be better than a bare repo..</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ethan.betacantrips.com/">ethan.glasser.camp</a>-</span>---&mdash; <span class="date">Wed Jun  8 16:59:38 2011</span>-</div>----</div>-<div class="comment" id="comment-71d69eb9d4f8e1518d5d212f3c78eb9f">--<div class="comment-subject">--<a href="/bugs/fat_support.html#comment-71d69eb9d4f8e1518d5d212f3c78eb9f">comment 5</a>--</div>--<div class="inlinecontent">-@ethan the reason that wouldn't work is because git would then see a file that was checked in and had its one line symlinkish content replaced with a huge binary blob. And git commit would try to commit that etc. The potential for foot-shooting is too high.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Jun 10 12:41:43 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">---<div class="tags">-Tags:--<span class="createlink">wishlist</span>--</div>----<div id="backlinks">-Links:--<a href="../forum/hashing_objects_directories.html">forum/hashing objects directories</a>--<a href="../todo/object_dir_reorg_v2.html">todo/object dir reorg v2</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/free_space_checking.html
@@ -1,219 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>free space checking</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-free space checking--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Should check that there is enough free space before trying to copy a-file around.</p>--<ul>-<li><p>Need a way to tell how much free space is available on the disk containing-a given repository.</p></li>-<li><p>And, need a way to tell the size of a file before copying it from-a remote, to check local disk space.</p>--<p>As of annex.version 2, this metadata can be available for any type-of backend. Newly added files will always have file size metadata,-while files that used a SHA backend and were added before the upgrade-won't.</p>--<p>So, need a migration process from eg SHA1 to SHA1+filesize. It will-find files that lack size info, and rename their keys to add the size-info. Users with old repos can run this on them, to get the missing-info recorded.</p></li>-</ul>--<blockquote>-  <p><a href="./done.html">done</a>; no migtation process for old SHA1 keys from v1 repo though.-  --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-357b365beace5df3a0ff94419f87f29d">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-357b365beace5df3a0ff94419f87f29d">comment 1</a>--</div>--<div class="inlinecontent">-<p>Keep in mind that lots of small files may have significant overhead, so a warning that it's not possible to make sure there's enough space would make sense for certain corner cases. Actually finding out the exact overhead is beyond git-annex' scope and, given transparent compression etc, ability, but a warning, optionally with a "do you want to continue" prompt can't hurt.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 10:11:27 2011</span>-</div>----</div>-<div class="comment" id="comment-ce879fc18ed86902cb2e70a73a261981">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-ce879fc18ed86902cb2e70a73a261981">comment 2</a>--</div>--<div class="inlinecontent">-Right. You probably don't want git-annex to fill up your entire drive anyway, so if it tries to reseve 10 mb or 1% or whatever (probably configurable) for overhead, that should be good enough.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:04:50 2011</span>-</div>----</div>-<div class="comment" id="comment-439ffa5ce5a9aa2b097b03a6d0894941">--<div class="comment-subject">--<a href="/bugs/free_space_checking.html#comment-439ffa5ce5a9aa2b097b03a6d0894941">comment 3</a>--</div>--<div class="inlinecontent">-Sometimes, I might want to fill up the disk as much as possible. Thus, a warning is preferable to erroring out too early, imo -- Richard--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:40:56 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../todo/object_dir_reorg_v2.html">todo/object dir reorg v2</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/fsck_output.html
@@ -1,146 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fsck output</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-fsck output--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When you check several files and the fsck fails, you get confusing output:</p>--<pre>-O fsck test1 (checksum...) -E  Only 1 of 2 trustworthy copies of test1 exist.-E  Back it up with git-annex copy.-O-O failed-O fsck test2 (checksum...) -E  Only 1 of 2 trustworthy copies of test2 exist.-E  Back it up with git-annex copy.-O -O failed-</pre>--<p>The newline is in the wrong place and confuses the user. It should be printed <em>after</em> "failed".</p>--<blockquote>-  <p>This is a consequence of part of the output being printed to stderr, and-  part to stdout. I've marked the lines above with E and O.</p>-  -  <p>Normally a "failed" is preceeded by a message output to stdout desribing-  the problem; such a message will not be "\n" terminated, so a newline-  is always displayed before "failed". In this case, since the message-  is sent to stderr, it is newline terminated.</p>-  -  <p>Fixing this properly would involve storing state, or rethinking -  when git-annex displays newlines (and I rather like its behavior-  otherwise).</p>-  -  <p>A related problem occurs if an error message is unexpetedly printed.-  Dummying up an example:</p>-  -  <p>O get test1 (from foo...) E git-annex: failed to run ssh-  failed</p>-  -  <p>--<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>Well, I fixed this in all cases except a thrown non-IO error (last-    example aboce), which output is printed by haskell's runtime. I'd-    have to add a second error handler to handle those, and it's not-    clear what it would do. Often an error will occur before anything-    else is printed, and then the current behavior is right; if something-    has been printed it would be nice to have a newline before the error,-    but by the time the error is caught we'd be out of the annex monad-    and not really have any way to know if something has been printed.-    I think my fix is good enough <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-  </blockquote>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html
@@ -1,183 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git annex fsck is a no-op in bare repos</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-git annex fsck is a no-op in bare repos--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>What is says on the tin:</p>--<p>git annex fsck is a no-op in bare repos</p>--<p>See http://lists.madduck.net/pipermail/vcs-home/2011-June/000433.html</p>--<blockquote>-  <p>Thinking about this some more, it would be difficult to do anything-  when bad content is found, since it also cannot update the location log.</p>-  -  <p>So this may be another thing blocked by <a href="../todo/branching.html">branching</a>, assuming-  that is fixed in a way that makes <code>.git-annex</code> available to bare repos.-  --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>Even if there is nothing it can <em>do</em>, knowing that the data is intact,-    or not, is valuable in and as of itself. -- RichiH</p>-    -    <blockquote>-      <p>While storing the data is no longer an issue in bare repos, fsck would-      need a special mode that examines all the location logs, since it-      cannot run thru the checked out files. --<span class="createlink">Joey</span> </p>-    </blockquote>-  </blockquote>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8d6e5b9caecdf1ffb1f6c90e1ec3f526">--<div class="comment-subject">--<a href="/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html#comment-8d6e5b9caecdf1ffb1f6c90e1ec3f526">comment 1</a>--</div>--<div class="inlinecontent">-And, maybe, a way to start a fsck from remote? At least when the other side is a ssh or git annex shell, this would work.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Jun 13 12:58:52 2011</span>-</div>----</div>-<div class="comment" id="comment-70bd4caa330e98bc726c44ba309be0a8">--<div class="comment-subject">--<a href="/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html#comment-70bd4caa330e98bc726c44ba309be0a8">git annex fsck --from remote</a>--</div>--<div class="inlinecontent">-<p>Currently fsck silently ignores --to/--from.-It should at least complain if it is not supported.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Sat Jun 25 12:20:44 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/git_annex_unlock_is_not_atomic.html
@@ -1,105 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git annex unlock is not atomic</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-git annex unlock is not atomic--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Running a command like</p>--<p>git annex unlock myfile</p>--<p>is not atomic, that is if the execution is aborted you may end up with an incomplete version of myfile in the directory. If you don't notice this you may lock it again and then propagate this bad version of the file to your other repositories. A simple workaround is to simply name it something else while unlocking and then rename it to the correct filename once it's completely copied. I don't know Haskel yet so I can not fix this issue otherwise I would sure try. A part from this, I love git annex.</p>--<blockquote>-  <p><a href="./done.html">fixed</a> --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/git_rename_detection_on_file_move.html
@@ -1,336 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git rename detection on file move</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-git rename detection on file move--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>It's unfortunate that git-annex sorta defeats git's rename detection.</p>--<p>When an annexed file is moved to a different directory (specifically, a-directory that is shallower or deeper than the old directory),-the symlink often has to change. And so git log cannot --follow back-through the rename history, since all it has to go on is that symlink,-which it effectively sees as a one line file containing the symlink target.</p>--<p>One way to fix this might be to do the <code>git annex fix</code> <em>after</em> the rename-is committed. This would mean that a commit would result in new staged-changes for another commit, which is perhaps startling behavior.</p>--<p>The other way to fix it is to stop using symlinks, see <a href="../todo/smudge.html">smudge</a>.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-eb8a38cb5d1181db023aa12f0b9837ca">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-eb8a38cb5d1181db023aa12f0b9837ca">use mini-branches</a>--</div>--<div class="inlinecontent">-<p>if you go for the two-commits version, small intermediate branches (or git-commit-tree) could be used to create a tree like this:</p>--<pre><code>*   commit 106eef2-|\  Merge: 436e46f 9395665-| | -| |     the main commit-| |   -| * commit 9395665-|/  -|       intermediate move-|  -* commit 436e46f-| -|     ...-</code></pre>--<p>while the first commit (436e46f) has a "<code>/subdir/foo → ../.git-annex/where_foo_is</code>", the intermediate (9395665) has "<code>/subdir/deeper/foo → ../.git-annex/where_foo_is</code>", and the inal commit (106eef2) has "<code>/subdir/deeper/foo → ../../.git-annex/where_foo_is</code>".</p>--<p><code>--follow</code> uses the intermediate commit to find the history, but the intermediate commit would neither show up in <code>git log --first-parent</code> nor affect <code>git diff HEAD^..</code> &amp; co. (there could still be confusion over <code>git show</code>, though).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Mar  9 19:47:48 2011</span>-</div>----</div>-<div class="comment" id="comment-9514c99a042ad7c4f7bd4478321066e7">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-9514c99a042ad7c4f7bd4478321066e7">Use variable symlinks, relative to the repo&#x27;s root ?</a>--</div>--<div class="inlinecontent">-<p>It all boils down to the fact that the path to a relative symlink's target is determined relative to the symlink itself.</p>--<p>Now, if we define the symlink's target relative to the git repo's root (eg. using the $GIT_DIR environment variable, which can be a relative or absolute path itself), this unfortunately results in an absolute symlink, which would -for obvious reasons- only be usable locally:</p>--<pre><code>user@host:~&#036; mkdir -p tmp/{.git/annex,somefolder}-user@host:~&#036; export GIT_DIR=~/tmp-user@host:~&#036; touch &#036;GIT_DIR/.git/annex/realfile-user@host:~&#036; ln -s &#036;GIT_DIR/.git/annex/realfile &#036;GIT_DIR/somefolder/file-user@host:~&#036; ls -al &#036;GIT_DIR/somefolder/-total 12-drwxr-x--- 2 user group 4096 2011-03-10 16:54 .-drwxr-x--- 4 user group 4096 2011-03-10 16:53 ..-lrwxrwxrwx 1 user group   33 2011-03-10 16:54 file -&gt; /home/user/tmp/.git/annex/realfile-user@host:~&#036;-</code></pre>--<p>So, what we need is the ability to record the actual variable name (instead of it's value) in our symlinks.</p>--<p>It <em>is</em> possible, using <a href="http://en.wikipedia.org/wiki/Symbolic_link#Variable_symbolic_links">variable/variant symlinks</a>, yet I'm unsure as to whether or not this is available on Linux systems, and even if it is, it would introduce compatibility issues in multi-OS environments.</p>--<p>Thoughts on this?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Thu Mar 10 12:50:28 2011</span>-</div>----</div>-<div class="comment" id="comment-445c365cd2493bc6fcd7d0fa0ab276af">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-445c365cd2493bc6fcd7d0fa0ab276af">comment 3</a>--</div>--<div class="inlinecontent">-Interesting, I had not heard of variable symlinks before. AFAIK linux does not have them.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:03:19 2011</span>-</div>----</div>-<div class="comment" id="comment-e73e85f136ef33aa0747714ccb883223">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-e73e85f136ef33aa0747714ccb883223">Brainfart</a>--</div>--<div class="inlinecontent">-<p>Haven't given these any serious thought (which will become apparent in a moment) but hoping they will give birth to some less retarded ideas:</p>--<hr />--<h3>Bait'n'switch</h3>--<ul>-<li>pre-commit: Replace all staged symlinks (when pointing to annexed files) with plaintext files containing the key of their respective annexed content, re-stage, and add their paths (relative to repo root) to .gitignore.</li>-<li>post-commit: Replace the plaintext files with (git annex fix'ed) symlinks.</li>-</ul>--<p>In doing so, the blobs to be committed can remain unaltered, irrespective of their related files' depth in the directory hierarchy.</p>--<p>To prevent git from reporting ALL annexed files as unstaged changes after running post-commit hook, their paths would need to be added to .gitignore.</p>--<p>This wouldn't cause any issues when adding files, very little when modifying files (would need some alterations to "git annex unlock"), BUT would make git totally oblivious to removals...</p>--<hr />--<h3>Manifest-based (re)population</h3>--<ul>-<li>Keep a manifest of all annexed files (key + relative path)</li>-<li>DON'T track the symlinks (.gitignore)</li>-<li>Populate/update the directory structure using a post-commit hook.</li>-</ul>--<p>... thus circumventing the issue entirely, yet diffstats (et al.) would be rather uninformative.</p>--<hr />--<p><strong><em>Wide open to suggestions, criticism, mocking laughter and finger-pointing :)</em></strong></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Sun Mar 20 16:11:27 2011</span>-</div>----</div>-<div class="comment" id="comment-be235fd78f71bb58fe3f57294c2c4d51">--<div class="comment-subject">--<a href="/bugs/git_rename_detection_on_file_move.html#comment-be235fd78f71bb58fe3f57294c2c4d51">comment 5</a>--</div>--<div class="inlinecontent">-<p>In the meantime, would it be acceptable to split the pre-commit hook-into two discrete parts?</p>--<p>This would allow to (if preferred) defer "git annex fix" until-post-commit while still keeping the safety net for unlocked files.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=praet&amp;do=goto">praet</a>--</span>---&mdash; <span class="date">Mon Mar 21 15:58:34 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/making_annex-merge_try_a_fast-forward.html
@@ -1,127 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>making annex-merge try a fast-forward</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-making annex-merge try a fast-forward--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>While merging the git-annex branch, annex-merge does not end up in a fast-forward even when it would be possible.-But as sometimes annex-merge takes time, it would probably be worth it-(but maybe I miss something with my workflow...).</p>--<blockquote>-  <p>I don't think a fast-forward will make things much faster.</p>-  -  <p>git-annex needs its index file to be updated to reflect the merge.-  With the union merge it does now, this can be accomplished by using-  <code>git-diff-index</code> to efficiently get a list of files that have changed,-  and only merge those changes into the index with <code>git-update-index</code>.-  Then the index gets committed, generating the merge.</p>-  -  <p>To fast-forward, it would just reset the git-annex branch to the new-  head of the remote it's merging to. But then the index needs to be-  updated to reflect this new head too. To do that needs the same method-  described above, essentially (with the difference that it can replace-  files in the index with the version from the git-annex branch, rather-  than merging in the changes... but only if the index is known to be-  already committed and have no other changes, which would require both-  an attempt to commit it first, and-  locking). </p>-  -  <p>So will take basically the same amount of time, except-  it would not need to commit the index at the end of the merge. The-  most expensive work is the <code>git-diff-index</code> and <code>git-update-index</code>,-  which are not avoided.</p>-  -  <p>Although, perhaps fast-forward merge would use slightly-  less space. --<span class="createlink">Joey</span></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/minor_bug:_errors_are_not_verbose_enough.html
@@ -1,123 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>minor bug: errors are not verbose enough</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-minor bug: errors are not verbose enough--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Current:</p>--<pre><code>% git annex status-git-annex: unknown command-</code></pre>--<p>Better: </p>--<pre><code>% git annex status-git-annex: status: unknown command-</code></pre>--<p>Current:</p>--<pre><code>% git annex fsck-[...]-git-annex: 18 failed-</code></pre>--<p>Better:</p>--<pre><code>% git annex fsck-[...]-git-annex: fsck: 18 failed-</code></pre>--<p>etc pp.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/ordering.html
@@ -1,108 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>ordering</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-ordering--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>One would expect "git annex get foo bar" to first retrieve foo, and then-bar. Actually though, it will operate on them in alphabetical order-(probably). This is annoying when you wanted to 1st list the most important-files to get. Maybe you'll run out of time before all can be gotten. The-workaround of course is to run "git annex get" twice.</p>--<p>This ordering comes from "git ls-files". git-annex passes it all the files-the user specified. This is a useful optimisation -- earlier it would-run "git ls-files" once per parameter, and so "git annex get *" could be-rather slow. But, it produces this ordering problem.</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/problem_commit_normal_links.html
@@ -1,164 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>problem commit normal links</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-problem commit normal links--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Dear All,</p>--<p>thank you for this wonderful tool!</p>--<p>I am having an issue when I try to commit a normal link</p>--<p>diokletian*194-&gt; mkdir test</p>--<p>diokletian*195-&gt; cd test</p>--<p>diokletian*196-&gt; git init</p>--<p>Initialized empty Git repository in /home/henrus/test/.git/</p>--<p>diokletian*197-&gt; git annex init new</p>--<p>init new [master (root-commit) 49f5f91] git-annex setup</p>--<p>1 files changed, 1 insertions(+), 0 deletions(-)</p>--<p>create mode 100644 .gitattributes</p>--<p>[master 76496ff] git annex init</p>--<p>1 files changed, 1 insertions(+), 0 deletions(-)</p>--<p>create mode 100644 .git-annex/uuid.log</p>--<p>ok</p>--<p>diokletian*198-&gt; mkdir subdir</p>--<p>diokletian*199-&gt; ln -s subdir link</p>--<p>diokletian*200-&gt; git add link</p>--<p>diokletian*201-&gt; git commit -m "ok"</p>--<p>[master f12f62d] ok</p>--<p>1 files changed, 1 insertions(+), 0 deletions(-)</p>--<p>create mode 120000 link</p>--<p>diokletian*202-&gt; ln -s subdir/ link2</p>--<p>diokletian*203-&gt; git add link2</p>--<p>diokletian*204-&gt; git commit -m "not ok"</p>--<p>git-annex: Prelude.head: empty list</p>--<p>The trailing slash seems to make a difference!</p>--<p>Best Regards,</p>--<p>Henrik</p>--<blockquote>-  <p>Thanks for the bug report. This is fixed in 0.17. --<span class="createlink">Joey</span>  </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">---<div class="tags">-Tags:--<a href="./done.html" rel="tag">done</a>--</div>---------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/problem_with_upgrade_v2_-__62___v3.html
@@ -1,305 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>problem with upgrade v2 -&#62; v3</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-problem with upgrade v2 -&#62; v3--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>On several of my repos, the upgrade to v3 seemed to take forever. A Crl-C followed by another "git annex upgrade" "solved" the problem in some cases. Sometimes, I had to also delete the .git/annex/journal dir to have the upgrade. I didn't notice anything special about the non-working repos to help diagnose the problem.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-eaa44baeb3b9ee4f4bcc22da1a47cc24">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-eaa44baeb3b9ee4f4bcc22da1a47cc24">comment 1</a>--</div>--<div class="inlinecontent">-Well if it happens again why don't you use <code>ps</code> or <code>strace</code> to see what it's doing.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Jul  4 18:58:46 2011</span>-</div>----</div>-<div class="comment" id="comment-a014c9b948cdc1def8bad093587fed95">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-a014c9b948cdc1def8bad093587fed95">&#x22;Me too&#x22;</a>--</div>--<div class="inlinecontent">-<p>I've also seen this apparent hang during upgrade to v3. A few more details:</p>--<p>The annex in question has just under 18k files (and hence that many log files), which can slow down directory operations when they're all in the same place (like, for example, .git/annex/journal).</p>--<p>git-annex uses virtually no CPU time and disk IO when it's hanging like this; the first time it happened, 'ps' showed three defunct git processes, with two "git-annex" processes and three "git" procs:</p>--<ul>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex cat-file --batch</li>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex hash-object -w --stdin-paths</li>-<li>git --git-dir=/mnt/annex/.git --work-tree=/mnt/annex update-index -z --index-info</li>-</ul>--<p>I Ctrl+C'd that and tried again, but it hung again -- this time without the defunct gits.</p>--<p>An strace of the process and its children at the time of hang can be found at http://pastebin.com/4kNh4zEJ . It showed somewhat weird behaviour: When I attached with strace, it would scroll through a whole bunch of syscalls making up the open-fstat-read-close-write loop on .git/annex/journal files, but then would block on a write (sorry, don't have that in my scrollback any more so can't give more details) until I Ctrl+C'd strace; when attaching again, it would again scroll through the syscalls for a second or so and then hang with no output.</p>--<p>Ultimately I detached/reattached with strace about two dozen times and that caused it (?) to finish the upgrade; not really sure how to explain it, but it seems like too much of a timing coincidence.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://lithitux.org/openidserver/users/pavel">pavel</a>-</span>---&mdash; <span class="date">Tue Jul  5 11:54:19 2011</span>-</div>----</div>-<div class="comment" id="comment-2a35c72b34f53e9cfa09a46cbfa07f3c">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-2a35c72b34f53e9cfa09a46cbfa07f3c">comment 3</a>--</div>--<div class="inlinecontent">-<p>I've seen this kind of piping stall that is unblocked by strace before. It can vary with versions of GHC, so it would be good to know what version built git-annex (and on what OS version). I filed a bug report upstream before at <a href="http://bugs.debian.org/624389">http://bugs.debian.org/624389</a>.</p>--<p>I really need a full strace -f from the top, or at least a complete <code>strace -o log</code> of git-annex from one hang through to another hang. The strace you pastebinned does not seem complete. If I can work out which specific git command is being written to when it hangs I can lift the writing out into a separate thread or process to fix it.</p>--<p>@pavel, you mentioned three defunct git processes, and then showed ps output for 3 git processes. Were there 6 git processes in total? And then when you ran it again you said there were no defunct gits -- where the other 3 git processes running once again?</p>--<p>As best I can make out from the (apparently) running git processes, it seems like the journal files for the upgrade had all been written, and the hang occurred when staging them all into the index in preparation for a commit. I have committed a change that lifts the code that does that write out into a new process, which, if I am guessing right on the limited info I have, will avoid the hang.</p>--<p>However, since I can't reproduce it, even when I put 200 thousand files in the journal and have git-annex process them, I can't be sure.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 13:31:22 2011</span>-</div>----</div>-<div class="comment" id="comment-16cd04e8884ab70089cf90d22c8241cc">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-16cd04e8884ab70089cf90d22c8241cc">comment 4</a>--</div>--<div class="inlinecontent">-I've managed to reproduce this and confirmed my fix works.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 14:37:21 2011</span>-</div>----</div>-<div class="comment" id="comment-b00bbc2dbe753760b58ce3fc07739c72">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-b00bbc2dbe753760b58ce3fc07739c72">comment 5</a>--</div>--<div class="inlinecontent">-By the way, the original bug reporter mentioned deleting .git/annex/journal. This is not recommended, and doing it during an upgrade can result in git-annex losing location tracking information. You should probably run <code>git annex fsck</code> or reset to the old git tree (and <code>git config annex.version 2</code>) and upgrade again.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jul  5 15:06:48 2011</span>-</div>----</div>-<div class="comment" id="comment-3276fbf27334cae9a0d699f247ccdf66">--<div class="comment-subject">--<a href="/bugs/problem_with_upgrade_v2_-__62___v3.html#comment-3276fbf27334cae9a0d699f247ccdf66">comment 6</a>--</div>--<div class="inlinecontent">-<p>Ah, great, thanks very much for the quick fix!</p>--<p>Yes, when I mentioned three defunct git processes, there were three processes shown as "git [defunct]", plus the three git processes I listed, plus two "git-annex" processes. Upon cancel/resume, there were no defunct git processes when I checked, but by the time I found the bug report on the forum and commented I'd already successfully upgraded by annex (by repeatedly attaching strace) and couldn't really easily get at either additional 'ps' info or a fuller strace than what I posted (that was just the log from one of the attach/detach cycles), so it's a relief you managed to pinpoint the problem.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://lithitux.org/openidserver/users/pavel">pavel</a>-</span>---&mdash; <span class="date">Wed Jul  6 04:14:26 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">---<div class="tags">-Tags:--<a href="./done.html" rel="tag">done</a>--</div>---------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/problems_with_utf8_names.html
@@ -1,222 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>problems with utf8 names</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-problems with utf8 names--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>There are problems with displaying filenames in UTF8 encoding, as shown here:</p>--<pre><code>&#036; echo &#036;LANG-en_GB.UTF-8-&#036; git init-&#036; git annex init test-[...]-&#036; touch "Umlaut Ü.txt"-&#036; git annex add Uml*-add Umlaut Ã.txt ok-(Recording state in git...)-&#036; find -name U\* | hexdump -C-00000000  2e 2f 55 6d 6c 61 75 74  20 c3 9c 2e 74 78 74 0a  |./Umlaut ...txt.|-00000010-&#036; git annex find | hexdump -C-00000000  55 6d 6c 61 75 74 20 c3  83 c2 9c 2e 74 78 74 0a  |Umlaut .....txt.|-00000010-&#036;-</code></pre>--<p>It looks like the common latin1-to-UTF8 encoding. Functionality other than otuput seems not to be affected.</p>--<p><blockquote></p>--<p>Yes, I believe that git-annex is reading filename data from git-  as a stream of char8s, and not decoding unicode in it into logical-  characters.-  Haskell then I guess, tries to unicode encode it when it's output to-  the console.-  This only seems to matter WRT its output to the console; the data-  does not get mangled internally and so it accesses the right files-  under the hood.</p>--<p></p>--<p>I am too new to haskell to really have a handle on how to handle-  unicode and other encodings issues with it. In general, there are three-  valid approaches: --<span class="createlink">Joey</span> </p>--<p><br />-  <p><ol>-  <li>Convert all input data to unicode and be unicode clean end-to-end-  internally. Problimatic here since filenames may not necessarily be-  encoded in utf-8 (an archive could have historical filenames using-  varying encodings), and you don't want which files are accessed to-  depend on locale settings.</p>-  </p>--<blockquote>-    <p>I tried to do this by making parts of GitRepo call-    Codec.Binary.UTF8.String.decodeString when reading filenames from-    git. This seemed to break attempts to operate on the files,-    weirdly encoded strings were seen in syscalls in strace.</li>-    <li>Keep input and internal data un-decoded, but decode it when-    outputting a filename (assuming the filename is encoded using the-    user's configured encoding), and allow haskell's output encoding to then-    encode it according to the user's locale configuration.-    This is now <a href="./done.html">implemented</a>. I'm not very happy that I have to watch-    out for any place that a filename is output and call <code>filePathToString</code>-    on it, but there are really not too many such places in git-annex.</p>-    -    <p>Note that this only affects filenames apparently. -    (Names of files in the annex, and also some places where names-    of keys are displayed.) Utf-8 in the uuid.map file etc seems-    to be handled cleanly.</li>-    <li>Avoid encodings entirely. Mostly what I'm doing now; probably-    could find a way to disable encoding of console output. Then the raw-    filename would be displayed, which should work ok. git-annex does-    not really need to pull apart filenames; they are almost entirely-    opaque blobs. I guess that the <code>--exclude</code> option is the exception-    to that, but it is currently not unicode safe anyway. (Update: tried-    <code>--exclude</code> again, seems it is unicode clean..)-    One other possible-    issue would be that this could cause problems if git-annex were-    translated.-    On second thought, I switched to this. Any decoding of a filename-    is going to make someone unhappy; the previous approach broke-    non-utf8 filenames.</li>-    </ol></p>-  </blockquote>--<p></blockquote></p>--<hr />--<p>Simpler test case:</p>--<pre>-import Codec.Binary.UTF8.String-import System.Environment--main = do-        args &lt;- getArgs-        let file = decodeString $ head args-        putStrLn $ "file is: " ++ file-        putStr =&lt;&lt; readFile file-</pre>--<p>If I pass this a filename like 'ü', it will fail, and notice-the bad encoding of the filename in the error message:</p>--<pre>-$ echo hi &gt; ü; runghc foo.hs ü-file is: ü-foo.hs: �: openFile: does not exist (No such file or directory)-</pre>--<p>On the other hand, if I remove the decodeString, it prints the filename-wrong, while accessing it right:</p>--<pre>-$ runghc foo.hs ü-file is: üa-hi-</pre>--<p>The only way that seems to consistently work is to delay decoding the-filename to places where it's output. But then it's easy to miss some.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../todo/support-non-utf8-locales.html">todo/support-non-utf8-locales</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/scp_interrupt_to_background.html
@@ -1,98 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>scp interrupt to background</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-scp interrupt to background--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When getting a file with scp, SIGINT is blocked, exposing the git-subcommand fork to background bug again. <a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Wed Apr 13 16:18:01 2011</span>-<!-- Created <span class="date">Wed Apr 13 16:18:01 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
@@ -1,194 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>softlink mtime</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-softlink mtime--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When adding files to git annex, softlinks are created with current atime (and ctime, etc). Instead, the atime of the added file should be used and added to the meta-data, restoring it everywhere an annex is cloned to. -- RichiH</p>--<p>Optionally, editing the meta-data should change the times in all annexes.</p>--<blockquote>-  <p>Thing is, git does not preserve file timestamps much at all. -  It's not uncommon for a <code>git checkout</code> to or <code>git update</code> to-  mess up timestamps. This is why things like metastore exist (and-  metastore should work ok with git annexed files too). Trying to -  make annexed file symlinks have better timestamp handling than regular-  files in git seems pointless. --<span class="createlink">Joey</span></p>-  -  <blockquote>-    <p>Improving an area where git is (not yet?) good at still makes sense, imo. Photos and the like need absolute timestamps more than source code which is fine with relative timestamps (local builds &amp; updates). Maintaining global timestamps for source code could even cause a lot of unwanted effects. As it is, this issue is the only, but a major, blocker for me before I can start adapting git-annex. As I have three different use cases for it, this is a shame. Unfortunately, I don't speak any Haskell so scratching my own itch isn't do-able (without major effort and not soon, at least). Is there a realistic chance that you will tackle this nonetheless or is this WONTFIX? -- RichiH</p>-    -    <blockquote>-      <p>Not quite WONTFIX. git-annex should at least, when adding new files,-      preserve their timestamp in the symlink it creates.</p>-      -      <p>Since it doesn't have anything to do with maintaining the symlinks-      during an update, or a clone, etc, maintaining the permissions of them -      is also out of scope, and it's best to just use metastore if you need-      it. Otherwise, git-annex would have to reimplement metastore, and is-      unlikely to do it better.</p>-      -      <blockquote>-        <p>OK, thanks for the clarification. Would it be acceptable for you to put the timestamps into the metastore with vanilla git? If such an option existed, everyone would be able to benefit and not just me. -- RichiH</p>-        -        <blockquote>-          <p>I've now committed to git changes to make git-annex add make-          symlinks that reflect the original file's mtime. (It's not possible-          to set the ctime of a symlink; nor would you want to as messing with-          ctimes can break backup software ... and atime doesn't much matter.)</p>-          -          <p>So all you have to do is make the pre-commit hook call-          <a href="http://david.hardeman.nu/software.php">metastore</a>. The hook-          would look like this: ---<span class="createlink">Joey</span></p>-        </blockquote>-      </blockquote>-    </blockquote>-  </blockquote>-</blockquote>--<pre><code>#!/bin/sh-git annex pre-commit .-metastore --save-git add .metadata-</code></pre>--<blockquote>-  <blockquote>-    <blockquote>-      <blockquote>-        <blockquote>-          <blockquote>-            <p>Thanks a lot. Doing this in a new git-annex repo from the start should at least ensure local consistency and I assume I can simply add a post-pull hook to restore the mtimes on all all other repositories? -- RichiH</p>-            -            <blockquote>-              <p>This is even better:</p>-            </blockquote>-          </blockquote>-        </blockquote>-      </blockquote>-    </blockquote>-  </blockquote>-</blockquote>--<pre><code>#!/bin/sh-if ! type metastore &gt;/dev/null; then echo "&#036;0: metastore is not installed; exiting"; exit 1; fi-git annex pre-commit .-metastore --save-git add .metadata-</code></pre>--<blockquote>-  <blockquote>-    <blockquote>-      <blockquote>-        <blockquote>-          <blockquote>-            <blockquote>-              <p>-- RichiH</p>-              -              <blockquote>-                <p>After getting to actually play with this from different machines with a bare git as central instance for several distributed repos, the metastore trick does not work. The .metadata is causing merge conflicts for every pull. I removed the "done" tag from this issue. -- RichiH</p>-                -                <blockquote>-                  <p>softbox sounds <em>really</em> nice. File systems need to preserve mtimes. Oviously, it would be nice if git-annex exposed this to the upper layer instead of relying on this FUSE implementation, or the next, or the other totally cool thing around the corner to implement it again and again. -                  I talked to the author of metastore; he is aware that the format is merge-unfriendly but never needed merges for himself. He is aware that this is not ideal for something like git. He does not have the time to implement a text storage instead of binary and I lack the skills to do it. If metastore is used, all it would need to do is introduce a new version of the store (it's versioned, apparently) and save metadata in text, one file per line. xattr would need to be ASCII-armoured, the rest could be plain text. I still think storing this directly in git-annex would make the most sense. Introducing a metadata storage file per storage object in .git/annex and using the object file's name as index is impossible because several softlinks might point to one object so it would need to be done per-softlink :/ -- RichiH</p>-                </blockquote>-              </blockquote>-            </blockquote>-          </blockquote>-        </blockquote>-      </blockquote>-    </blockquote>-  </blockquote>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/test_suite_shouldn__39__t_fail_silently.html
@@ -1,101 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>test suite shouldn&#39;t fail silently</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-test suite shouldn&#39;t fail silently--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When the test suite cannot be compiled, the build just fails silenty. This means that in automated builds there is no easy way to ensure that the generated binaries have passed the test suite, because it may not even have been run! IMHO, "make test" should fail (i.e. return a non-zero exit code) when it can't succeeed.</p>--<blockquote>-  <p>Ok, fixed. --<span class="createlink">Joey</span> <a href="./done.html">done</a></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/tmp_file_handling.html
@@ -1,111 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>tmp file handling</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-tmp file handling--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex deletes all tmp files on shutdown, if everything succeeded.-This presents 2 problems:</p>--<ol>-<li>If git-annex is rsyncing something and another one is run, it will-delete the running instance's tmp files.</li>-<li>If a long-running rsync transfer is interrupted partway through, the-tmp file was expensive to obtain, and one needs to avoid running-git-annex to do anything else until that transfer can be resumed and-finished.</li>-</ol>--<p>--<span class="createlink">Joey</span> </p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/unannex_command_doesn__39__t_all_files.html
@@ -1,125 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>unannex command doesn&#39;t all files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-unannex command doesn&#39;t all files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<pre><code>&#036; git init ; git annex init test ; dd if=/dev/urandom of=file1 count=128 ; cp file1 file2 ; git annex add --backend=SHA1 file? ; git commit -m init ; git annex unannex ; ls -l-Initialized empty Git repository in /tmp/annex/.git/-init test ok-128+0 records in-128+0 records out-65536 bytes (66 kB) copied, 0.007173 s, 9.1 MB/s-add file1 (checksum...) ok-add file2 (checksum...) ok-(Recording state in git...)-[master (root-commit) 2177b10] init- 2 files changed, 2 insertions(+), 0 deletions(-)- create mode 120000 file1- create mode 120000 file2-unannex file1 ok-(Recording state in git...)-[master bef78b1] content removed from git annex- 1 files changed, 0 insertions(+), 1 deletions(-)- delete mode 120000 file1-total 72--rw-r--r-- 1 simons users 65536 Jul 15 17:29 file1-lrwxrwxrwx 1 simons users   132 Jul 15 17:29 file2 -&gt; .git/annex/objects/jp/Fk/SHA1-s65536--795b58cc4e5190b02e7026fd9e94a10c98c6475f/SHA1-s65536--795b58cc4e5190b02e7026fd9e94a10c98c6475f-</code></pre>--<blockquote>-  <p>This was recently discussed in-  <a href="./annex_unannex__47__uninit_should_handle_copies.html">annex unannex&#47;uninit should handle copies</a> and <code>unannex --fast</code>-  added to leave contents behind in the annex, which allows handling-  copies. But needs manual cleanup later with dropunused. --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/unannex_vs_unlock_hook_confusion.html
@@ -1,113 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>unannex vs unlock hook confusion</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-unannex vs unlock hook confusion--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>See <a href="../forum/unannex_alternatives.html">unannex alternatives</a> for problem description.</p>--<p>If an unannex is followed by a "git add; git commit", git-annex's hook thinks-that you have used git annex unlock on the file and are-now committing a changed version, and the right thing to do there is to add the-new content to the annex and update the symlink accordingly.</p>--<p>Can we tell the difference between an unannexed file that has yet to be committed-and has been re-added as a normal file, vs an unlocked file? --[[Joey||</p>--<blockquote>-  <p>Hmm, not really. An unannexed file's content will have been dropped from-  the backend, but that's about the only difference. Perhaps unannex should-  just commit the removal of the file itself? --<span class="createlink">Joey</span></p>-  -  <p><a href="./done.html">done</a>, staged changes committed at end.</p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/unhappy_without_UTF8_locale.html
@@ -1,150 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>unhappy without UTF8 locale</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-unhappy without UTF8 locale--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Try unsetting LANG and passing git-annex unicode filenames.</p>--<pre><code>joey@gnu:~/tmp/aa&gt;git annex add ./Üa-add add add add git-annex: &lt;stdout&gt;: commitAndReleaseBuffer: invalid-argument (Invalid or incomplete multibyte or wide character)-</code></pre>--<blockquote>-  <p>Interestingly, I can get the same crash in the de_DE.UTF-8 locale-  with certian input filenames, while in en_US.UTF-8, it's ok.-  The workaround below avoided the problem in de_DE.UTF-8. --<span class="createlink">Joey</span></p>-  -  <p>Put in the utf-8 forcing workaround for now. <a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>-</blockquote>--<h2>underlying haskell problem and workaround</h2>--<p>The same problem can be seen with a simple haskell program:</p>--<pre><code>import System.Environment-import Codec.Binary.UTF8.String-main = do-        args &lt;- getArgs-        putStrLn &#036; decodeString &#036; args !! 0--joey@gnu:~/src/git-annex&gt;LANG= runghc ~/foo.hs Ü-foo.hs: &lt;stdout&gt;: hPutChar: invalid argument (Invalid or incomplete multibyte or wide character)-</code></pre>--<p>(The call to <code>decodeString</code> is necessary to make the input-unicode string be displayed properly in a utf8 locale, but-does not contribute to this problem.)</p>--<p>I guess that haskell is setting the IO encoding to latin1, which-is <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/System-IO.html#v:latin1">documented</a>-to error out on characters &gt; 255. </p>--<p>So this program doesn't have the problem -- but may output garbage-on non-utf-8 capable terminals:</p>--<pre><code>import System.IO-main = do-    hSetEncoding stdout utf8-        args &lt;- getArgs-        putStrLn &#036; decodeString &#036; args !! 0-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../todo/support-non-utf8-locales.html">todo/support-non-utf8-locales</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bugs/weird_local_clone_confuses.html
@@ -1,116 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>weird local clone confuses</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../bugs.html">bugs</a>/ --</span>-<span class="title">-weird local clone confuses--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>See-<a href="http://www.git.code-experiments.com/blog/2011/01/manage-large-files-with-git-annex-by-joey-hess.html">http://www.git.code-experiments.com/blog/2011/01/manage-large-files-with-git-annex-by-joey-hess.html</a></p>--<p>If a local repo is cloned with "git clone orig/.git new", then git-annex in-new cannot see origin. </p>--<p>the .git/config has "url=/.../orig/.git". Apparently git is ok with that-weird construction; probably it treats it as a bare git repo. But git-annex-just sees a directory w/o a .git subdir, and gives up.</p>--<hr />--<p>Just tested, and the new support for bare repositories didn't solve this.-(Because config.bare is not set.)</p>--<p>I think this is not something git-annex should go out of its way to-support. <a href="./done.html">done</a>---<span class="createlink">Joey</span> </p>--<p>Later.. Fixed this after all. --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/cheatsheet.html
@@ -1,407 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>cheatsheet</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-cheatsheet--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>A supplement to the <a href="./walkthrough.html">walkthrough</a>.</p>--<div class="toc">-	<ol>-		<li class="L2"><a href="#index1h2">using Amazon S3</a>-		</li>-		<li class="L2"><a href="#index2h2">using bup</a>-		</li>-		<li class="L2"><a href="#index3h2">using the web</a>-		</li>-		<li class="L2"><a href="#index4h2">using the SHA1 backend</a>-		</li>-		<li class="L2"><a href="#index5h2">migrating data to a new backend</a>-		</li>-		<li class="L2"><a href="#index6h2">untrusted repositories</a>-		</li>-		<li class="L2"><a href="#index7h2">what to do when you lose a repository</a>-		</li>-		<li class="L2"><a href="#index8h2">recover data from lost+found</a>-		</li>-		<li class="L2"><a href="#index9h2">Internet Archive via S3</a>-		</li>-	</ol>-</div>--<h2><a name="index1h2"></a><a href="./walkthrough/using_Amazon_S3.html">using Amazon S3</a></h2>-<p>git-annex extends git's usual remotes with some <a href="./special_remotes.html">special remotes</a>, that-are not git repositories. This way you can set up a remote using say,-Amazon S3, and use git-annex to transfer files into the cloud.</p>--<p>First, export your S3 credentials:</p>--<pre><code># export ANNEX_S3_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"-# export ANNEX_S3_SECRET_ACCESS_KEY="s3kr1t"-</code></pre>--<p>Now, create a gpg key, if you don't already have one. This will be used-to encrypt everything stored in S3, for your privacy. Once you have-a gpg key, run <code>gpg --list-secret-keys</code> to look up its key id, something-like "2512E3C7"</p>--<p>Next, create the S3 remote, and describe it. </p>--<pre><code># git annex initremote cloud type=S3 encryption=2512E3C7-initremote cloud (encryption setup with gpg key C910D9222512E3C7) (checking bucket) (creating bucket in US) (gpg) ok-# git annex describe cloud "at Amazon's US datacenter"-describe cloud ok-</code></pre>--<p>The configuration for the S3 remote is stored in git. So to make another-repository use the same S3 remote is easy:</p>--<pre><code># cd /media/usb/annex-# git pull laptop-# git annex initremote cloud-initremote cloud (gpg) (checking bucket) ok-</code></pre>--<p>Now the remote can be used like any other remote.</p>--<pre><code># git annex copy my_cool_big_file --to cloud-copy my_cool_big_file (gpg) (checking cloud...) (to cloud...) ok-# git annex move video/hackity_hack_and_kaxxt.mov --to cloud-move video/hackity_hack_and_kaxxt.mov (checking cloud...) (to cloud...) ok-</code></pre>--<p>See <a href="./special_remotes/S3.html">S3</a> for details.</p>--<h2><a name="index2h2"></a><a href="./walkthrough/using_bup.html">using bup</a></h2>-<p>Another <a href="./special_remotes.html">special remote</a> that git-annex can use is-a <a href="./special_remotes/bup.html">bup</a> repository. Bup stores large file contents-in a git repository of its own, with deduplication. Combined with-git-annex, you can have git on both the frontend and the backend.</p>--<p>Here's how to create a bup remote, and describe it.</p>--<p>[[!template <span class="error">Error: <span class="createlink">note</span> not found</span>]]</p>--<pre><code># git annex initremote mybup type=bup encryption=none buprepo=example.com:/big/mybup-initremote bup (bup init)-Initialized empty Git repository in /big/mybup/-ok-# git annex describe mybup "my bup repository at example.com"-describe mybup ok-</code></pre>--<p>Now the remote can be used like any other remote.</p>--<pre><code># git annex move my_cool_big_file --to mybup-move my_cool_big_file (to mybup...)-Receiving index from server: 1100/1100, done.-ok-</code></pre>--<p>Note that, unlike other remotes, bup does not really support removing-content from its git repositories. This is a feature. :)</p>--<pre><code># git annex move my_cool_big_file --from mybup-move my_cool_big_file (from mybup...)-  content cannot be removed from bup remote-failed-git-annex: 1 failed-</code></pre>--<p>See <a href="./special_remotes/bup.html">bup</a> for details.</p>--<h2><a name="index3h2"></a><a href="./walkthrough/using_the_web.html">using the web</a></h2>-<p>The web can be used as a <a href="./special_remotes.html">special remote</a> too.</p>--<pre><code># git annex addurl http://example.com/video.mpeg-addurl video.mpeg (downloading http://example.com/video.mpeg)-########################################################## 100.0%-ok-</code></pre>--<p>Now the file is downloaded, and has been added to the annex like any other-file. So it can be copied to other repositories, and so on.</p>--<p>Note that git-annex assumes that, if the web site does not 404, the file is-still present on the web, and this counts as one <a href="./copies.html">copy</a> of the-file. So it will let you remove your last copy, trusting it can be-downloaded again:</p>--<pre><code># git annex drop video.mpeg-drop video.mpeg (checking http://example.com/video.mpeg) ok-</code></pre>--<p>If you don't <a href="./trust.html">trust</a> the web to this degree, just let git-annex know:</p>--<pre><code># git annex untrust web-untrust web ok-</code></pre>--<p>With the result that it will hang onto files:</p>--<pre><code># git annex drop video.mpeg-drop video.mpeg (unsafe) -  Could only verify the existence of 0 out of 1 necessary copies-  Also these untrusted repositories may contain the file:-    00000000-0000-0000-0000-000000000001  -- web-  (Use --force to override this check, or adjust annex.numcopies.)-failed-</code></pre>--<h2><a name="index4h2"></a><a href="./walkthrough/using_the_SHA1_backend.html">using the SHA1 backend</a></h2>-<p>A handy alternative to the default <a href="./backends.html">backend</a> is the-SHA1 backend. This backend provides more git-style assurance that your data-has not been damaged. And the checksum means that when you add the same-content to the annex twice, only one copy need be stored in the backend.</p>--<p>The only reason it's not the default is that it needs to checksum-files when they're added to the annex, and this can slow things down-significantly for really big files. To make SHA1 the default, just-add something like this to <code>.gitattributes</code>:</p>--<pre><code>* annex.backend=SHA1-</code></pre>--<h2><a name="index5h2"></a><a href="./walkthrough/migrating_data_to_a_new_backend.html">migrating data to a new backend</a></h2>-<p>Maybe you started out using the WORM backend, and have now configured-git-annex to use SHA1. But files you added to the annex before still-use the WORM backend. There is a simple command that can migrate that-data:</p>--<pre><code># git annex migrate my_cool_big_file-migrate my_cool_big_file (checksum...) ok-</code></pre>--<p>You can only migrate files whose content is currently available. Other-files will be skipped.</p>--<p>After migrating a file to a new backend, the old content in the old backend-will still be present. That is necessary because multiple files-can point to the same content. The <code>git annex unused</code> subcommand can be-used to clear up that detritus later. Note that hard links are used,-to avoid wasting disk space.</p>--<h2><a name="index6h2"></a><a href="./walkthrough/untrusted_repositories.html">untrusted repositories</a></h2>-<p>Suppose you have a USB thumb drive and are using it as a git annex-repository. You don't trust the drive, because you could lose it, or-accidentally run it through the laundry. Or, maybe you have a drive that-you know is dying, and you'd like to be warned if there are any files-on it not backed up somewhere else. Maybe the drive has already died-or been lost.</p>--<p>You can let git-annex know that you don't trust a repository, and it will-adjust its behavior to avoid relying on that repositories's continued-availability.</p>--<pre><code># git annex untrust usbdrive-untrust usbdrive ok-</code></pre>--<p>Now when you do a fsck, you'll be warned appropriately:</p>--<pre><code># git annex fsck .-fsck my_big_file-  Only these untrusted locations may have copies of this file!-    05e296c4-2989-11e0-bf40-bad1535567fe  -- portable USB drive-  Back it up to trusted locations with git-annex copy.-failed-</code></pre>--<p>Also, git-annex will refuse to drop a file from elsewhere just because-it can see a copy on the untrusted repository.</p>--<p>It's also possible to tell git-annex that you have an unusually high-level of trust for a repository. See <a href="./trust.html">trust</a> for details.</p>--<h2><a name="index7h2"></a><a href="./walkthrough/what_to_do_when_you_lose_a_repository.html">what to do when you lose a repository</a></h2>-<p>So you lost a thumb drive containing a git-annex repository. Or a hard-drive died or some other misfortune has befallen your data.</p>--<p>Unless you configured backups, git-annex can't get your data back. But it-can help you deal with the loss.</p>--<p>First, go somewhere that knows about the lost repository, and mark it as-untrusted.</p>--<pre><code>git annex untrust usbdrive-</code></pre>--<p>To remind yourself later what happened, you can change its description, too:</p>--<pre><code>git annex describe usbdrive "USB drive lost in Timbuktu. Probably gone forever."-</code></pre>--<p>This retains the <a href="./location_tracking.html">location tracking</a> information for the repository.-Maybe you'll find the drive later. Maybe that's impossible. Either way,-this lets git-annex tell you why a file is no longer accessible, and-it avoids it relying on that drive to hold any content.</p>--<h2><a name="index8h2"></a><a href="./walkthrough/recover_data_from_lost+found.html">recover data from lost+found</a></h2>-<p>Suppose something goes wrong, and fsck puts all the files in lost+found.-It's actually very easy to recover from this disaster.</p>--<p>First, check out the git repository again. Then, in the new checkout:</p>--<pre><code>&#036; mkdir recovered-content-&#036; sudo mv ../lost+found/* recovered-content-&#036; sudo chown you:you recovered-content-&#036; chmod -R u+w recovered-content-&#036; git annex add recovered-content-&#036; git rm recovered-content-&#036; git commit -m "recovered some content"-&#036; git annex fsck-</code></pre>--<p>The way that works is that when git-annex adds the same content that was in-the repository before, all the old links to that content start working-again. This works particularly well if the SHA* backends are used, but even-with the default backend it will work pretty well, as long as fsck-preserved the modification time of the files.</p>--<h2><a name="index9h2"></a><a href="./walkthrough/Internet_Archive_via_S3.html">Internet Archive via S3</a></h2>-<p><a href="http://www.archive.org/">The Internet Archive</a> allows members to upload-collections using an Amazon S3 -<a href="http://www.archive.org/help/abouts3.txt">compatible API</a>, and this can-be used with git-annex's <a href="./special_remotes/S3.html">S3</a> support. </p>--<p>So, you can locally archive things with git-annex, define remotes that-correspond to "items" at the Internet Archive, and use git-annex to upload-your files to there. Of course, your use of the Internet Archive must-comply with their <a href="http://www.archive.org/about/terms.php">terms of service</a>.</p>--<p>Sign up for an account, and get your access keys here:-<a href="http://www.archive.org/account/s3.php">http://www.archive.org/account/s3.php</a></p>--<pre><code># export AWS_ACCESS_KEY_ID=blahblah-# export AWS_SECRET_ACCESS_KEY=xxxxxxx-</code></pre>--<p>Specify <code>host=s3.us.archive.org</code> when doing <code>initremote</code> to set up-a remote at the Archive. This will enable a special Internet Archive mode:-Encryption is not allowed; you are required to specify a bucket name-rather than having git-annex pick a random one; and you can optionally-specify <code>x-archive-meta*</code> headers to add metadata as explained in their-<a href="http://www.archive.org/help/abouts3.txt">documentation</a>.</p>--<p>[[!template <span class="error">Error: <span class="createlink">note</span> not found</span>]]</p>--<pre><code># git annex initremote archive-panama type=S3 \-    host=s3.us.archive.org bucket=panama-canal-lock-blueprints \-    x-archive-meta-mediatype=texts x-archive-meta-language=eng \-    x-archive-meta-title="original Panama Canal lock design blueprints"-initremote archive-panama (Internet Archive mode) ok-# git annex describe archive-panama "a man, a plan, a canal: panama"-describe archive-panama ok-</code></pre>--<p>Then you can annex files and copy them to the remote as usual:</p>--<pre><code># git annex add photo1.jpeg --backend=SHA1E-add photo1.jpeg (checksum...) ok-# git annex copy photo1.jpeg --fast --to archive-panama-copy (to archive-panama...) ok-</code></pre>--<p>Note the use of the SHA1E <a href="./backends.html">backend</a>. It makes most sense -to use the WORM or SHA1E backend for files that will be stored in-the Internet Archive, since the key name will be exposed as the filename-there, and since the Archive does special processing of files based on-their extension.</p>----</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./walkthrough/more.html">walkthrough/more</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/comments.html
@@ -1,432 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>comments</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-comments--</span>-</span>--</div>------</div>---<div class="sidebar">-<div id="feedlink">---</div>---<p>Comments in the moderation queue:-0</p>--</div>---<div id="pagebody">--<div id="content">-<p>Recent comments posted to this site:</p>--<div id="feedlink">---</div>-<div class="comment" id="comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">Is it necessary to commit after the &#x27;drop&#x27;?</a>--</div>--<div class="inlinecontent">-In fact is it possible? Nothing changed as far as git is concerned.--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=DavidEdmondson&amp;do=goto">DavidEdmondson</a>--</span>---&mdash; <span class="date">Mon Sep  5 11:43:25 2011</span>-</div>----</div>-<div class="comment" id="comment-a854605ff0a6b92be7f3014da2e2c357">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-a854605ff0a6b92be7f3014da2e2c357">comment 2</a>--</div>--<div class="inlinecontent">-Good catch. It used to be necessary before there was a git-annex branch, but not now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Sep  5 11:59:27 2011</span>-</div>----</div>-<div class="comment" id="comment-2eef00910b0345dd531f62162cb713c7">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-2eef00910b0345dd531f62162cb713c7">comment 1</a>--</div>--<div class="inlinecontent">-After doing the above with two required copy per file, <code>git annex fsck</code> complained that I had only one copy per file even though I had created my clone, already. Once I <code>git pull</code>ed from the second repo, not getting any changes for obvious reasons, <code>git annex fsck</code> was happy. So I am not sure how my addition was incorrect. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Mar 18 21:18:49 2011</span>-</div>----</div>-<div class="comment" id="comment-3abb497859029b1fd8e93b441a6dbab0">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-3abb497859029b1fd8e93b441a6dbab0">comment 3</a>--</div>--<div class="inlinecontent">-<ul>-<li>why the <code>git remote add laptop ~/annex</code> ? this remote already exists under the name origin.</li>-<li>doesn't the last command need to be <code>git remote add usbdrive /media/usb/annex</code>? because the actual repo would be in /media/usb/annex, not /media/usb?</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Sat Apr  2 16:24:33 2011</span>-</div>----</div>-<div class="comment" id="comment-b82f3a6a64b7a80325a93dda7ade5c8a">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-b82f3a6a64b7a80325a93dda7ade5c8a">comment 1</a>--</div>--<div class="inlinecontent">-<p>I may be missing something obvious, but when I copy to a remote repository, the object files are created, but no softlinks are created. When I pull everything from the remote, it pulls only files the local repo knows about already.</p>--<pre><code>    A-   / \-  B   C-</code></pre>--<p>Moving from B to A creates no symlinks in A but the object files are moved to A. Copying back from A to B restores the object files in B and keeps them in A.</p>--<p>Copying from A to an empty C does not create any object files nor symlinks. Copying from C to A creates no symlinks in A but the object files are copied to A.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 22 19:41:51 2011</span>-</div>----</div>-<div class="comment" id="comment-43ce4dd555f5bff7f4581458b74cccb9">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-43ce4dd555f5bff7f4581458b74cccb9">comment 4</a>--</div>--<div class="inlinecontent">-<p>Good spotting on the last line, fixed.</p>--<p>The laptop remote is indeed redundant, but it leads to clearer views of what is going on later in the walkthrough ("git pull laptop master", "(copying from laptop...)"). And if the original clone is made from a central bare repo, this reinforces that you'll want to set up remotes for other repos on the computer.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 22:32:17 2011</span>-</div>----</div>-<div class="comment" id="comment-7153e4aed3f3a62684dd86149c45916c">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-7153e4aed3f3a62684dd86149c45916c">comment 2</a>--</div>--<div class="inlinecontent">-Yes, you have to pull down location tracking information in order for fsck to be satisfied in that situation. But since this is a walkthrough, and neither fsck or numcopies settings are mentioned until later, it's ok for this pull to be described a few steps along in <a href="./walkthrough/getting_file_content.html">getting file content</a>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Mar 19 11:35:38 2011</span>-</div>----</div>-<div class="comment" id="comment-5831f9a47997b4e980b9001cb0428cbd">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-5831f9a47997b4e980b9001cb0428cbd">comment 2</a>--</div>--<div class="inlinecontent">-<p><code>git annex move</code> only moves content. All symlink management is handled by git, so you have to keep repositories in sync using git as you would any other repo. When you <code>git pull B</code> in A, it will get whatever symlinks were added to B.</p>--<p>(It can be useful to use a central bare repo and avoid needing to git pull from one repo to another, then you can just always push commits to the central repo, and pull down all changes from other repos.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 22 20:38:10 2011</span>-</div>----</div>-<div class="comment" id="comment-1ca77527526103d883e0e7de15373194">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-1ca77527526103d883e0e7de15373194">comment 4</a>--</div>--<div class="inlinecontent">-I would not mind if the walkthrough documented the central git repo case. But I don't want to complicate it unduely (it's long enough), and it's important that the fully distributed case be shown to work, and I assume that people already have basic git knowledge, so documenting the details of set up of a bare git repo is sorta out of scope. (There are also a lot of way to do it, using github, or gitosis, or raw git, etc.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:28:00 2011</span>-</div>----</div>-<div class="comment" id="comment-9de38d25ece14325b948ba2261705bb1">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-9de38d25ece14325b948ba2261705bb1">comment 3</a>--</div>--<div class="inlinecontent">-<p>Ah yes, I feel kinda stupid in hindsight.</p>--<p>As the central server is most likely a common use case, would you object if I added that to the walkthrough? If you have any best practices on how to automate a push with every copy to a bare remote? AFAIK, git does not store information about bare/non-bare remotes, but this could easily be put into .git/config by git annex.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 22 22:07:49 2011</span>-</div>----</div>---</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./forum/git-annex_communication_channels.html">forum/git-annex communication channels</a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/contact.html
@@ -1,112 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>contact</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-contact--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Joey Hess <a href="mailto:joey@kitenet.net">&#106;o&#101;y&#64;&#107;&#x69;&#x74;&#101;n&#x65;t&#46;&#x6E;&#101;&#x74;</a> is the author of git-annex. If you need to-talk about something privatly, email me.</p>--<p>The <a href="./forum.html">forum</a> is the best place to discuss git-annex.</p>--<p>The <a href="http://lists.madduck.net/listinfo/vcs-home">VCS-home mailing list</a>-is a good mailing list for users who want to use git-annex in the context-of managing their large personal files.</p>--<p>For realtime chat, use the <code>#vcs-home</code> channel on irc.oftc.net.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/copies.html
@@ -1,152 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>copies</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-copies--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Annexed data is stored inside  your git repository's <code>.git/annex</code> directory.-Some <a href="./special_remotes.html">special remotes</a> can store annexed data elsewhere.</p>--<p>It's important that data not get lost by an ill-considered <code>git annex drop</code>-command.  So, git-annex can be configured to try-to keep N copies of a file's content available across all repositories. -(Although <a href="./trust.html">untrusted repositories</a> don't count toward this total.)</p>--<p>By default, N is 1; it is configured by annex.numcopies. This default-can be overridden on a per-file-type basis by the annex.numcopies-setting in <code>.gitattributes</code> files. The --numcopies switch allows-temporarily using a different value.</p>--<p><code>git annex drop</code> attempts to check with other git remotes, to check that N-copies of the file exist. If enough repositories cannot be verified to have-it, it will retain the file content to avoid data loss. Note that-<a href="./trust.html">trusted repositories</a> are not explicitly checked.</p>--<p>For example, consider three repositories: Server, Laptop, and USB. Both Server-and USB have a copy of a file, and N=1. If on Laptop, you <code>git annex get-&#036;file</code>, this will transfer it from either Server or USB (depending on which-is available), and there are now 3 copies of the file.</p>--<p>Suppose you want to free up space on Laptop again, and you <code>git annex drop</code> the file-there. If USB is connected, or Server can be contacted, git-annex can check-that it still has a copy of the file, and the content is removed from-Laptop. But if USB is currently disconnected, and Server also cannot be-contacted, it can't verify that it is safe to drop the file, and will-refuse to do so.</p>--<p>With N=2, in order to drop the file content from Laptop, it would need access-to both USB and Server.</p>--<p>Note that different repositories can be configured with different values of-N. So just because Laptop has N=2, this does not prevent the number of-copies falling to 1, when USB and Server have N=1. To avoid this,-configure it in <code>.gitattributes</code>, which is shared between repositories-using git.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./future_proofing.html">future proofing</a>--<a href="./special_remotes/S3.html">special remotes/S3</a>--<a href="./todo/union_mounting.html">todo/union mounting</a>--<a href="./trust.html">trust</a>--<a href="./use_case/Bob.html">use case/Bob</a>--<a href="./walkthrough/backups.html">walkthrough/backups</a>--<a href="./walkthrough/using_the_web.html">walkthrough/using the web</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design.html
@@ -1,238 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>design</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-design--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex's high-level design is mostly inherent in the data that it-stores in git, and alongside git. See <a href="./internals.html">internals</a> for details.</p>--<p>See <a href="./design/encryption.html">encryption</a> for design of encryption elements.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4f78277c4847fbb12575162da684d130">--<div class="comment-subject">--<a href="/design/encryption.html#comment-4f78277c4847fbb12575162da684d130">comment 3</a>--</div>--<div class="inlinecontent">-<p>Assuming you're storing your encrypted annex with me and I with you, our regular cron jobs to verify all data will catch corruption in each other's annexes.</p>--<p>Checksums of the encrypted objects could be optional, mitigating any potential attack scenarios.</p>--<p>It's not only about the cost of setting up new remotes. It would also be a way to keep data in one annex while making it accessible only in a subset of them. For example, I might need some private letters at work, but I don't want my work machine to be able to access them all.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Apr  5 19:24:17 2011</span>-</div>----</div>-<div class="comment" id="comment-f5f2ec243a7a1034cc52b894df78c290">--<div class="comment-subject">--<a href="/design/encryption.html#comment-f5f2ec243a7a1034cc52b894df78c290">comment 4</a>--</div>--<div class="inlinecontent">-<p>@Richard the easy way to deal with that scenario is to set up a remote that work can access, and only put in it files work should be able to see. Needing to specify which key a file should be encrypted to when putting it in a remote that supported multiple keys would add another level of complexity which that avoids.</p>--<p>Of course, the right approach is probably to have a separate repository for work. If you don't trust it with seeing file contents, you probably also don't trust it with the contents of your git repository.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 15:59:30 2011</span>-</div>----</div>-<div class="comment" id="comment-4675041b2a74c1d27846f59c6d281880">--<div class="comment-subject">--<a href="/design/encryption.html#comment-4675041b2a74c1d27846f59c6d281880">comment 1</a>--</div>--<div class="inlinecontent">-<p>New encryption keys could be used for different directories/files/patterns/times/whatever. One could then encrypt this new key for the public keys of other people/machines and push them out along with the actual data. This would allow some level of access restriction or future revocation. git-annex would need to keep track of which files can be decrypted with which keys. I am undecided if that information needs to be encrypted or not.</p>--<p>Encrypted object files should be checksummed in encrypted form so that it's possible to verify integrity without knowing any keys. Same goes for encrypted keys, etc.</p>--<p>Chunking files in this context seems like needless overkill. This might make sense to store a DVD image on CDs or similar, at some point. But not for encryption, imo. Coming up with sane chunk sizes for all use cases is literally impossible and as you pointed out, correlation by the remote admin is trivial.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 16:03:14 2011</span>-</div>----</div>-<div class="comment" id="comment-cc025ab2686094fb313a0f96e2ddd64f">--<div class="comment-subject">--<a href="/design/encryption.html#comment-cc025ab2686094fb313a0f96e2ddd64f">comment 2</a>--</div>--<div class="inlinecontent">-<p>I see no use case for verifying encrypted object files w/o access to the encryption key. And possible use cases for not allowing anyone to verify your data.</p>--<p>If there are to be multiple encryption keys usable within a single encrypted remote, than they would need to be given some kind of name (a since symmetric key is used, there is no pubkey to provide a name), and the name encoded in the files stored in the remote. While certainly doable I'm not sold that adding a layer of indirection is worthwhile. It only seems it would be worthwhile if setting up a new encrypted remote was expensive to do. Perhaps that could be the case for some type of remote other than S3 buckets.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 14:41:49 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/encryption.html
@@ -1,365 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>encryption</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../design.html">design</a>/ --</span>-<span class="title">-encryption--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This was the design doc for <a href="../encryption.html">encryption</a> and is preserved for-the curious. For an example of using git-annex with an encrypted S3 remote,-see <a href="../walkthrough/using_Amazon_S3.html">using Amazon S3</a>.</p>--<div class="toc">-	<ol>-		<li class="L2"><a href="#index1h2">encryption backends</a>-		</li>-		<li class="L2"><a href="#index2h2">encryption key management</a>-		</li>-		<li class="L2"><a href="#index3h2">filename enumeration</a>-		</li>-		<li class="L2"><a href="#index4h2">other use of the symmetric cipher</a>-		</li>-		<li class="L2"><a href="#index5h2">risks</a>-		</li>-	</ol>-</div>--<h2><a name="index1h2"></a>encryption backends</h2>--<p>It makes sense to support multiple encryption backends. So, there-should be a way to tell what backend is responsible for a given filename-in an encrypted remote. (And since special remotes can also store files-unencrypted, differentiate from those as well.)</p>--<p>The rest of this page will describe a single encryption backend using GPG.-Probably only one will be needed, but who knows? Maybe that backend will-turn out badly designed, or some other encryptor needed. Designing-with more than one encryption backend in mind helps future-proofing.</p>--<h2><a name="index2h2"></a>encryption key management</h2>--<p>[[!template <span class="error">Error: <span class="createlink">note</span> not found</span>]]</p>--<p>Data is encrypted by gpg, using a symmetric cipher.-The cipher is itself checked into your git repository, encrypted using one or-more gpg public keys. This scheme allows new gpg private keys to be given-access to content that has already been stored in the remote.</p>--<p>Different encrypted remotes need to be able to each use different ciphers.-Allowing multiple ciphers to be used within a single remote would add a lot-of complexity, so is not planned to be supported.-Instead, if you want a new cipher, create a new S3 bucket, or whatever.-There does not seem to be much benefit to using the same cipher for-two different encrypted remotes.</p>--<p>So, the encrypted cipher could just be stored with the rest of a remote's-configuration in <code>remotes.log</code> (see <a href="../internals.html">internals</a>). When <code>git-annex intiremote</code> makes a remote, it can generate a random symmetric-cipher, and encrypt it with the specified gpg key. To allow another gpg-public key access, update the encrypted cipher to be encrypted to both gpg-keys.</p>--<h2><a name="index3h2"></a>filename enumeration</h2>--<p>If the names of files are encrypted or securely hashed, or whatever is-chosen, this makes it harder for git-annex (let alone untrusted third parties!)-to get a list of the files that are stored on a given enrypted remote.-But, does git-annex really ever need to do such an enumeration?</p>--<p>Apparently not. <code>git annex unused --from remote</code> can now check for-unused data that is stored on a remote, and it does so based only on-location log data for the remote. This assumes that the location log is-kept accurately.</p>--<p>What about <code>git annex fsck --from remote</code>? Such a command should be able to,-for each file in the repository, contact the encrypted remote to check-if it has the file. This can be done without enumeration, although it will-mean running gpg once per file fscked, to get the encrypted filename.</p>--<p>So, the files stored in the remote should be encrypted. But, it needs-to be a repeatable encryption, so they cannot just be gpg encrypted,-that would yeild a new name each time. Instead, HMAC is used. Any hash-could be used with HMAC; currently SHA1 is used.</p>--<p>It was suggested that it might not be wise to use the same cipher for both-gpg and HMAC. Being paranoid, it's best not to tie the security of one-to the security of the other. So, the encrypted cipher described above is-actually split in two; half is used for HMAC, and half for gpg.</p>--<hr />--<p>Does the HMAC cipher need to be gpg encrypted? Imagine if it were-stored in plainext in the git repository. Anyone who can access-the git repository already knows the actual filenames, and typically also-the content hashes of annexed content. Having access to the HMAC cipher-could perhaps be said to only let them verify that data they already-know.</p>--<p>While this seems a pretty persuasive argument, I'm not 100% convinced, and-anyway, most times that the HMAC cipher is needed, the gpg cipher is also-needed. Keeping the HMAC cipher encrypted does slow down two things:-dropping content from encrypted remotes, and checking if encrypted remotes-really have content. If it's later determined to be safe to not encrypt the-HMAC cipher, the current design allows changing that, even for existing-remotes.</p>--<h2><a name="index4h2"></a>other use of the symmetric cipher</h2>--<p>The symmetric cipher can be used to encrypt other content than the content-sent to the remote. In particular, it may make sense to encrypt whatever-access keys are used by the special remote with the cipher, and store that-in remotes.log. This way anyone whose gpg key has been given access to -the cipher can get access to whatever other credentials are needed to-use the special remote.</p>--<h2><a name="index5h2"></a>risks</h2>--<p>A risk of this scheme is that, once the symmetric cipher has been obtained, it-allows full access to all the encrypted content. This scheme does not allow-revoking a given gpg key access to the cipher, since anyone with such a key-could have already decrypted the cipher and stored a copy. </p>--<p>If git-annex stores the decrypted symmetric cipher in memory, then there-is a risk that it could be intercepted from there by an attacker. Gpg-amelorates these type of risks by using locked memory. For git-annex, note-that an attacker with local machine access can tell at least all the-filenames and metadata of files stored in the encrypted remote anyway,-and can access whatever content is stored locally.</p>--<p>This design does not support obfuscating the size of files by chunking-them, as that would have added a lot of complexity, for dubious benefits.-If the untrusted party running the encrypted remote wants to know file sizes,-they could correlate chunks that are accessed together. Encrypting data-changes the original file size enough to avoid it being used as a direct-fingerprint at least.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4675041b2a74c1d27846f59c6d281880">--<div class="comment-subject">--<a href="/design/encryption.html#comment-4675041b2a74c1d27846f59c6d281880">comment 1</a>--</div>--<div class="inlinecontent">-<p>New encryption keys could be used for different directories/files/patterns/times/whatever. One could then encrypt this new key for the public keys of other people/machines and push them out along with the actual data. This would allow some level of access restriction or future revocation. git-annex would need to keep track of which files can be decrypted with which keys. I am undecided if that information needs to be encrypted or not.</p>--<p>Encrypted object files should be checksummed in encrypted form so that it's possible to verify integrity without knowing any keys. Same goes for encrypted keys, etc.</p>--<p>Chunking files in this context seems like needless overkill. This might make sense to store a DVD image on CDs or similar, at some point. But not for encryption, imo. Coming up with sane chunk sizes for all use cases is literally impossible and as you pointed out, correlation by the remote admin is trivial.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 16:03:14 2011</span>-</div>----</div>-<div class="comment" id="comment-cc025ab2686094fb313a0f96e2ddd64f">--<div class="comment-subject">--<a href="/design/encryption.html#comment-cc025ab2686094fb313a0f96e2ddd64f">comment 2</a>--</div>--<div class="inlinecontent">-<p>I see no use case for verifying encrypted object files w/o access to the encryption key. And possible use cases for not allowing anyone to verify your data.</p>--<p>If there are to be multiple encryption keys usable within a single encrypted remote, than they would need to be given some kind of name (a since symmetric key is used, there is no pubkey to provide a name), and the name encoded in the files stored in the remote. While certainly doable I'm not sold that adding a layer of indirection is worthwhile. It only seems it would be worthwhile if setting up a new encrypted remote was expensive to do. Perhaps that could be the case for some type of remote other than S3 buckets.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 14:41:49 2011</span>-</div>----</div>-<div class="comment" id="comment-4f78277c4847fbb12575162da684d130">--<div class="comment-subject">--<a href="/design/encryption.html#comment-4f78277c4847fbb12575162da684d130">comment 3</a>--</div>--<div class="inlinecontent">-<p>Assuming you're storing your encrypted annex with me and I with you, our regular cron jobs to verify all data will catch corruption in each other's annexes.</p>--<p>Checksums of the encrypted objects could be optional, mitigating any potential attack scenarios.</p>--<p>It's not only about the cost of setting up new remotes. It would also be a way to keep data in one annex while making it accessible only in a subset of them. For example, I might need some private letters at work, but I don't want my work machine to be able to access them all.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Apr  5 19:24:17 2011</span>-</div>----</div>-<div class="comment" id="comment-f5f2ec243a7a1034cc52b894df78c290">--<div class="comment-subject">--<a href="/design/encryption.html#comment-f5f2ec243a7a1034cc52b894df78c290">comment 4</a>--</div>--<div class="inlinecontent">-<p>@Richard the easy way to deal with that scenario is to set up a remote that work can access, and only put in it files work should be able to see. Needing to specify which key a file should be encrypted to when putting it in a remote that supported multiple keys would add another level of complexity which that avoids.</p>--<p>Of course, the right approach is probably to have a separate repository for work. If you don't trust it with seeing file contents, you probably also don't trust it with the contents of your git repository.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 15:59:30 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../design.html">design</a>--<a href="../encryption.html">encryption</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/distributed_version_control.html
@@ -1,115 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>distributed version control</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-distributed version control--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>In git, there can be multiple clones of a repository, each clone can -be independently modified, and clones can push or pull changes to-one-another to get back in sync.</p>--<p>git-annex preserves that fundamental distributed nature of git, while-dropping the requirement that, once in sync, each clone contains all the data-that was committed to each other clone. Instead of storing the content-of a file in the repository, git-annex stores a pointer to the content.</p>--<p>Each git-annex repository is responsible for storing some of the content,-and can copy it to or from other repositories. <a href="./location_tracking.html">Location tracking</a>-information is committed to git, to let repositories inform other-repositories what file contents they have available.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./use_case/Alice.html">use case/Alice</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/download.html
@@ -1,360 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>download</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-download--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The main git repository for git-annex is <code>git://git-annex.branchable.com/</code></p>--<p>(You can push changes to this wiki from that anonymous git checkout.)</p>--<p>Other mirrors of the git repository:</p>--<ul>-<li><code>git://git.kitenet.net/git-annex</code> [<a href="http://git.kitenet.net/?p=git-annex.git;a=summary">gitweb</a>]</li>-<li><a href="https://github.com/joeyh/git-annex">at github</a></li>-</ul>--<p>To download a tarball of a particular release, use an url like-<a href="http://git.kitenet.net/?p=git-annex.git;a=snapshot;sf=tgz;h=refs/tags/3.20110702">http://git.kitenet.net/?p=git-annex.git;a=snapshot;sf=tgz;h=refs/tags/3.20110702</a></p>--<p>From time to time, releases of git-annex are uploaded-<a href="http://hackage.haskell.org/package/git-annex">to hackage</a>.</p>--<p>Some operating systems include git-annex in easily prepackaged form and-others need some manual work. See <a href="./install.html">install</a> for details.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8563997a4c3008dbf82787344f25fc31">--<div class="comment-subject">--<a href="/download.html#comment-8563997a4c3008dbf82787344f25fc31">comment 2</a>--</div>--<div class="inlinecontent">-maybe snag tarballs from <a href="http://packages.debian.org/experimental/git-annex">http://packages.debian.org/experimental/git-annex</a> ? --</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Mar 22 10:01:37 2011</span>-</div>----</div>-<div class="comment" id="comment-a97b4aa28178f58da38fa718a42c5921">--<div class="comment-subject">--<a href="/download.html#comment-a97b4aa28178f58da38fa718a42c5921">comment 7</a>--</div>--<div class="inlinecontent">-v1.7.5.3 has it.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnOvt3TwSSDOLnoVzDNbOP1qO9OmNH5s0s">Fraser</a>-</span>---&mdash; <span class="date">Thu May 26 21:27:37 2011</span>-</div>----</div>-<div class="comment" id="comment-01c3dad3a0bf2f9fb7a82e7744681330">--<div class="comment-subject">--<a href="/download.html#comment-01c3dad3a0bf2f9fb7a82e7744681330">comment 6</a>--</div>--<div class="inlinecontent">-<p>Whups, the fix landed in git's `maint' branch just after 1.7.5 but 1.7.5.1 was-tagged on a different branch.</p>--<p>Will look closer in future, and let you know when it's really released.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnOvt3TwSSDOLnoVzDNbOP1qO9OmNH5s0s">Fraser</a>-</span>---&mdash; <span class="date">Sun May 22 19:02:39 2011</span>-</div>----</div>-<div class="comment" id="comment-9c24c107eb38ea25b2260a7a99394ad5">--<div class="comment-subject">--<a href="/download.html#comment-9c24c107eb38ea25b2260a7a99394ad5">comment 5</a>--</div>--<div class="inlinecontent">-Hmm, I've upgraded to that version, but I see nothing in its changelog, commit log, code, or runtime behavior to indicate that it's producing stable gzip output.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu May 19 12:10:35 2011</span>-</div>----</div>-<div class="comment" id="comment-59047cd53bbc992da10d02947ea80630">--<div class="comment-subject">--<a href="/download.html#comment-59047cd53bbc992da10d02947ea80630">comment 3</a>--</div>--<div class="inlinecontent">-<p>The tarballs produced by gitweb are actually stable. They are wrapped in a gz file with a varying timestamp however. It might be nice if gitweb passed --no-name to gzip to avoid that inconsistency.</p>--<p>git-annex also has a <a href="http://kitenet.net/~joey/code/pristine-tar/">pristine-tar</a> branch in git that can be used to recreate the tarballs I upload to Debian.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 22 14:09:21 2011</span>-</div>----</div>-<div class="comment" id="comment-dbb5a8c635a01d193b5fe0c59c2a18f6">--<div class="comment-subject">--<a href="/download.html#comment-dbb5a8c635a01d193b5fe0c59c2a18f6">gitweb supplies --no-name as of 1.7.5.1</a>--</div>--<div class="inlinecontent">-<p>git v1.7.5.1 fixes the gitweb gzip issue.  If the git instance is updated we-can have stable distributions (and I can finally write a FreeBSD port ^_^)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnOvt3TwSSDOLnoVzDNbOP1qO9OmNH5s0s">Fraser</a>-</span>---&mdash; <span class="date">Thu May 19 04:19:02 2011</span>-</div>----</div>-<div class="comment" id="comment-b6505efbed394eeb9cdfe1d1f09d5c95">--<div class="comment-subject">--<a href="/download.html#comment-b6505efbed394eeb9cdfe1d1f09d5c95">Please provide stable tarballs or zipfiles</a>--</div>--<div class="inlinecontent">-I'm trying to package git annex for ArchLinux and NixOS. That task would be a <em>lot</em> easier, if there were proper release archives available for download. The Gitweb site offers to create snapshot tarballs on the fly, but those tarballs have a different SHA hash every time they're generated, so they cannot be used for the purposes of a distribution. A simple solution for this problem would be to enable snapshots in zip format (because zip files look the same every time they're generated).--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://peter-simons.myopenid.com/">peter-simons [myopenid.com]</a>-</span>---&mdash; <span class="date">Tue Mar 22 09:06:58 2011</span>-</div>----</div>-<div class="comment" id="comment-b7006afff938f9a68ead455d046bcc48">--<div class="comment-subject">--<a href="/download.html#comment-b7006afff938f9a68ead455d046bcc48">comment 8</a>--</div>--<div class="inlinecontent">-And that is now installed on kitenet.net and verified to work.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat May 28 12:04:51 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>--<a href="./install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/encryption.html
@@ -1,189 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>encryption</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-encryption--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex mostly does not use encryption. Anyone with access to a git-repository can see all the filenames in it, its history, and can access-any annexed file contents.</p>--<p>Encryption is needed when using <a href="./special_remotes.html">special remotes</a> like Amazon S3, where-file content is sent to an untrusted party who does not have access to the-git repository.</p>--<p>Such an encrypted remote uses strong GPG encryption on the contents of files,-as well as HMAC hashing of the filenames. The size of the encrypted files,-and access patterns of the data, should be the only clues to what is-stored in such a remote.</p>--<p>You should decide whether to use encryption with a special remote before-any data is stored in it. So, <code>git annex initremote</code> requires you-to specify "encryption=none" when first setting up a remote in order-to disable encryption.</p>--<p>If you want to use encryption, run <code>git annex initremote</code> with-"encryption=USERID". The value will be passed to <code>gpg</code> to find encryption keys.-Typically, you will say "encryption=2512E3C7" to use a specific gpg key.-Or, you might say "encryption=joey@kitenet.net" to search for matching keys.</p>--<p>The <a href="./design/encryption.html">encryption design</a> allows additional encryption keys-to be added on to a special remote later. Once a key is added, it is able-to access content that has already been stored in the special remote.-To add a new key, just run <code>git annex initremote</code> again, specifying the-new encryption key:</p>--<pre><code>git annex initremote myremote encryption=788A3F4C-</code></pre>--<p>Note that once a key has been given access to a remote, it's not-possible to revoke that access, short of deleting the remote. See-<a href="./design/encryption.html">encryption design</a> for other security risks-associated with encryption.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-e676b9d3a2afeac2140a508745729db3">--<div class="comment-subject">--<a href="/encryption.html#comment-e676b9d3a2afeac2140a508745729db3">Tahoe-LAFS comes with encryption</a>--</div>--<div class="inlinecontent">-<p>The Tahoe-LAFS special remote automatically encrypts and adds cryptography integrity checks/digital signatures. For that special remote you should not use the git-annex encryption scheme.</p>--<p>Tahoe-LAFS encryption generates a new independent key for each file. This means that you can share access to one of the files without thereby sharing access to all of them, and it means that individual files can be deduplicated among multiple users.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=zooko&amp;do=goto">zooko</a>--</span>---&mdash; <span class="date">Wed May 18 00:32:14 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./bugs/git_annex_initremote_walks_.git-annex.html">bugs/git annex initremote walks .git-annex</a>--<a href="./design/encryption.html">design/encryption</a>--<a href="./index.html">index</a>--<a href="./special_remotes/S3.html">special remotes/S3</a>--<a href="./special_remotes/bup.html">special remotes/bup</a>--<a href="./special_remotes/directory.html">special remotes/directory</a>--<a href="./special_remotes/hook.html">special remotes/hook</a>--<a href="./special_remotes/rsync.html">special remotes/rsync</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/feeds.html
@@ -1,107 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>feeds</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-feeds--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Aggregating git-annex mentions from elsewhere on the net..</p>--<ul>-<li>[[!aggregate  expirecount=25 name="identica" feedurl="http://identi.ca/api/statusnet/tags/timeline/gitannex.rss" url="http://identi.ca/tag/gitannex"]]</li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum.html
@@ -1,4114 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>forum</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-forum--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This is a place to discuss using git-annex. If you need help, advice, or anything, post about it here.</p>--<div id="feedlink">---</div>-<p>--<a href="./forum/version_3_upgrade.html">version 3 upgrade</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./forum/advantages_of_SHA__42___over_WORM.html">advantages of SHA&#42; over WORM</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./forum/migration_to_git-annex_and_rsync.html">migration to git-annex and rsync</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_do_round_robin_downloading_of_data.html">wishlist: do round robin downloading of data</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/migrate_existing_git_repository_to_git-annex.html">migrate existing git repository to git-annex</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.html">Error while adding a file &#34;createSymbolicLink: already exists&#34;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Wishlist:_Is_it_possible_to___34__unlock__34___files_without_copying_the_file_data__63__.html">Wishlist: Is it possible to &#34;unlock&#34; files without copying the file data&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_define_remotes_that_must_have_all_files.html">wishlist: define remotes that must have all files</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/seems_to_build_fine_on_haskell_platform_2011.html">seems to build fine on haskell platform 2011</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Can_I_store_normal_files_in_the_git-annex_git_repository__63__.html">Can I store normal files in the git-annex git repository&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/working_without_git-annex_commits.html">working without git-annex commits</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_traffic_accounting_for_git-annex.html">wishlist: traffic accounting for git-annex</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html">tips: special&#95;remotes&#47;hook with tahoe-lafs</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_push_to_cia.vc_from_the_website__39__s_repo__44___not_your_personal_one.html">wishlist: push to cia.vc from the website&#39;s repo&#44; not your personal one</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_git-annex_replicate.html">wishlist: git-annex replicate</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/OSX__39__s_haskell-platform_statically_links_things.html">OSX&#39;s haskell-platform statically links things</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/example_of_massively_disconnected_operation.html">example of massively disconnected operation</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_git_annex_status.html">wishlist: git annex status</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.html">Is an automagic upgrade of the object directory safe&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/new_microfeatures.html">new microfeatures</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.html">Wishlist: Ways of selecting files based on meta-information</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Need_new_build_instructions_for_Debian_stable.html">Need new build instructions for Debian stable</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/unannex_alternatives.html">unannex alternatives</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/hashing_objects_directories.html">hashing objects directories</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/git-annex_communication_channels.html">git-annex communication channels</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Behaviour_of_fsck.html">Behaviour of fsck</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html">performance improvement: git on ssd&#44; annex on spindle disk</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_git_backend_for_git-annex.html">wishlist: git backend for git-annex</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.html">Will git annex work on a FAT32 formatted key&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_support_for_more_ssh_urls_.html">wishlist: support for more ssh urls </a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_command_options_changes.html">wishlist: command options changes</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/getting_git_annex_to_do_a_force_copy_to_a_remote.html">getting git annex to do a force copy to a remote</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/incompatible_versions__63__.html">incompatible versions&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/bainstorming:_git_annex_push___38___pull.html">bainstorming: git annex push &#38; pull</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/can_git-annex_replace_ddm__63__.html">can git-annex replace ddm&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.html">wishlist: git annex put -- same as get&#44; but for defaults</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/git-annex_on_OSX.html">git-annex on OSX</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/batch_check_on_remote_when_using_copy.html">batch check on remote when using copy</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/sparse_git_checkouts_with_annex.html">sparse git checkouts with annex</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/relying_on_git_for_numcopies.html">relying on git for numcopies</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:alias_system.html">wishlist:alias system</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.html">OSX&#39;s default sshd behaviour has limited paths set</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/rsync_over_ssh__63__.html">rsync over ssh&#63;</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/wishlist:_special_remote_for_sftp_or_rsync.html">wishlist: special remote for sftp or rsync</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/__34__git_annex_lock__34___very_slow_for_big_repo.html">&#34;git annex lock&#34; very slow for big repo</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./forum/Problems_with_large_numbers_of_files.html">Problems with large numbers of files</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>---</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8a6cbe5b9acbc5b2abcadccfdee09ed7">--<div class="comment-subject">--<a href="/forum/__34__git_annex_lock__34___very_slow_for_big_repo.html#comment-8a6cbe5b9acbc5b2abcadccfdee09ed7">fixed</a>--</div>--<div class="inlinecontent">-<p>Running <code>git checkout</code> by hand is fine, of course.</p>--<p>Underlying problem is that git has some O(N) scalability of operations on the index with regards to the number of files in the repo. So a repo with a whole lot of files will have a big index, and any operation that changes the index, like the <code>git reset</code> this needs to do, has to read in the entire index, and write out a new, modified version. It seems that git could be much smarter about its index data structures here, but I confess I don't understand the index's data structures at all. I hope someone takes it on, as git's scalability to number of files in the repo is becoming a new pain point, now that scalability to large files is "solved". ;)</p>--<p>Still, it is possible to speed this up at git-annex's level. Rather than doing a <code>git reset</code> followed by a git checkout, it can just <code>git checkout HEAD -- file</code>, and since that's one command, it can then be fed into the queueing machinery in git-annex (that exists mostly to work around this git malfescence), and so only a single git command will need to be run to lock multiple files.</p>--<p>I've just implemented the above. In my music repo, this changed an lock of a CD's worth of files from taking ctrl-c long to 1.75 seconds. Enjoy!</p>--<p>(Hey, this even speeds up the one file case greatly, since <code>git reset -- file</code> is slooooow -- it seems to scan the <em>entire</em> repository tree. Yipes.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue May 31 14:51:13 2011</span>-</div>----</div>-<div class="comment" id="comment-074bde15bf2a744f29f5eed191760777">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-074bde15bf2a744f29f5eed191760777">comment 4</a>--</div>--<div class="inlinecontent">-<p>@joey</p>--<p>OK, I'll try increasing the stack size and see if that helps.</p>--<p>For reference, I was running:</p>--<p>git annex add .</p>--<p>on a directory containing about 100k files spread over many nested subdirectories. I actually have more than a dozen projects like this that I plan to keep in git annex, possibly in separate repositories if necessary. I could probably tar the data and then archive that, but I like the idea of being able to see the structure of my data even though the contents of the files are on a different machine.</p>--<p>After the crash, running:</p>--<p>git annex unannex</p>--<p>does nothing and returns instantly. What exactly is 'git annex add' doing? I know that it's moving files into the key-value store and adding symlinks, but I don't know what else it does.</p>--<p>--Justin</p>--<p>If </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkhdKAhe3l_UyGt5SdfRBPYVwe-9f8P2dM">Justin</a>-</span>---&mdash; <span class="date">Tue Apr  5 17:14:12 2011</span>-</div>----</div>-<div class="comment" id="comment-cb9f8eaa0d71e5092a2310cc76c0fa26">--<div class="comment-subject">--<a href="/forum/wishlist:_define_remotes_that_must_have_all_files.html#comment-cb9f8eaa0d71e5092a2310cc76c0fa26">comment 2</a>--</div>--<div class="inlinecontent">-<p>Right, I have thought about untrusting all but a few remotes to achieve-something similar before and I'm sure it would kind of work. It would be more-of an ugly workaround, however, because I would have to untrust remotes that-are, in reality, at least semi-trusted. That's why an extra option/attribute-for that kind of purpose/remote would be nice.</p>--<p>Obviously I didn't see the scalability problem though. Good Point. Maybe I can-achieve the same thing by writing a log parsing script for myself?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=gernot&amp;do=goto">gernot</a>--</span>---&mdash; <span class="date">Sun Apr 24 07:20:05 2011</span>-</div>----</div>-<div class="comment" id="comment-9d8966c41f6e6ab3eab3ea32787cede5">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-9d8966c41f6e6ab3eab3ea32787cede5">comment 2</a>--</div>--<div class="inlinecontent">-<p>Can't you just use an underscore instead of a colon?</p>--<p>Would it be feasible to split directories dynamically? I.e. start with SHA1_123456789abcdef0123456789abcdef012345678/SHA1_123456789abcdef0123456789abcdef012345678 and, at a certain cut-off point, switch to shorter directory names? This could even be done per subdirectory and based purely on a locally-configured number. Different annexes on different file systems or with different file subsets might even have different thresholds. This would ensure scale while not forcing you to segment from the start. Also, while segmenting with longer directory names means a flatter tree, segments longer than four characters might not make too much sense. Segmenting too often could lead to some directories becoming too populated, bringing us back to the dynamic segmentation.</p>--<p>All of the above would make merging annexes by hand a <em>lot</em> harder, but I don't know if this is a valid use case. And if all else fails, one could merge everything with the unsegemented directory names and start again from there.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 09:52:16 2011</span>-</div>----</div>-<div class="comment" id="comment-8e408807c55027dd4868a851e03a7bd9">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-8e408807c55027dd4868a851e03a7bd9">comment 1</a>--</div>--<div class="inlinecontent">-I tend to agree that the default output of fsck is not quite right. I often use git annex fsck -q. A progress spinner display is a good idea.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 24 13:45:08 2011</span>-</div>----</div>-<div class="comment" id="comment-e7c7e35166511690140b89a419864692">--<div class="comment-subject">--<a href="/forum/wishlist:_special_remote_for_sftp_or_rsync.html#comment-e7c7e35166511690140b89a419864692">comment 1</a>--</div>--<div class="inlinecontent">-<p>+1 for a generic user configurable backend that a user can put shell commands in, which has a disclaimer such that if a user hangs themselves with misconfiguration then its their own fault :P</p>--<p>I would love to be able to quickly plugin an irods/sector set of put/get/delete/stat(get info) commands into git-annex to access my private clouds which aren't s3 compatible.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Thu Apr 28 03:47:38 2011</span>-</div>----</div>-<div class="comment" id="comment-416cbc4155ea7e5676da822facc3a860">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-416cbc4155ea7e5676da822facc3a860">git annex unlock --readonly</a>--</div>--<div class="inlinecontent">-<p>This was already asked <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606577">here</a>, but I have a use case where I need to unlock with the files being hardlinked instead of copied (my fs does not support CoW), even though 'git annex lock' is now much faster ;-) . The idea is that 1) I want the external world see my repo "as if" it wasn't annexed (because of its own limitation to deal with soft links), and 2) I know what I do, and am sure that files won't be written to but only read.</p>--<p>My case is: the repo contains a snapshot A1 of a certain remote directory. Later I want to rsync this dir into a new snapshot A2. Of course, I want to transfer only new or changed files, with the --copy-dest=A1 (or --compare-dest) rsync's options. Unfortunately, rsync won't recognize soft-links from git-annex, and will re-transfer everything.</p>--<p>Maybe I'm overusing git-annex ;-) but still, I find it is a legitimate use case, and even though there are workarounds (I don't even remember what I had to do), it would be much more straightforward to have 'git annex unlock --readonly' (or '--readonly-unsafe'?), ... or have rsync take soft-links into account, but I did not see the author ask for microfeatures ideas :) (it was discussed, and only some convoluted workarounds were proposed). Thanks.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 07:34:42 2011</span>-</div>----</div>-<div class="comment" id="comment-902ca081e1066bf97a398a50bc5790d7">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-902ca081e1066bf97a398a50bc5790d7">comment 7</a>--</div>--<div class="inlinecontent">-http://xfs.org/index.php/XFS_FAQ#Q:<em>Performance:</em>mkfs.xfs_-n_size.3D64k_option--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr  8 17:55:36 2011</span>-</div>----</div>-<div class="comment" id="comment-932f7044a241459e239282552ea7a6ac">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-932f7044a241459e239282552ea7a6ac">comment 4</a>--</div>--<div class="inlinecontent">-.1 cents: Having IRC would be really nice for seeking quick help.   E.g. like I was trying to do now, google lead me to this page.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY">Yaroslav</a>-</span>---&mdash; <span class="date">Wed Apr 13 13:53:26 2011</span>-</div>----</div>-<div class="comment" id="comment-4523dc93bd141e86a777d272ab46e284">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-4523dc93bd141e86a777d272ab46e284">comment 3</a>--</div>--<div class="inlinecontent">-<p>@justin, I discovered that "git annex describe" did what I wanted</p>--<p>@joey, yep that is the behaviour of "tahoe ls", thanks for the tip on removing the file from the remote.</p>--<p>It seems to be working okay for now, the only concern is that on the remote everything is dumped into the same directory, but I can live with that, since I want to track biggish blobs and not lots of small little files.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr 29 11:33:24 2011</span>-</div>----</div>-<div class="comment" id="comment-3a858d56461be358daec636680b590c9">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-3a858d56461be358daec636680b590c9">relation to [[todo/branching]]</a>--</div>--<div class="inlinecontent">-the non-bare repository issue would go away if this was combined with the "alternate" approach to <a href="./todo/branching.html">branching</a>. (with the "fleshed out proposal" of branching, this would not work at all for lack of shared commits.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Feb 23 17:48:14 2011</span>-</div>----</div>-<div class="comment" id="comment-20354d0ba939a76d432fb5b49834ea88">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-20354d0ba939a76d432fb5b49834ea88">request for information, plus some ideas</a>--</div>--<div class="inlinecontent">-<p>Hey Jimmy: how's this working for you now? I would expect it to go slower and slower since Tahoe-LAFS has an O(N) algorithm for reading or updating directories.</p>--<p>Of course, if it is still fast enough for your uses then that's okay. :-)</p>--<p>(We're working on optimizations of this for future releases of Tahoe-LAFS.)</p>--<p>I'd like to understand the desired behavior of store-hook and retrieve-hook better, in order to see if there is a more efficient way to use Tahoe-LAFS for this.</p>--<p>Off to look for docs.</p>--<p>Regards,</p>--<p>Zooko</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=zooko&amp;do=goto">zooko</a>--</span>---&mdash; <span class="date">Sat May 14 01:07:17 2011</span>-</div>----</div>-<div class="comment" id="comment-1708d46ab207bebbf642b723a91192ca">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-1708d46ab207bebbf642b723a91192ca">comment 2</a>--</div>--<div class="inlinecontent">-<p>If <code>tahoe ls</code> outputs only the key, on its own line, and exits nonzero if it's not present, then I think you did the right thing.</p>--<p>To remove a file, use <code>git annex move file --from tahoe</code> and then you can drop it locally.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr 29 11:24:56 2011</span>-</div>----</div>-<div class="comment" id="comment-fd4faaf504daf33f8e250f626a302f19">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-fd4faaf504daf33f8e250f626a302f19">git annex fetch</a>--</div>--<div class="inlinecontent">-<p>My last comment is a bit confused. The "git fetch" command allows to get all the information from a remote, and it is then possible to merge while being offline (without access to the remote). I would like a "git annex fetch remote" command to be able to get all annexed files from remote, so that if I later merge with remote, all annexed files are already here. And "git annex fetch" could (optionally) call "git fetch" before getting the files.</p>--<p>It seems also that in my last post, I should have written "git annex get --from=remote" instead of "git annex copy --from=remote", because "annex copy --from" copies all files, even if the local repo already have them (is this the case? if yes, when is it useful?)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Sun Jul  3 13:57:00 2011</span>-</div>----</div>-<div class="comment" id="comment-59ea7200189cbe4cca5822d64727d0cb">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-59ea7200189cbe4cca5822d64727d0cb">comment 1</a>--</div>--<div class="inlinecontent">-I've been longing for an automated way of removing references to a remote assuming I know the exact uuid that I want to remove. i.e. I have lost a portable HDD due to a destructive process, I now want to delete all references to copies of data that was on that disk. Unless this feature exists, I would love to see it implemented.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Jun  1 13:36:50 2011</span>-</div>----</div>-<div class="comment" id="comment-88f6410c663c150ef3b6be83d7046ff2">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.html#comment-88f6410c663c150ef3b6be83d7046ff2">comment 1</a>--</div>--<div class="inlinecontent">-<p>This begs the question: What is the default remote? It's probably <em>not</em> the same repository that git's master branch is tracking (ie, origin/master). It seems there would have to be an annex.defaultremote setting.</p>--<p>BTW, mr can easily be configured on a per-repo basis so that "mr push" copies to somewhere: <code>push = git push; git annex push wherever</code></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Apr  4 14:13:46 2011</span>-</div>----</div>-<div class="comment" id="comment-fd5dfe42e59fb5e640a493ea546fc12d">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.html#comment-fd5dfe42e59fb5e640a493ea546fc12d">comment 1</a>--</div>--<div class="inlinecontent">-<p>Going one step further, a --min-copy could put all files so that numcopies is satisfied. --all could push to all available ones.</p>--<p>To take everything another step further, if it was possible to group remotes, one could act on the groups. "all" would be an obvious choice for a group that always exists, everything else would be set up by the user.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Apr  4 06:28:01 2011</span>-</div>----</div>-<div class="comment" id="comment-8b1d8928e9fe8835bfa9fb390822eb1f">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-8b1d8928e9fe8835bfa9fb390822eb1f">comment 1</a>--</div>--<div class="inlinecontent">-<p>Git-annex's commit hook does not prevent unannex being used. The file you unannex will not be checked into git anymore and will be a regular file again, not a git-annex symlink. </p>--<p>For example, here's a transcript:</p>--<pre>-joey@gnu:~/tmp&gt;mkdir demo-joey@gnu:~/tmp&gt;cd demo-joey@gnu:~/tmp/demo&gt;git init-Initialized empty Git repository in /home/joey/tmp/demo/.git/-joey@gnu:~/tmp/demo&gt;git annex init demo-init demo ok-joey@gnu:~/tmp/demo&gt;echo hi &gt; file-joey@gnu:~/tmp/demo&gt;git annex add file -add file ok-(Recording state in git...)-joey@gnu:~/tmp/demo&gt;git commit -m add-[master 64cf267] add- 2 files changed, 2 insertions(+), 0 deletions(-)- create mode 100644 .git-annex/WORM:1296607093:3:file.log- create mode 120000 file-joey@gnu:~/tmp/demo&gt;git annex unannex file-unannex file ok-(Recording state in git...)-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git commit-[master 78a09cc] unannex- 2 files changed, 1 insertions(+), 2 deletions(-)- delete mode 120000 file-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git status-# On branch master-# Untracked files:-#   (use "git add ..." to include in what will be committed)-#-#   file-nothing added to commit but untracked files present (use "git add" to track)-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:39:10 2011</span>-</div>----</div>-<div class="comment" id="comment-b47bc6096d0596ec45f2d40d0208ff46">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-b47bc6096d0596ec45f2d40d0208ff46">comment 1</a>--</div>--<div class="inlinecontent">-<p>Yes, there is value in layering something over git-annex to use a policy to choose what goes where.</p>--<p>I use <a href="http://kitenet.net/~joey/code/mr/">mr</a> to update and manage all my repositories, and since mr can be made to run arbitrary commands when doing eg, an update, I use its config file as such a policy layer. For example, my podcasts are pulled into my sound repository in a subdirectory; boxes that consume podcasts run "git pull; git annex get podcasts --exclude="<em>/out/</em>"; git annex drop podcasts/*/out". I move podcasts to "out" directories once done with them (I have yet to teach mpd to do that for me..), and the next time I run "mr update" to update everything, it pulls down new ones and removes old ones.</p>--<p>I don't see any obstacle to doing what you want. May be that you'd need better querying facilities in git-annex (so the policy layer can know what is available where), or finer control (--exclude is a good enough hammer for me, but maybe not for you).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Feb 14 18:08:54 2011</span>-</div>----</div>-<div class="comment" id="comment-f0734953027e17bd633da14e626a4263">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-f0734953027e17bd633da14e626a4263">comment 1</a>--</div>--<div class="inlinecontent">-<p>That's awesome, I had not heard of git sparse checkouts before. </p>--<p>It does not make sense to tie the log files to the directory of the corresponding files, as then the logs would have to move when the files are moved, which would be a PITA and likely make merging log file changes very complex. Also, of course, multiple files in different locations can point at the same content, which has the same log file. And, to cap it off, git-annex can need to access the log file for a given key without having the slightest idea what file in the repository might point to it, and it would be very expensive to scan the whole repository to find out what that file is in order to lookup the filename of the log file.</p>--<p>The most likely change in git-annex that will make this better is in <a href="./todo/branching.html">this todo item</a> -- but it's unknown how to do it yet.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:32:04 2011</span>-</div>----</div>-<div class="comment" id="comment-f4000340d1c552e6c4a5ecfffdd37f82">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-f4000340d1c552e6c4a5ecfffdd37f82">comment 5</a>--</div>--<div class="inlinecontent">-My estimates were pretty close -- the new bup special remote type took 133 lines of code, and 2 hours to write. A testament to the flexibility of the special remote infrastructure. :)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr  8 16:59:37 2011</span>-</div>----</div>-<div class="comment" id="comment-98eb246163a987ef7b962acc6fc996a2">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-98eb246163a987ef7b962acc6fc996a2">comment 5</a>--</div>--<div class="inlinecontent">-I would also like an git-annex channel. Would be #git-annex@OFTC ok?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Thu Apr 14 07:24:59 2011</span>-</div>----</div>-<div class="comment" id="comment-c5990cc910f939d02c31f924738832c2">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-c5990cc910f939d02c31f924738832c2">comment 6</a>--</div>--<div class="inlinecontent">-<p>I've committed the queue flush improvements, so it will buffer up to 10240 git actions, and then flush the queue.</p>--<p>There may be other memory leaks at scale (besides the two I mentioned earlier), but this seems promising. I'm well into running <code>git annex add</code> on a half million files and it's using 18 mb ram and has flushed the queue several times. This run-will fail due to running out of inodes for the log files, not due to memory. :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 14:09:13 2011</span>-</div>----</div>-<div class="comment" id="comment-500928a61136a4c93253f25ba5d36862">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-500928a61136a4c93253f25ba5d36862">comment 2</a>--</div>--<div class="inlinecontent">-BTW, git-annex unused <em>will</em> have a problem that not all the symlinks are present. It will suggest dropping content belonging to the excluded symlinks.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:33:30 2011</span>-</div>----</div>-<div class="comment" id="comment-e35414f96a49d2c8473c4b110a8c74f3">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-e35414f96a49d2c8473c4b110a8c74f3">comment 1</a>--</div>--<div class="inlinecontent">-<p>While having remotes redistribute introduces some obvious security concerns, I might use it.</p>--<p>As remotes support a cost factor already, you can basically implement bandwidth through that.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr 22 14:27:00 2011</span>-</div>----</div>-<div class="comment" id="comment-ddc0b653ecea101212c786eecb21fadf">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-ddc0b653ecea101212c786eecb21fadf">git annex fetch</a>--</div>--<div class="inlinecontent">-I'm not sure it is worth adding a command for such a small feature, but I would certainly use it: having something like "git annex fetch remote" do "git fetch remote &amp;&amp; git annex copy --from=remote", and "git annex push remote" do "git push remote &amp;&amp; git annex copy --to=remote". And maybe the same for a pull operation?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Sun Jul  3 10:39:41 2011</span>-</div>----</div>-<div class="comment" id="comment-0aead1ba7e280f7494730891e80a906e">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-0aead1ba7e280f7494730891e80a906e">comment 2</a>--</div>--<div class="inlinecontent">-@jimmy <a href="./walkthrough/what_to_do_when_you_lose_a_repository.html">what to do when you lose a repository</a>.. I have not seen a convincing argument that removing the location tracking data entirely serves any purpose--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Jun  1 16:24:33 2011</span>-</div>----</div>-<div class="comment" id="comment-a42bad3fb1866788e6e260bf7cfeb207">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-a42bad3fb1866788e6e260bf7cfeb207">status of other remotes?</a>--</div>--<div class="inlinecontent">-using the location tracking information, it should be possible to show the status of other remotes as well. what about supporting <code>--from=...</code> or <code>--all</code>? (thus, among other things, one could determine if a remote has a complete checkout.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Jun 15 04:39:24 2011</span>-</div>----</div>-<div class="comment" id="comment-0bac447a0fb2f115774d41f91269dcce">--<div class="comment-subject">--<a href="/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.html#comment-0bac447a0fb2f115774d41f91269dcce">comment 1</a>--</div>--<div class="inlinecontent">-See <a href="./bugs/fat_support.html">fat support</a>. A bare git repo will have to be used to avoid symlink problems, at least for now. The other problem is that git-annex key files have colons in their filenames.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar  7 15:13:14 2011</span>-</div>----</div>-<div class="comment" id="comment-9895d8f7d45801234b5400d382444ec9">--<div class="comment-subject">--<a href="/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html#comment-9895d8f7d45801234b5400d382444ec9">comment 1</a>--</div>--<div class="inlinecontent">-Either option should work fine, but git gc --aggressive will probably avoid most of git's seeking.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 13:48:29 2011</span>-</div>----</div>-<div class="comment" id="comment-aa1c17542050206423be24bb899334c2">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-aa1c17542050206423be24bb899334c2">comment 4</a>--</div>--<div class="inlinecontent">-Personally, I would not mind a requirement to keep a local bup repo. I wouldn't want my data to to unncessarily complex setups, anyway. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:45:35 2011</span>-</div>----</div>-<div class="comment" id="comment-ec44ff4c7172f71e0b4db5e68a216302">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-ec44ff4c7172f71e0b4db5e68a216302">comment 3</a>--</div>--<div class="inlinecontent">-<p>It is unfortunatly not possible to do system-dependant hashing, so long as git-annex stores symlinks to the content in git.</p>--<p>It might be possible to start without hashing, and add hashing for new files after a cutoff point. It would add complexity.</p>--<p>I'm currently looking at a 2 character hash directory segment, based on an md5sum of the key, which splits it into 1024 buckets. git uses just 256 buckets for its object directory, but then its objects tend to get packed away. I sorta hope that one level is enough, but guess I could go to 2 levels (objects/ab/cd/key), which would provide 1048576 buckets, probably plenty, as if you are storing more than a million files, you are probably using a modern enough system to have a filesystem that doesn't need hashing.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:13:39 2011</span>-</div>----</div>-<div class="comment" id="comment-3ede79f296a4b24c8485db819624dc9a">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-3ede79f296a4b24c8485db819624dc9a">comment 1</a>--</div>--<div class="inlinecontent">-<p>No matter what you end up doing, I would appreciate a git-annex-announce@ list.</p>--<p>I really like the persistence of ikiwiki, but it's not ideal for quick communication. I would be fine with IRC and/or ML. The advantage of a ML over ikiwiki is that it doesn't seem to be as "wasteful" to mix normal chat with actual problem-solving.  But maybe that's merely my own perception.</p>--<p>Speaking of RSS: I thought I had added a wishlist item to ikiwiki about providing per-subsite RSS feeds. For example there is no (obvious) way to subscribe to changes in http://git-annex.branchable.com/forum/git-annex_communication_channels/ .</p>--<p>FWIW, I resorted to tagging my local clone of git-annex to keep track of what I've read, already.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:48:08 2011</span>-</div>----</div>-<div class="comment" id="comment-0f62c56aa45452f02538f75b546c0a8e">--<div class="comment-subject">--<a href="/forum/wishlist:_define_remotes_that_must_have_all_files.html#comment-0f62c56aa45452f02538f75b546c0a8e">comment 1</a>--</div>--<div class="inlinecontent">-<p>Seems to have a scalability problem, what happens when such a repository becomes full?</p>--<p>Another way to accomplish I think the same thing is to pick the repositories that you would include in such a set, and make all other repositories untrusted. And set numcopies as desired. Then git-annex will never remove files from the set of non-untrusted repositories, and fsck will warn if a file is present on only an untrusted repository.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr 23 12:27:13 2011</span>-</div>----</div>-<div class="comment" id="comment-27644e0279b7cfdfcec0b5bd5b7bde61">--<div class="comment-subject">--<a href="/forum/wishlist:_do_round_robin_downloading_of_data.html#comment-27644e0279b7cfdfcec0b5bd5b7bde61">comment 1</a>--</div>--<div class="inlinecontent">-I dunno about parrallel downloads -- eek! -- but there is at least room for improvement of what "git annex get" does when there are multiple remotes that have a file, and the one it decides to use is not available, or very slow, or whatever.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:39:35 2011</span>-</div>----</div>-<div class="comment" id="comment-2cb9be4ebd26b8e3b5adb55bdd38fab2">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-2cb9be4ebd26b8e3b5adb55bdd38fab2">comment 3</a>--</div>--<div class="inlinecontent">-<p>Another nice thing would be a summary of <em>what</em> is wrong. I.e.</p>--<pre><code>% git fsck-[...]-git-annex: 100 total failed-  50 checksum failed-  50 not enough copies exit-</code></pre>--<p>And the same/similar for all other failure modes.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Mar 27 21:16:21 2011</span>-</div>----</div>-<div class="comment" id="comment-b840f1ea23b60cf78d0e1db0a094bcd7">--<div class="comment-subject">--<a href="/forum/Need_new_build_instructions_for_Debian_stable.html#comment-b840f1ea23b60cf78d0e1db0a094bcd7">comment 2</a>--</div>--<div class="inlinecontent">-<p>Thanks for the update, Joey. I think you forgot to change libghc-missingh-dev to libghc6-missingh-dev for the copy &amp; paste instructions though.</p>--<p>Also, after having checked that I have everything installed I'm still getting this error:</p>--<pre><code>...-[15 of 77] Compiling Annex            ( Annex.hs, Annex.o )--Annex.hs:19:35:-    Module `Control.Monad.State' does not export `state'-make[1]: *** [git-annex] Error 1-make[1]: Leaving directory `/home/gernot/dev/git-annex'-dh_auto_build: make -j1 returned exit code 2-make: *** [binary] Error 2-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=gernot&amp;do=goto">gernot</a>--</span>---&mdash; <span class="date">Tue Apr 26 14:56:44 2011</span>-</div>----</div>-<div class="comment" id="comment-50d9a528b4f6c2f01086b3f285030904">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-50d9a528b4f6c2f01086b3f285030904">comment 3</a>--</div>--<div class="inlinecontent">-Oh, you'll need profiling builds of various haskell libraries to build with profiling support. If that's not easily accomplished, if you could show me the form of the command you're running, and also how git annex unannex fails, that would be helpful for investigating.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 14:02:05 2011</span>-</div>----</div>-<div class="comment" id="comment-4b9d204bcc557942b0a9a4e2a5df9c28">--<div class="comment-subject">--<a href="/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html#comment-4b9d204bcc557942b0a9a4e2a5df9c28">comment 3</a>--</div>--<div class="inlinecontent">-<p>For future reference, git can recover from a corrupted index file with <code>rm .git/index; git reset --mixed</code>.</p>--<p>Of course, you lose any staged changes that were in the old index file, and may need to re-stage some files.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 21:48:57 2011</span>-</div>----</div>-<div class="comment" id="comment-99e2302dcbd23590f9c87dd4e83cf25b">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-99e2302dcbd23590f9c87dd4e83cf25b">comment 5</a>--</div>--<div class="inlinecontent">-I've corrected the missing <code>ANNEX_HASH_*</code> oversight. (It also affected removal, btw.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr 29 14:01:04 2011</span>-</div>----</div>-<div class="comment" id="comment-b3e4eb24a8755f2d7713c9e030004e41">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-b3e4eb24a8755f2d7713c9e030004e41">comment 4</a>--</div>--<div class="inlinecontent">-<p>The .git-annex/ directory is what really needs hashing.</p>--<p>Consider that when git looks for changes in there, it has to scan every file in the directory. With hashing, it should be able to more quickly identify just the subdirectories that contained changed files, by the directory mtimes.</p>--<p>And the real kicker is that when committing there, git has to create a tree object containing every single file, even if only 1 file changed. That will be a lot of extra work; with hashed subdirs it will instead create just 2 or 3 small tree objects leading down to the changed file. (Probably these trees both pack down to similar size pack files, not sure.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 00:06:19 2011</span>-</div>----</div>-<div class="comment" id="comment-3c52816966f0e8f80e69560125ad2341">--<div class="comment-subject">--<a href="/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html#comment-3c52816966f0e8f80e69560125ad2341">comment 4</a>--</div>--<div class="inlinecontent">-Thanks a lot. I tried various howtos around the net, but none of them worked; yours did. (I tried it in one of the copies of the broken repo which I keep around for obvious reasons).--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr  3 05:03:22 2011</span>-</div>----</div>-<div class="comment" id="comment-e0d81326235f93d51a2e4c60da902988">--<div class="comment-subject">--<a href="/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.html#comment-e0d81326235f93d51a2e4c60da902988">comment 3</a>--</div>--<div class="inlinecontent">-On second thought maybe the current behaviour is better than what I am suggesting that the force command should do. I guess it's better to be safe than sorry.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 13:12:35 2011</span>-</div>----</div>-<div class="comment" id="comment-133126826889edc0c4eb8958c63e2385">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-133126826889edc0c4eb8958c63e2385">comment 1</a>--</div>--<div class="inlinecontent">-+1 for this feature, I've been longing for something like this other than rolling my own perl/shell scripts to parse the outputs of "git annex whereis ." to see how many files are on my machine or not.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:23:08 2011</span>-</div>----</div>-<div class="comment" id="comment-57ef93c3e8553502d11ae54795c3e776">--<div class="comment-subject">--<a href="/forum/wishlist:_special_remote_for_sftp_or_rsync.html#comment-57ef93c3e8553502d11ae54795c3e776">comment 3</a>--</div>--<div class="inlinecontent">-Cool!, I just tried adding tahoe-lafs as a remote, and it wasn't too hard.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr 29 06:43:31 2011</span>-</div>----</div>-<div class="comment" id="comment-2007796aa6740cc4577999a12ce2d14b">--<div class="comment-subject">--<a href="/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.html#comment-2007796aa6740cc4577999a12ce2d14b">comment 1</a>--</div>--<div class="inlinecontent">-<p>These are good examples; I think you've convinced me at least for upgrades going forward after v2. I'm not sure we have enough users and outdated git-annex installations to worry about it for v1.</p>--<p>(Hoping such upgrades are rare anyway.. Part of the point of changes made in v2 was to allow lots of changes to be made later w/o needing a v3.)</p>--<p>Update: Upgrades from v1 to v2 will no longer be handled automatically-now.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 17 20:38:51 2011</span>-</div>----</div>-<div class="comment" id="comment-7cd19708aa54f98cc5ddbdebb2881ea1">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-7cd19708aa54f98cc5ddbdebb2881ea1">comment 3</a>--</div>--<div class="inlinecontent">-<p>What a good idea!</p>--<p>150 lines of haskell later, I have this:</p>--<pre>-# git annex status-supported backends: WORM SHA1 SHA256 SHA512 SHA224 SHA384 SHA1E SHA256E SHA512E SHA224E SHA384E URL-supported remote types: git S3 bup directory rsync hook-local annex keys: 32-local annex size: 58 megabytes-total annex keys: 38158-total annex size: 6 terabytes (but 1632 keys have unknown size)-backend usage: -    SHA1: 1789-    WORM: 36369-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon May 16 21:15:10 2011</span>-</div>----</div>-<div class="comment" id="comment-f8a3af9f450d4b18e6f5600159fdb06f">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-f8a3af9f450d4b18e6f5600159fdb06f">comment 6</a>--</div>--<div class="inlinecontent">-<p>Cool, that seems to make things work as expected, here's an updated recipe</p>--<pre>-git config annex.tahoe-store-hook 'tahoe mkdir tahoe:$ANNEX_HASH_1/$ANNEX_HASH_2 && tahoe put $ANNEX_FILE tahoe:$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY'-git config annex.tahoe-retrieve-hook 'tahoe get tahoe:$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY $ANNEX_FILE'-git config annex.tahoe-remove-hook 'tahoe rm tahoe:$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY'-git config annex.tahoe-checkpresent-hook 'tahoe ls tahoe:$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY 2&gt;&1 || echo FAIL'-git annex initremote library type=hook hooktype=tahoe encryption=none-git annex describe 1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a library-</pre>--<p>I just needs some of the output redirected to /dev/null.</p>--<p>(I updated this comment to fix a bug. --<span class="createlink">Joey</span>)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr 29 16:11:08 2011</span>-</div>----</div>-<div class="comment" id="comment-278e83955890c8b2b745287be4b49d98">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-278e83955890c8b2b745287be4b49d98">comment 2</a>--</div>--<div class="inlinecontent">-<p>thanks Joey,</p>--<p>is it possible to run some git annex command that tells me, for a specific directory, which files are available in an other remote? (and which remote, and which filenames?)-I guess I could run that, do my own policy thingie, and run <code>git annex get</code> for the files I want.</p>--<p>For your podcast use case (and some of my use cases) don't you think git [annex] might actually be overkill?  For example your podcasts use case, what value does git annex give over a simple rsync/rm script?-such a script wouldn't even need a data store to store its state, unlike git. it seems simpler and cleaner to me.</p>--<p>for the mpd thing, check http://alip.github.com/mpdcron/ (bad project name, it's a plugin based "event handler")-you should be able to write a simple plugin for mpdcron that does what you want (or even interface with mpd yourself from perl/python/.. to use its idle mode to get events)</p>--<p>Dieter</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Wed Feb 16 17:32:04 2011</span>-</div>----</div>-<div class="comment" id="comment-a5e89958742d529859970cbfda9e5ad0">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-a5e89958742d529859970cbfda9e5ad0">git annex unused</a>--</div>--<div class="inlinecontent">-<p>Before dropping unsused items, sometimes I want to check the content of the files manually.-But currently, from e.g. a sha1 key, I don't know how to find the corresponding file, except with-'find .git/annex/objects -type f -name 'SHA1-s1678--70....', wich is too slow (I'm in the case where "git log --stat -S'KEY'"-won't work, either because it is too slow or it was never commited). By the way,-is it documented somewhere how to determine the 2 (nested) sub-directories in which a given-(by name) object is located?</p>--<p>So I would like 'git-annex unused' be able to give me the list of <em>paths</em> to the unused items.-Also, I would really appreciate a command like 'git annex unused --log NUMBER [NUMBER2...]' which would do for me the suggested command-"git log --stat -S'KEY'", where NUMBER is from the 'git annex unused' output.-Thanks.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 07:55:58 2011</span>-</div>----</div>-<div class="comment" id="comment-452f79b7be790af8b400af6bc9305caa">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-452f79b7be790af8b400af6bc9305caa">comment 2</a>--</div>--<div class="inlinecontent">-FWIW, I wanted to suggest exactly the same thing.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Mar 25 07:23:04 2011</span>-</div>----</div>-<div class="comment" id="comment-67d91e632adcb14c1f40a9bf9309baa1">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-67d91e632adcb14c1f40a9bf9309baa1">comment 2</a>--</div>--<div class="inlinecontent">-<p>This message comes from ghc's runtime memory manager. Apparently your ghc defaults to limiting the stack to 80 mb.-Mine seems to limit it slightly higher -- I have seen haskell programs successfully grow as large as 350 mb, although generally not intentionally. :)</p>--<p>Here's how to adjust the limit at runtime, obviously you'd want a larger number:</p>--<pre>-# git-annex +RTS -K100 -RTS find-Stack space overflow: current size 100 bytes.-Use `+RTS -Ksize -RTS' to increase it.-</pre>--<p>I've tried to avoid git-annex using quantities of memory that scale with the number of files in the repo, and I think in general successfully -- I run it on 32 mb and 128 mb machines, FWIW. There are some tricky cases, and haskell makes it easy to accidentally write code that uses much more memory than would be expected.</p>--<p>One well known case is <code>git annex unused</code>, which <em>has</em> to build a structure of every annexed file. I have been considering using a bloom filter or something to avoid that.</p>--<p>Another possible case is when running a command like <code>git annex add</code>, and passing it a lot of files/directories. Some code tries to preserve the order of your input after passing it through <code>git ls-files</code> (which destroys ordering), and to do so it needs to buffer both the input and the result in ram.</p>--<p>It's possible to build git-annex with memory profiling and generate some quite helpful profiling data. Edit the Makefile and add this to GHCFLAGS: <code>-prof -auto-all -caf-all -fforce-recomp</code> then when running git-annex, add the parameters: <code>+RTS -p -RTS</code> , and look for the git-annex.prof file.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 13:46:03 2011</span>-</div>----</div>-<div class="comment" id="comment-0c337e157ef2c44f63c1773b051f2ee1">--<div class="comment-subject">--<a href="/forum/__34__git_annex_lock__34___very_slow_for_big_repo.html#comment-0c337e157ef2c44f63c1773b051f2ee1">comment 2</a>--</div>--<div class="inlinecontent">-<p>Nice!-So if I understand correctly, 'git reset -- file' was there to discard staged (but not commited) changes made to 'file', before checking out, so that it is equivalent to directly 'git checkout HEAD -- file' ?-I'm curious about the "queueing machinery in git-annex": does it end up calling the one git command with multiple files as arguments? does it correspond to the message "(Recording state in git...)" ?-Thanks!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Tue May 31 17:43:22 2011</span>-</div>----</div>-<div class="comment" id="comment-061ae3f0353bd94bc5f3513c5308c4a0">--<div class="comment-subject">--<a href="/forum/incompatible_versions__63__.html#comment-061ae3f0353bd94bc5f3513c5308c4a0">comment 1</a>--</div>--<div class="inlinecontent">-They are not. See <a href="./upgrades.html">upgrades</a>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jun  7 20:40:54 2011</span>-</div>----</div>-<div class="comment" id="comment-ebb34f33e254095f9d5fed5485292493">--<div class="comment-subject">--<a href="/forum/rsync_over_ssh__63__.html#comment-ebb34f33e254095f9d5fed5485292493">comment 1</a>--</div>--<div class="inlinecontent">-Everything is done over ssh unless both repos are on the same system (or unless you NFS mount a repo)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Mar  6 11:59:37 2011</span>-</div>----</div>-<div class="comment" id="comment-8c90fd84594cd462b3edcb124029fa51">--<div class="comment-subject">--<a href="/forum/Need_new_build_instructions_for_Debian_stable.html#comment-8c90fd84594cd462b3edcb124029fa51">comment 1</a>--</div>--<div class="inlinecontent">-I have updated the instructions.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 26 11:27:49 2011</span>-</div>----</div>-<div class="comment" id="comment-d765c03eb9c3c06d087e198f95ddf898">--<div class="comment-subject">--<a href="/forum/bainstorming:_git_annex_push___38___pull.html#comment-d765c03eb9c3c06d087e198f95ddf898">comment 2</a>--</div>--<div class="inlinecontent">-<p>No-so-subtle sarcasm taken and acknowledged :)</p>--<p>Arguably, git-annex should know about any local limits and not have them implemented via mr from the outside. I guess my concern boils down to having git-annex do the right thing all by itself with minimal user interaction. And while I really do appreciate the flexibility of chaining commands, I am a firm believer in exposing the common use cases as easily as possible.</p>--<p>And yes, I am fully aware that not all annexes are created equal. Point in case, I would never use git annex pull on my laptop, but I would git annex push extensively.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Apr  5 16:52:52 2011</span>-</div>----</div>-<div class="comment" id="comment-7ceca79b1789bf8efa4d284dfe4536d3">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-7ceca79b1789bf8efa4d284dfe4536d3">comment 4</a>--</div>--<div class="inlinecontent">-<p>I've just tried to use the ANNEX_HASH_ variables, example of my configuration</p>--<pre>-    git config annex.tahoe-store-hook 'tahoe mkdir $ANNEX_HASH_1 && tahoe put $ANNEX_FILE tahoe:$ANNEX_HASH_1/$ANNEX_KEY'-    git config annex.tahoe-retrieve-hook 'tahoe get tahoe:$ANNEX_HASH_1/$ANNEX_KEY $ANNEX_FILE'-    git config annex.tahoe-remove-hook 'tahoe rm tahoe:$ANNEX_HASH_1/$ANNEX_KEY'-    git config annex.tahoe-checkpresent-hook 'tahoe ls tahoe:$ANNEX_HASH_1/$ANNEX_KEY 2&gt;&1 || echo FAIL'-    git annex initremote library type=hook hooktype=tahoe encryption=none-    git annex describe 1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a library-</pre>--<p>It's seems to work quite well for me now, I did run across this when I tried to drop a file locally, leaving the file on my remote</p>--<pre>-jtang@x00:/tmp/annex3 $ git annex drop .-drop frink.sh (checking library...) (unsafe) -  Could only verify the existence of 0 out of 1 necessary copies-  Try making some of these repositories available:-    1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a  -- library-  (Use --force to override this check, or adjust annex.numcopies.)-failed-drop t/frink.jar (checking library...) (unsafe) -  Could only verify the existence of 0 out of 1 necessary copies-  Try making some of these repositories available:-    1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a  -- library-  (Use --force to override this check, or adjust annex.numcopies.)-failed-git-annex: 2 failed-1|jtang@x00:/tmp/annex3 $ -</pre>--<p>I do know that the files exist in my library as I have just inserted them, it seemed to work when I didnt have the hashing, it appears that the checkpresent doesn't seem to pass the ANNEX_HASH_* variables (from the limited debugging I did)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr 29 12:17:11 2011</span>-</div>----</div>-<div class="comment" id="comment-74d208343263f8ab3e9d766e203311da">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-74d208343263f8ab3e9d766e203311da">comment 3</a>--</div>--<div class="inlinecontent">-<p>Whups, the comment above got stuck in moderation queue for 27 days. I will try to check that more frequently.</p>--<p>In the meantime, I've implemented "git annex whereis" -- enjoy!</p>--<p>I find keeping my podcasts in the annex useful because it allows me to download individual episodes or poscasts easily when low bandwidth is available (ie, dialup), or over sneakernet. And generally keeps everything organised.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:01:17 2011</span>-</div>----</div>-<div class="comment" id="comment-5a2f8aba164cafa6d18d274f221d5aa0">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-5a2f8aba164cafa6d18d274f221d5aa0">comment 2</a>--</div>--<div class="inlinecontent">-<p>After some thought, perhaps the default fsck output should be at least machine readable and copy and pasteable i.e.</p>--<pre>-$ git annex fsck-Files with errors--    file1-    file2--</pre>--<p>so I can then copy the list of borked files and then just paste it into a for loop in my shell to recover the files. it's just an idea.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Mar 26 06:57:41 2011</span>-</div>----</div>-<div class="comment" id="comment-f3a69fc1e95615f10209cf1d4fe1efc5">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-f3a69fc1e95615f10209cf1d4fe1efc5">comment 3</a>--</div>--<div class="inlinecontent">-<p>Probably more like 150 lines of haskell. Maybe just 50 lines if the bup repository is required to be on the same computer as the git-annex repository.</p>--<p>Since I do have some repositories where I'd appreciate this level of assurance that data not be lost, it's mostly a matter of me finding a free day.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:05:13 2011</span>-</div>----</div>-<div class="comment" id="comment-fa4a178cb30a86e7bca3814fbb040946">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-fa4a178cb30a86e7bca3814fbb040946">comment 3</a>--</div>--<div class="inlinecontent">-Push access to the non-code bits of git-annex' ikiwiki would be very welcome indeed. Given the choice, I would rather edit everything in Vim than in a browser. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:47:23 2011</span>-</div>----</div>-<div class="comment" id="comment-fd4fd2223d2f38310be477c642a05163">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-fd4fd2223d2f38310be477c642a05163">comment 3</a>--</div>--<div class="inlinecontent">-<p>Hmm, so it seems there is almost a way to do this already.</p>--<p>I think the one thing that isn't currently possible is to have 'plain' ssh remotes.. basically something just like the directory remote, but able to take a ssh user@host/path url.  something like sshfs could be used to fake this, but for things like fsck you would want to do the sha1 calculations on the remote host.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo">Justin</a>-</span>---&mdash; <span class="date">Sat Apr 23 13:54:42 2011</span>-</div>----</div>-<div class="comment" id="comment-771167f73b6bcc07e751954f03bb9d7f">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-771167f73b6bcc07e751954f03bb9d7f">comment 2</a>--</div>--<div class="inlinecontent">-<p>i'll comment on each of the points separately, well aware that even a single little leftover issue can show that my plan is faulty:</p>--<ul>-<li>force removal: well, yes -- but the file that is currently force-removed on the laptop could just as well be the last of its kind itself. i see the problem, but am not sure if it's fatal (after all, if we rely on out-of-band knowledge when forcing something, we could just as well ask a little more)</li>-<li>non-bare repos: pushing is tricky with non-bare repos now just as well; a post-commit hook could auto-accept counter changes. (but pushing causes problems with counters anyway, doesn't it?)</li>-<li>merging: i'd have them auto-merge. git-annex will have to check the validity of the current state anyway, and a situation in which a counter-decrementing commit is not a fast-forward one would be reverted in the next step (or upon discovery, in case the next step never took place).</li>-<li>reverting: my wording was bad as "revert" is already taken in git-lingo. the correct term for what i was thinking of is "reset". (as the commit could not be pushed, it would be rolled back completely).-<ul>-<li>we might have to resort to reverting, though, if the commit has already been pused to a first server of many.</li>-</ul></li>-<li><a href="./todo/hidden_files.html">hidden files</a>: yes, this solves pre-removal dropping :-)</li>-<li>round trips: it's not the number of servers, it's the number of files (up to 30k in my case). it seems to me that an individual request was made for every single file i wanted to drop (that would be N*M roundtrips for N affected servers and M files, and N roundtrips with git managed numcopies)</li>-</ul>--<p>all together, it seems to be a bit more complicated than i imagined, although not completely impossible. a combination of <a href="./todo/hidden_files.html">hidden files</a> and maybe a simpler reduction of the number of requests might though achieve the important goals as well.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Feb 23 12:43:59 2011</span>-</div>----</div>-<div class="comment" id="comment-e8885e49e8d321df6ddd0feff08ce43d">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-e8885e49e8d321df6ddd0feff08ce43d">comment 2</a>--</div>--<div class="inlinecontent">-<p>Besides the cost values, annex.diskreserve was recently added. (But is not available for special remotes.)</p>--<p>I have held off on adding high-level management stuff like this to git-annex, as it's hard to make it generic enough to cover use cases.</p>--<p>A low-level way to accomplish this would be to have a way for <code>git annex get</code> and/or <code>copy</code> to skip files when <code>numcopies</code> is already satisfied. Then cron jobs could be used.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr 23 12:22:07 2011</span>-</div>----</div>-<div class="comment" id="comment-44a016e158c6c38254b879ff6657b347">--<div class="comment-subject">--<a href="/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.html#comment-44a016e158c6c38254b879ff6657b347">comment 2</a>--</div>--<div class="inlinecontent">-<p>I'll give it a try as soon as I get rid of this:</p>--<pre><code>% git annex fsck-</code></pre>--<p>fatal: index file smaller than expected-fatal: index file smaller than expected-    % git status-fatal: index file smaller than expected-    %    </p>--<p>And no, I am not sure where that is coming from all of a sudden... (it might have to do with a hard lockup of the whole system due to a faulty hdd I tested, but I didn't do anything to it for ages before that lock-up. So meh. Also, this is prolly off topic in here)</p>--<p>Richard</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat Apr  2 17:34:24 2011</span>-</div>----</div>-<div class="comment" id="comment-30d0bb4af4f1e2129fb021744eed6812">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-30d0bb4af4f1e2129fb021744eed6812">git annex unused</a>--</div>--<div class="inlinecontent">-ps: concerning the command 'find .git/annex/objects -type f -name 'SHA1-s1678--70....' from my previous comment, it is "significantly" faster to search for the containing directory which have the same name: 'find .git/annex/objects -maxdepth 2 -mindepth 2 -type d -name 'SHA1-s1678--70....'. I am just curious: what is the need to have each file object in its own directory, itself nested under two more sub-directories?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 15:51:49 2011</span>-</div>----</div>-<div class="comment" id="comment-8a052cfa0e22ea3aafcc0ff9e4ecf373">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-8a052cfa0e22ea3aafcc0ff9e4ecf373">comment 1</a>--</div>--<div class="inlinecontent">-<p>Indeed, see <a href="./todo/add_a_git_backend.html">add a git backend</a>, where you and I have already discussed this idea. :)</p>--<p>With the new support for special remotes, which will be used by S3, it would be possible to make such a git repo, using bup, be a special remote. I think it would be pretty easy to implement now. Not a priority for me though.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 28 12:01:30 2011</span>-</div>----</div>-<div class="comment" id="comment-b500bf07cb6158f7b56a3166accf253a">--<div class="comment-subject">--<a href="/forum/Can_I_store_normal_files_in_the_git-annex_git_repository__63__.html#comment-b500bf07cb6158f7b56a3166accf253a">Solved</a>--</div>--<div class="inlinecontent">-I got my answer on #vcs-home: Yes, git-annex and git get along fine.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://peter-simons.myopenid.com/">peter-simons [myopenid.com]</a>-</span>---&mdash; <span class="date">Wed Jul 13 12:21:25 2011</span>-</div>----</div>-<div class="comment" id="comment-24b2103836e8fadb4e62065da317ff7e">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-24b2103836e8fadb4e62065da317ff7e">comment 5</a>--</div>--<div class="inlinecontent">-<p>I think what is happening with "git annex unannex" is that "git annex add" crashes before it can "git add" the symlinks. unannex only looks at files that "git ls-files" shows, and so files that are not added to git are not seen. So, this can be recovered from by looking at git status and manually adding the symlinks to git, and then unannex.</p>--<p>That also suggests that "git annex add ." has done something before crashing. That's consistent with you passing it &lt; 2 parameters; it's not just running out of memory trying to expand and preserve order of its parameters (like it might if you ran "git annex add experiment-1/ experiment-2/")</p>--<p>I'm pretty sure I know where the space leak is now. git-annex builds up a queue of git commands, so that it can run git a minimum number of times. Currently, this queue is only flushed at the end. I had been meaning to work on having it flush the queue periodically to avoid it growing without bounds, and I will prioritize doing that.</p>--<p>(The only other thing that "git annex add" does is record location log information.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:41:00 2011</span>-</div>----</div>-<div class="comment" id="comment-f0d13e15883be73d13a9e233b60c6f69">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.html#comment-f0d13e15883be73d13a9e233b60c6f69">comment 2</a>--</div>--<div class="inlinecontent">-<p>In my case, the remotes are the same, but adding a new option could make sense.</p>--<p>And while I can tell mr what to do explicitly, I would prefer if it did the right thing all by itself. Having to change configs in two separate places is less than ideal.</p>--<p>I am not sure what you mean by <code>git annex push</code> as that does not exist. Did you mean copy?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Apr  4 16:45:30 2011</span>-</div>----</div>-<div class="comment" id="comment-1f49d81d31e7698bf3167dfa28ebe29e">--<div class="comment-subject">--<a href="/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.html#comment-1f49d81d31e7698bf3167dfa28ebe29e">comment 1</a>--</div>--<div class="inlinecontent">-<p>How remote is REMOTE? If it's a directory on the same computer, then git-annex copy --to is actually quickly checking that each file is present on the remote, and when it is, skipping copying it again.</p>--<p>If the remote is ssh, git-annex copy talks to the remote to see if it has the file. This makes copy --to slow, as Rich <a href="./forum/batch_check_on_remote_when_using_copy.html">complained before</a>. :)</p>--<p>So, copy --to does not trust location tracking information (unless --fast is specified), which means that it should be doing exactly what you want it to do in your situation -- transferring every file that is really not present in the destination repository already.</p>--<p>Neither does copy --from, by the way. It always checks if each file is present in the current repository's annex before trying to download it.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:49:01 2011</span>-</div>----</div>-<div class="comment" id="comment-01547ba96a027a2baf94762dbb68a84f">--<div class="comment-subject">--<a href="/forum/Wishlist:_Is_it_possible_to___34__unlock__34___files_without_copying_the_file_data__63__.html#comment-01547ba96a027a2baf94762dbb68a84f">comment 1</a>--</div>--<div class="inlinecontent">-<p>The rsync or directory special remotes would work if the media player uses metadata in the files, rather than directory locations.</p>--<p>Beyond that there is the <a href="./todo/smudge.html">smudge</a> idea, which is hoped to be supported sometime.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Jul  7 11:27:28 2011</span>-</div>----</div>-<div class="comment" id="comment-4635262a88d4721c6dafb3ffe4384146">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-4635262a88d4721c6dafb3ffe4384146">comment 1</a>--</div>--<div class="inlinecontent">-<p>Heh, cool, I was thinking throwing about 28million files at git-annex. Let me know how it goes, I suspect you have just run into a default limits OSX problem.</p>--<p>You probably just need to up some system limits (you will need to read the error messages that first appear) then do something like</p>--<pre>-# this is really for the run time, you can set these settings in /etc/sysctl.conf-sudo sysctl -w kern.maxproc=2048-sudo sysctl -w kern.maxprocperuid=1024--# tell launchd about having higher limits-sudo echo "limit maxfiles 1024 unlimited" &gt;&gt; /etc/launchd.conf-sudo echo "limit maxproc 1024 2048" &gt;&gt; /etc/launchd.conf-</pre>--<p>There are other system limits which you can check by doing a "ulimit -a", once you make the above changes, you will need to reboot to make the changes take affect. I am unsure if the above will help as it is an example of what I did on 10.6.6 a few months ago to fix some forking issues. From the error you got you will probably need to increase the stacksize to something bigger or even make it unlimited if you feel lucky, the default stacksize on OSX is 8192, try making it say 10times that size first and see what happens.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Apr  5 03:27:46 2011</span>-</div>----</div>-<div class="comment" id="comment-4b443eed7653385f5746bdaa0db58498">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-4b443eed7653385f5746bdaa0db58498">comment 1</a>--</div>--<div class="inlinecontent">-<p>My experience is that modern filesystems are not going to have many issues with tens to hundreds of thousands of items in the directory. However, if a transition does happen for FAT support I will consider adding hashing. Although getting a good balanced hash in general without, say, checksumming the filename and taking part of the checksum, is difficult. </p>--<p>I prefer to keep all the metadata in the filename, as this eases recovery if the files end up in lost+found. So while "SHA/" is a nice workaround for the FAT colon problem, I'll be doing something else. (What I'm not sure yet.)</p>--<p>There is no point in creating unused hash directories on initialization. If anything, with a bad filesystem that just guarantees worst performance from the beginning..</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 14 12:12:49 2011</span>-</div>----</div>-<div class="comment" id="comment-7038cc3147ed0670b823fea42c0282d2">--<div class="comment-subject">--<a href="/forum/migrate_existing_git_repository_to_git-annex.html#comment-7038cc3147ed0670b823fea42c0282d2">comment 1</a>--</div>--<div class="inlinecontent">-<p>I don't know how to approach this yet, but I support the idea -- it would be great if there was a tool that could punch files out of git history and put them in the annex. (Of course with typical git history rewriting caveats.)</p>--<p>Sounds like it might be enough to add a switch to git-annex that overrides where it considers the top of the git repository to be? </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Feb 25 01:16:48 2011</span>-</div>----</div>-<div class="comment" id="comment-81c27bfefe16538939c7ef86c099e724">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-81c27bfefe16538939c7ef86c099e724">comment 1</a>--</div>--<div class="inlinecontent">-<p>--to and --from seem to have different semantics than --source and --destination. Subtle, but still different.</p>--<p>That being said, I am not sure --from and --to are needed at all. Calling the local repo . and all remotes by their name, they are arguably redundant and removing them would make the syntax a lot prettier; mv and cp don't need them, either.</p>--<p>I am not sure changing syntax at this point is considered good style though personally, I wouldn't mind adapting and would actually prefer it over using --to and --from.</p>--<p>-v and -q would be nice.</p>--<p>Richard</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr 17 19:46:37 2011</span>-</div>----</div>-<div class="comment" id="comment-a56c621fa1b2629636d22a79b4ccd49a">--<div class="comment-subject">--<a href="/forum/rsync_over_ssh__63__.html#comment-a56c621fa1b2629636d22a79b4ccd49a">comment 2</a>--</div>--<div class="inlinecontent">-Great! This was the only thing about git-annex which could have kept me from using it. --Michael--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://m-f-k.myopenid.com/">m-f-k [myopenid.com]</a>-</span>---&mdash; <span class="date">Sun Mar  6 12:33:19 2011</span>-</div>----</div>-<div class="comment" id="comment-be2b3abdc7d19fd24101ae1b34c1344e">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-be2b3abdc7d19fd24101ae1b34c1344e">comment 3</a>--</div>--<div class="inlinecontent">-So perhaps checking if git-status (or similar) complains about missing files is a possible solution for this?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:31:03 2011</span>-</div>----</div>-<div class="comment" id="comment-35a76359402ff26352260120783b9dfe">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-35a76359402ff26352260120783b9dfe">comment 4</a>--</div>--<div class="inlinecontent">-<p>And something else i've done is, that i symlinked the video/ directory from the media annex to the normal raid annex</p>--<pre><code>ln -s ~/media/annex/video ~/annex-</code></pre>--<p>And it's working out great.</p>--<pre><code>~annex &#036; git annex whereis video/series/episode1.avi-whereis video/series/episode1.avi(1 copy)-        f210b45a-60d3-11e0-b593-3318d96f2520  -- Trantor - Media-ok-</code></pre>--<p>I really like this, perhaps it is a good idea to store all log files in every repo, but maybe there is a possibilitiy to to pack multiple log files into one single file, where not only the time, the present bit and the annex-repository is stored, but also the file key. I don't know if this format would also be merged correctly by the union merge driver.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:54:37 2011</span>-</div>----</div>-<div class="comment" id="comment-942e2d9e6d37409e10c62948be3557de">--<div class="comment-subject">--<a href="/forum/wishlist:_special_remote_for_sftp_or_rsync.html#comment-942e2d9e6d37409e10c62948be3557de">comment 2</a>--</div>--<div class="inlinecontent">-Ask and ye shalle receive with an Abbot on top: <a href="./special_remotes/hook.html">hook</a>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr 28 17:22:03 2011</span>-</div>----</div>-<div class="comment" id="comment-5614c95c423a0afcd0eee74310a9d7b8">--<div class="comment-subject">--<a href="/forum/bainstorming:_git_annex_push___38___pull.html#comment-5614c95c423a0afcd0eee74310a9d7b8">comment 1</a>--</div>--<div class="inlinecontent">-<p>Maybe, otoh, part of the point of git-annex is that the data may be too large to pull down all of it.</p>--<p>I find mr useful as a policy layer over top of git-annex, so "mr update" can pull down appropriate quantities of data from-appropriate locations.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 14:05:00 2011</span>-</div>----</div>-<div class="comment" id="comment-f1173396b59e5275a52bfb796b49c0eb">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-f1173396b59e5275a52bfb796b49c0eb">comment 3</a>--</div>--<div class="inlinecontent">-Good point. scp fixes this by using a colon, but as colons aren't needed in git-annex remotes' names... -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Apr 20 17:28:06 2011</span>-</div>----</div>-<div class="comment" id="comment-4943ec11d1517bcfd660fd1896129fff">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-4943ec11d1517bcfd660fd1896129fff">comment 2</a>--</div>--<div class="inlinecontent">-<p>On the plus side, the past me wanted exactly what I had in mind.</p>--<p>On the meh side, I really forgot about this conversation :/</p>--<p>When you say this todo is not a priority, does that mean there's no ETA at all and that it will most likely sleep for a long time? Or the almost usual "what the heck, I will just wizard it up in two lines of haskell"?</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 13:47:38 2011</span>-</div>----</div>-<div class="comment" id="comment-4ddc5f9e4c3ea86593aa0ee22e51d490">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-4ddc5f9e4c3ea86593aa0ee22e51d490">comment 1</a>--</div>--<div class="inlinecontent">-<p>I see the following problems with this scheme:</p>--<ul>-<li><p>Disallows removal of files when disconnected. It's currently safe to force that, as long as-git-annex tells you enough other repos are belived to have the file. Just as long as you-only force on one machine (say your laptop). With your scheme, if you drop a file while -disconnected, any other host could see that the counter is still at N, because your-laptop had the file last time it was online, and can decide to drop the file, and lose the last -version.</p></li>-<li><p>pushing a changed counter commit to other repos is tricky, because they're not bare, and -the network topology to get the commit pulled into the other repo could vary.</p></li>-<li><p>Merging counter files issues.  If the counter file doesn't automerge, two repos dropping the same file will conflict. But, if it does automerge, it breaks the counter conflict detection.</p></li>-<li><p>Needing to revert commits is going to be annoying. An actual git revert-could probably not reliably be done. It's need to construct a revert-and commit it as a new commit. And then try to push that to remotes, and-what if <em>that</em> push conflicts?</p></li>-<li><p>I do like the pre-removal dropping somewhat as an alternative to-trust checking. I think that can be done with current git-annex though,-just remove the files from the location log, but keep them in-annex.-Dropping a file only looks at repos that the location log says have a-file; so other repos can have retained a copy of a file secretly like-this, and can safely remove it at any time. I'd need to look into this a bit more to be 100% sure it's safe, but have started <a href="./todo/hidden_files.html">hidden files</a>. </p></li>-<li><p>I don't see any reduced round trips. It still has to contact N other-repos on drop. Now, rather than checking that they have a file, it needs-to push a change to them.</p></li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb 22 14:44:28 2011</span>-</div>----</div>-<div class="comment" id="comment-b9856cec0ecba0efd0ac6a7ecb5eae74">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-b9856cec0ecba0efd0ac6a7ecb5eae74">comment 2</a>--</div>--<div class="inlinecontent">-I think the forums/website currently is sufficient, I do at times wish there was a mailing list or anonymous git push to the wiki as I find editing posts through the web browser is some times tedious (the lack of !fmt or alt-q bugs me at times ;) ). The main advantage of keeping stuff on the site/forum is that everything gets saved and passed on to anyone who checks out the git repo of the code base.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 14:35:50 2011</span>-</div>----</div>-<div class="comment" id="comment-8172bdd0bc6e4da58764811260d32d74">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-8172bdd0bc6e4da58764811260d32d74">comment 3</a>--</div>--<div class="inlinecontent">-<p>Sorry for all the followups, but I see now that if you unannex, then add the file to git normally, and commit, the hook <em>does</em> misbehave.</p>--<p>This seems to be a bug. git-annex's hook thinks that you have used git annex unlock (or "git annex edit") on the file and are now committing a changed version, and the right thing to do there is to add the new content to the annex and update the symlink accordingly. I'll track this bug over at <a href="./bugs/unannex_vs_unlock_hook_confusion.html">unannex vs unlock hook confusion</a>.</p>--<p>So, committing after unannex, and before checking the file into git in the-usual way, is a workaround. But only if you do a "git commit" to commit-staged changes.</p>--<p>Anyway, this confusing point is fixed in git now!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:46:00 2011</span>-</div>----</div>-<div class="comment" id="comment-42e16c83b98abce0ffbd926538f7749c">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-42e16c83b98abce0ffbd926538f7749c">whereis labels</a>--</div>--<div class="inlinecontent">-<p>You should be able to fix the missing label by editing .git-annex/uuid.log and adding</p>--<pre><code>1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a tahoe-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo">Justin</a>-</span>---&mdash; <span class="date">Fri Apr 29 09:08:35 2011</span>-</div>----</div>-<div class="comment" id="comment-8df4179dbb932ffda4996bbecd84b69d">--<div class="comment-subject">--<a href="/forum/migrate_existing_git_repository_to_git-annex.html#comment-8df4179dbb932ffda4996bbecd84b69d">comment 2</a>--</div>--<div class="inlinecontent">-<p>My current workflow looks like this (I'm still experimenting):</p>--<h3>Create backup clone for migration</h3>--<pre><code>git clone original migrate-cd migrate-for branch in &#036;(git branch -a | grep remotes/origin | grep -v HEAD); do git checkout --track &#036;branch; done-</code></pre>--<h3>Inject git annex initialization at repository base</h3>--<pre><code>git symbolic-ref HEAD refs/heads/newroot-git rm --cached *.rpm-git clean -f -d-git annex init master-git cherry-pick &#036;(git rev-list --reverse master | head -1)-git rebase --onto newroot newroot master-git rebase master mybranch # how to automate this for all branches?-git branch -d newroot-</code></pre>--<h3>Start migration with tree filter</h3>--<pre><code>echo \*.rpm annex.backend=SHA1 &gt; .git/info/attributes-MYWORKDIR=&#036;(pwd) git filter-branch --tree-filter ' \-    if [ ! -d .git-annex ]; then \-        mkdir .git-annex; \-        cp &#036;{MYWORKDIR}/.git-annex/uuid.log .git-annex/; \-        cp &#036;{MYWORKDIR}/.gitattributes .; \-    fi-    for rpm in &#036;(git ls-files | grep "\.rpm&#036;"); do \-        echo; \-        git annex add &#036;rpm; \-        annexdest=&#036;(readlink &#036;rpm); \-        if [ -e .git-annex/&#036;(basename &#036;annexdest).log ]; then \-            echo "FOUND &#036;(basename &#036;annexdest).log"; \-        else \-            echo "COPY &#036;(basename &#036;annexdest).log"; \-            cp &#036;{MYWORKDIR}/.git-annex/&#036;(basename &#036;annexdest).log .git-annex/; \-        fi; \-        ln -sf &#036;{annexdest#../../} &#036;rpm; \-    done; \-    git reset HEAD .git-rewrite; \-    : \-    ' -- &#036;(git branch | cut -c 3-)-rm -rf .temp-git reset --hard-</code></pre>--<p>There are still some drawbacks:</p>--<ul>-<li>git history shows that git annex log files are modified with each checkin</li>-<li>branches have to be rebased manually before starting migration</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=tyger&amp;do=goto">tyger</a>--</span>---&mdash; <span class="date">Tue Mar  1 10:07:50 2011</span>-</div>----</div>-<div class="comment" id="comment-d75f951efcc458813d7a7c8ac15c7c52">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-d75f951efcc458813d7a7c8ac15c7c52">comment 2</a>--</div>--<div class="inlinecontent">-<p>Let's see..</p>--<ul>-<li><p>-v is already an alias for --verbose</p></li>-<li><p>I don't find --source and --destination as easy to type or as clear as --from or --to.</p></li>-<li><p>-F is fast, so it cannot be used for --force. And I have no desire to make it easy to mistype a short option and enable --force; it can lose data. </p></li>-</ul>--<p>@richard while it would be possible to support some syntax like "git annex copy . remote"; what is it supposed to do if there are local files named foo and bar, and a remotes named foo and bar? Does "git annex copy foo bar" copy file foo to remote bar, or file bar from remote foo? I chose to use --from/--to to specify remotes independant of files to avoid such-ambiguity, which plain old <code>cp</code> doesn't have since it's operating entirely on filesystem objects, not both filesystem objects and abstract remotes.</p>--<p>Seems like nothing to do here. <span class="createlink">done</span> --<span class="createlink">Joey</span></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 19 16:13:10 2011</span>-</div>----</div>-<div class="comment" id="comment-94583dc519904a1c6019ec02fdac4a02">--<div class="comment-subject">--<a href="/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html#comment-94583dc519904a1c6019ec02fdac4a02">comment 8</a>--</div>--<div class="inlinecontent">-<p>@joey thanks for the update in the previous comment, I had forgotten about updating it.</p>--<p>@zooko it's working okay for me right now, since I'm only putting fairly big blogs on stuff on to it and only things that I <em>really</em> care about. On the performance side, if it ran faster then it would be nicer :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat May 14 06:02:26 2011</span>-</div>----</div>-<div class="comment" id="comment-f79bfd53ca121843b27f7bda11ee79a9">--<div class="comment-subject">--<a href="/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.html#comment-f79bfd53ca121843b27f7bda11ee79a9">comment 2</a>--</div>--<div class="inlinecontent">-<p>Remote as in "another physical machine". I assumed that</p>--<pre><code>git annex copy --force --to REMOTE .-</code></pre>--<p>would have not trusted the contents in the current directory (or the remote that is being copied to) and then just go off and re-download/upload all the files and overwrite what is already there. I expected the combination of <em>--force</em> and copy <em>--to</em> that it would not bother to check if the files are there or not and just copy it regardless of the outcome.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sun Apr  3 12:59:47 2011</span>-</div>----</div>-<div class="comment" id="comment-488ff87cb654867d24b402f1d796b030">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-488ff87cb654867d24b402f1d796b030">format, respect working directory</a>--</div>--<div class="inlinecontent">-<p>we could include the information about the current directory as well, if the command is not issued in the local git root directory. to avoid large numbers of similar lines, that could look like this:</p>--<pre><code>Estimated annex size: B MiB (of C MiB; [B/C]%)-Estimated annex size in &#036;PWD: B' MiB (of C' MiB; [B'/C']%)-</code></pre>--<p>with the percentages being replaced with "complete" if really all files are present (and not just many enough for the value to be rounded to 100%).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Tue Apr 26 08:31:02 2011</span>-</div>----</div>-<div class="comment" id="comment-4d58328913eaf851ee19ecc863cab82b">--<div class="comment-subject">--<a href="/forum/__34__git_annex_lock__34___very_slow_for_big_repo.html#comment-4d58328913eaf851ee19ecc863cab82b">comment 3</a>--</div>--<div class="inlinecontent">-@Rafaël , you're correct on all counts.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue May 31 17:54:23 2011</span>-</div>----</div>-<div class="comment" id="comment-f83e5e2267d73ad5d07efe522bf002c6">--<div class="comment-subject">--<a href="/forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.html#comment-f83e5e2267d73ad5d07efe522bf002c6">filtering based on git-commits</a>--</div>--<div class="inlinecontent">-<p>additional filter criteria could come from the git history:</p>--<ul>-<li><code>git annex get --touched-in HEAD~5..</code> to fetch what has recently been worked on</li>-<li><code>git annex get --touched-by chrysn --touched-in version-1.0..HEAD</code> to fetch what i've been workin on recently (based on regexp or substring match in author; git experts could probably craft much more meaningful expressions)</li>-</ul>--<p>these options could also apply to <code>git annex find</code> -- actually, looking at the normal file system tools for such tasks, that might even be sufficient (think <code>git annex find --numcopies-gt 3 --present-on lanserver1 --drop</code> like <code>find -iname '*foo*' -delete</code></p>--<p>(i was about to open a new forum discussion for commit-based getting, but this is close enough to be usefully joint in a discussion)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Thu Jun 23 09:56:35 2011</span>-</div>----</div>-<div class="comment" id="comment-3b0d46115206132c4d44d378dbb86ed6">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-3b0d46115206132c4d44d378dbb86ed6">comment 5</a>--</div>--<div class="inlinecontent">-<p>If you can't segment the names retroactively, it's better to start with segmenting, imo.</p>--<p>As subdirectories are cheap, going with ab/cd/rest or even ab/cd/ef/rest by default wouldn't hurt.</p>--<p>Your point about git not needing to create as many tree objects is a kicker indeed. If I were you, I would default to segmentation.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:47:17 2011</span>-</div>----</div>-<div class="comment" id="comment-c4f41108e50cee329f68b820de20a6a2">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-c4f41108e50cee329f68b820de20a6a2">anonymous git push</a>--</div>--<div class="inlinecontent">-<p>@Jimmy mentioned anonymous git push -- that is now enabled for this wiki. Enjoy!</p>--<p>I may try to spend more time on #vcs-home -- or I can be summoned there from my other lurking places on irc, I guess.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu May 19 15:21:51 2011</span>-</div>----</div>-<div class="comment" id="comment-66f69be9caa5f0196848b579f9273f29">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-66f69be9caa5f0196848b579f9273f29">comment 2</a>--</div>--<div class="inlinecontent">-<p>And following on to my transcript, you can then add the file to git in the regular git way, and it works fine:</p>--<pre>-joey@gnu:~/tmp/demo&gt;git add file-joey@gnu:~/tmp/demo&gt;git commit-[master 225ffc0] added as regular git file, not in annex- 1 files changed, 1 insertions(+), 0 deletions(-)- create mode 100644 file-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git log file-commit 225ffc048f5af7c0466b3b1fe549a6d5e9a9e9fe-Author: Joey Hess -Date:   Tue Feb 1 20:43:13 2011 -0400--    added as regular git file, not in annex--commit 78a09cc791b875c3b859ca9401e5b6472bf19d08-Author: Joey Hess -Date:   Tue Feb 1 20:38:30 2011 -0400--    unannex--commit 64cf267734adae05c020d9fd4d5a7ff7c64390db-Author: Joey Hess -Date:   Tue Feb 1 20:38:18 2011 -0400--    add-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:41:24 2011</span>-</div>----</div>-<div class="comment" id="comment-a6171b5ea978f6b249634acbe5b42fb9">--<div class="comment-subject">--<a href="/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.html#comment-a6171b5ea978f6b249634acbe5b42fb9">comment 2</a>--</div>--<div class="inlinecontent">-Now it's fully supported, so long as you put a bare git repo on your key.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Mar 19 11:37:22 2011</span>-</div>----</div>-<div class="comment" id="comment-a88903d99c6b59750acd732d93d26eae">--<div class="comment-subject">--<a href="/forum/migrate_existing_git_repository_to_git-annex.html#comment-a88903d99c6b59750acd732d93d26eae">comment 3</a>--</div>--<div class="inlinecontent">-<blockquote>-  <p>Sounds like it might be enough to add a switch to git-annex that overrides where it considers the top of the git repository to be?</p>-</blockquote>--<p>It should sufficient to honor GIT_DIR/GIT_WORK_TREE/GIT_INDEX_FILE environment variables. git filter-branch sets GIT_WORK_TREE to ., but this can be mitigated by starting the filter script with 'GIT_WORK_TREE=$(pwd $GIT_WORK_TREE)'. E.g. GIT_DIR=/home/tyger/repo/.git, GIT_WORK_TREE=/home/tyger/repo/.git-rewrite/t, then git annex should be able to compute the correct relative path or maybe use absolute pathes in symlinks.</p>--<p>Another problem I observed is that git annex add automatically commits the symlink; this behaviour doesn't work well with filter-tree. git annex commits the wrong path (.git-rewrite/t/LINK instead of LINK). Also filter-tree doesn't expect that the filter script commmits anything; new files in the temporary work tree will be committed by filter-tree on each iteration of the filter script (missing files will be removed).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=tyger&amp;do=goto">tyger</a>--</span>---&mdash; <span class="date">Wed Mar  2 04:15:37 2011</span>-</div>----</div>-<div class="comment" id="comment-05141f213ee7137c9213ee52e16cd838">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-05141f213ee7137c9213ee52e16cd838">comment 6</a>--</div>--<div class="inlinecontent">-We seem to be using #vcs-home @ OFTC for now. madduck is fine with it and joeyh pokes his head in there, as well. I just added a CIA bot to #vcs-home and this comment is a test if pushing works. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr 15 15:32:08 2011</span>-</div>----</div>-<div class="comment" id="comment-655990cf841ceb3d862d67b4e195838a">--<div class="comment-subject">--<a href="/forum/Need_new_build_instructions_for_Debian_stable.html#comment-655990cf841ceb3d862d67b4e195838a">comment 3</a>--</div>--<div class="inlinecontent">-Both problems fixed.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 26 19:40:33 2011</span>-</div>----</div>-<div class="comment" id="comment-c0e563fc39e7f3fe527af0b0c8454500">--<div class="comment-subject">--<a href="/forum/advantages_of_SHA__42___over_WORM.html#comment-c0e563fc39e7f3fe527af0b0c8454500">comment 1</a>--</div>--<div class="inlinecontent">-You're right -- as long as nothing changes a file without letting the modification time update, editing WORM files is safe.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Aug 29 12:10:38 2011</span>-</div>----</div>-<div class="comment" id="comment-eeeb833ada98804a25afc7e7e71257ac">--<div class="comment-subject">--<a href="/forum/version_3_upgrade.html#comment-eeeb833ada98804a25afc7e7e71257ac">comment 1</a>--</div>--<div class="inlinecontent">-<p>It's ok that <code>git pull</code> does not merge the git-annex branch. You can merge it with <code>git annex merge</code>, or it will be done-automatically when you use other git-annex commands.</p>--<p>If you use <code>git pull</code> and <code>git push</code> without any options, the defaults will make git pull and push the git-annex branch automatically.</p>--<p>But if you're in the habit of doing <code>git push origin master</code>, that won't cause the git-annex branch to be pushed (use <code>git push origin git-annex</code> to manually push it then). Similarly, <code>git pull origin master</code> won't pull it. And also, the <code>remote.origin.fetch</code> setting in <code>.git/config</code> can be modified in ways that make <code>git pull</code> not automatically pull the git-annex branch. So those are the things to avoid after upgrade to v3, basically.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Aug 16 21:33:08 2011</span>-</div>----</div>-<div class="comment" id="comment-5c30b83de6b8ab3af3611955249934d3">--<div class="comment-subject">--<a href="/forum/Wishlist:_Is_it_possible_to___34__unlock__34___files_without_copying_the_file_data__63__.html#comment-5c30b83de6b8ab3af3611955249934d3">Solution</a>--</div>--<div class="inlinecontent">-<p>Yes, it can read id3-tags and guess titles from movie filenames but it sometimes gets confused by the filename metadata provided by the WORM-backend.</p>--<p>I think I have a good enough solution to this problem. It's not efficient when it comes to renames but handles adding and deletion just fine</p>--<pre><code>rsync -vaL --delete source dest-</code></pre>--<p>The -L flag looks at symbolic links and copies the actual data they are pointing to. Of course "source" must have all data locally for this to work.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmL8pteP2jbYJUn1M3CbeLDvz2SWAA1wtg">Kristian</a>-</span>---&mdash; <span class="date">Sun Jul 31 11:24:25 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./contact.html">contact</a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/Behaviour_of_fsck.html
@@ -1,251 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Behaviour of fsck</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-Behaviour of fsck--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The current behaviour of 'fsck' is a bit verbose. I have an annex'd directory of tarballs for my own build system for "science" applications, there's about ~600 or so blobs in my repo, I do occassionally like to run fsck across all my data to see what files don't meet the min num copies requirement that I have set.</p>--<p>Would it be better for the default behaviour of fsck when it has not been given a path to only output errors and not bother to show that a file is ok for every single file in a repo. i.e.</p>--<pre><code>git annex fsck-</code></pre>--<p>should show only 'errors' and maybe a simple indicator showing the status (show a spinner or dots?) and when </p>--<pre><code>git annex fsck PATH/FILE -</code></pre>--<p>it should have the current behaviour? </p>--<p>Right now the current fsck behaviour might get annoying for anyone who would want to run fsck with repos with lots of big files.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8e408807c55027dd4868a851e03a7bd9">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-8e408807c55027dd4868a851e03a7bd9">comment 1</a>--</div>--<div class="inlinecontent">-I tend to agree that the default output of fsck is not quite right. I often use git annex fsck -q. A progress spinner display is a good idea.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Mar 24 13:45:08 2011</span>-</div>----</div>-<div class="comment" id="comment-452f79b7be790af8b400af6bc9305caa">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-452f79b7be790af8b400af6bc9305caa">comment 2</a>--</div>--<div class="inlinecontent">-FWIW, I wanted to suggest exactly the same thing.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Mar 25 07:23:04 2011</span>-</div>----</div>-<div class="comment" id="comment-5a2f8aba164cafa6d18d274f221d5aa0">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-5a2f8aba164cafa6d18d274f221d5aa0">comment 2</a>--</div>--<div class="inlinecontent">-<p>After some thought, perhaps the default fsck output should be at least machine readable and copy and pasteable i.e.</p>--<pre>-$ git annex fsck-Files with errors--    file1-    file2--</pre>--<p>so I can then copy the list of borked files and then just paste it into a for loop in my shell to recover the files. it's just an idea.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat Mar 26 06:57:41 2011</span>-</div>----</div>-<div class="comment" id="comment-2cb9be4ebd26b8e3b5adb55bdd38fab2">--<div class="comment-subject">--<a href="/forum/Behaviour_of_fsck.html#comment-2cb9be4ebd26b8e3b5adb55bdd38fab2">comment 3</a>--</div>--<div class="inlinecontent">-<p>Another nice thing would be a summary of <em>what</em> is wrong. I.e.</p>--<pre><code>% git fsck-[...]-git-annex: 100 total failed-  50 checksum failed-  50 not enough copies exit-</code></pre>--<p>And the same/similar for all other failure modes.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Mar 27 21:16:21 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/Problems_with_large_numbers_of_files.html
@@ -1,366 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Problems with large numbers of files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-Problems with large numbers of files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I'm trying to use git-annex to archive scientific data. I'm often dealing with large numbers of files, sometimes 10k or more. When I try to git-annex add these files I get this error:</p>--<pre><code>Stack space overflow: current size 8388608 bytes.-Use `+RTS -Ksize' to increase it.-</code></pre>--<p>This is with the latest version of git-annex and a current version of git on OS 10.6.7. After this error occurs, I am unable to un-annex the files and I'm forced to recover from a backup. </p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4635262a88d4721c6dafb3ffe4384146">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-4635262a88d4721c6dafb3ffe4384146">comment 1</a>--</div>--<div class="inlinecontent">-<p>Heh, cool, I was thinking throwing about 28million files at git-annex. Let me know how it goes, I suspect you have just run into a default limits OSX problem.</p>--<p>You probably just need to up some system limits (you will need to read the error messages that first appear) then do something like</p>--<pre>-# this is really for the run time, you can set these settings in /etc/sysctl.conf-sudo sysctl -w kern.maxproc=2048-sudo sysctl -w kern.maxprocperuid=1024--# tell launchd about having higher limits-sudo echo "limit maxfiles 1024 unlimited" &gt;&gt; /etc/launchd.conf-sudo echo "limit maxproc 1024 2048" &gt;&gt; /etc/launchd.conf-</pre>--<p>There are other system limits which you can check by doing a "ulimit -a", once you make the above changes, you will need to reboot to make the changes take affect. I am unsure if the above will help as it is an example of what I did on 10.6.6 a few months ago to fix some forking issues. From the error you got you will probably need to increase the stacksize to something bigger or even make it unlimited if you feel lucky, the default stacksize on OSX is 8192, try making it say 10times that size first and see what happens.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Tue Apr  5 03:27:46 2011</span>-</div>----</div>-<div class="comment" id="comment-67d91e632adcb14c1f40a9bf9309baa1">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-67d91e632adcb14c1f40a9bf9309baa1">comment 2</a>--</div>--<div class="inlinecontent">-<p>This message comes from ghc's runtime memory manager. Apparently your ghc defaults to limiting the stack to 80 mb.-Mine seems to limit it slightly higher -- I have seen haskell programs successfully grow as large as 350 mb, although generally not intentionally. :)</p>--<p>Here's how to adjust the limit at runtime, obviously you'd want a larger number:</p>--<pre>-# git-annex +RTS -K100 -RTS find-Stack space overflow: current size 100 bytes.-Use `+RTS -Ksize -RTS' to increase it.-</pre>--<p>I've tried to avoid git-annex using quantities of memory that scale with the number of files in the repo, and I think in general successfully -- I run it on 32 mb and 128 mb machines, FWIW. There are some tricky cases, and haskell makes it easy to accidentally write code that uses much more memory than would be expected.</p>--<p>One well known case is <code>git annex unused</code>, which <em>has</em> to build a structure of every annexed file. I have been considering using a bloom filter or something to avoid that.</p>--<p>Another possible case is when running a command like <code>git annex add</code>, and passing it a lot of files/directories. Some code tries to preserve the order of your input after passing it through <code>git ls-files</code> (which destroys ordering), and to do so it needs to buffer both the input and the result in ram.</p>--<p>It's possible to build git-annex with memory profiling and generate some quite helpful profiling data. Edit the Makefile and add this to GHCFLAGS: <code>-prof -auto-all -caf-all -fforce-recomp</code> then when running git-annex, add the parameters: <code>+RTS -p -RTS</code> , and look for the git-annex.prof file.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 13:46:03 2011</span>-</div>----</div>-<div class="comment" id="comment-50d9a528b4f6c2f01086b3f285030904">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-50d9a528b4f6c2f01086b3f285030904">comment 3</a>--</div>--<div class="inlinecontent">-Oh, you'll need profiling builds of various haskell libraries to build with profiling support. If that's not easily accomplished, if you could show me the form of the command you're running, and also how git annex unannex fails, that would be helpful for investigating.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  5 14:02:05 2011</span>-</div>----</div>-<div class="comment" id="comment-074bde15bf2a744f29f5eed191760777">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-074bde15bf2a744f29f5eed191760777">comment 4</a>--</div>--<div class="inlinecontent">-<p>@joey</p>--<p>OK, I'll try increasing the stack size and see if that helps.</p>--<p>For reference, I was running:</p>--<p>git annex add .</p>--<p>on a directory containing about 100k files spread over many nested subdirectories. I actually have more than a dozen projects like this that I plan to keep in git annex, possibly in separate repositories if necessary. I could probably tar the data and then archive that, but I like the idea of being able to see the structure of my data even though the contents of the files are on a different machine.</p>--<p>After the crash, running:</p>--<p>git annex unannex</p>--<p>does nothing and returns instantly. What exactly is 'git annex add' doing? I know that it's moving files into the key-value store and adding symlinks, but I don't know what else it does.</p>--<p>--Justin</p>--<p>If </p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkhdKAhe3l_UyGt5SdfRBPYVwe-9f8P2dM">Justin</a>-</span>---&mdash; <span class="date">Tue Apr  5 17:14:12 2011</span>-</div>----</div>-<div class="comment" id="comment-24b2103836e8fadb4e62065da317ff7e">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-24b2103836e8fadb4e62065da317ff7e">comment 5</a>--</div>--<div class="inlinecontent">-<p>I think what is happening with "git annex unannex" is that "git annex add" crashes before it can "git add" the symlinks. unannex only looks at files that "git ls-files" shows, and so files that are not added to git are not seen. So, this can be recovered from by looking at git status and manually adding the symlinks to git, and then unannex.</p>--<p>That also suggests that "git annex add ." has done something before crashing. That's consistent with you passing it &lt; 2 parameters; it's not just running out of memory trying to expand and preserve order of its parameters (like it might if you ran "git annex add experiment-1/ experiment-2/")</p>--<p>I'm pretty sure I know where the space leak is now. git-annex builds up a queue of git commands, so that it can run git a minimum number of times. Currently, this queue is only flushed at the end. I had been meaning to work on having it flush the queue periodically to avoid it growing without bounds, and I will prioritize doing that.</p>--<p>(The only other thing that "git annex add" does is record location log information.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:41:00 2011</span>-</div>----</div>-<div class="comment" id="comment-c5990cc910f939d02c31f924738832c2">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-c5990cc910f939d02c31f924738832c2">comment 6</a>--</div>--<div class="inlinecontent">-<p>I've committed the queue flush improvements, so it will buffer up to 10240 git actions, and then flush the queue.</p>--<p>There may be other memory leaks at scale (besides the two I mentioned earlier), but this seems promising. I'm well into running <code>git annex add</code> on a half million files and it's using 18 mb ram and has flushed the queue several times. This run-will fail due to running out of inodes for the log files, not due to memory. :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 14:09:13 2011</span>-</div>----</div>-<div class="comment" id="comment-902ca081e1066bf97a398a50bc5790d7">--<div class="comment-subject">--<a href="/forum/Problems_with_large_numbers_of_files.html#comment-902ca081e1066bf97a398a50bc5790d7">comment 7</a>--</div>--<div class="inlinecontent">-http://xfs.org/index.php/XFS_FAQ#Q:<em>Performance:</em>mkfs.xfs_-n_size.3D64k_option--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr  8 17:55:36 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/advantages_of_SHA__42___over_WORM.html
@@ -1,133 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>advantages of SHA&#42; over WORM</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-advantages of SHA&#42; over WORM--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Thanks for creating git-annex.</p>--<p>I am confused about the advantages of the SHA* backends over WORM.  The "backends" page in this wiki says that with WORM, files "can be moved around, but should never be added to or changed".  But I don't see any difference to SHA* files as long as the premise of WORM that "any file with the same basename, size, and modification time has the same content" is true.  Using "git annex unlock", WORM files can be modified in the same way as SHA* files.</p>--<p>If the storage I use is dependable (i.e. I don't need SHA checksums for detection of corruption), and I don't need to optimize for the case that the modification date of a file is changed but the contents stay the same, and if it is unlikely that several files will be identical, is there actually any advantage in using SHA*?</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-c0e563fc39e7f3fe527af0b0c8454500">--<div class="comment-subject">--<a href="/forum/advantages_of_SHA__42___over_WORM.html#comment-c0e563fc39e7f3fe527af0b0c8454500">comment 1</a>--</div>--<div class="inlinecontent">-You're right -- as long as nothing changes a file without letting the modification time update, editing WORM files is safe.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Aug 29 12:10:38 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/batch_check_on_remote_when_using_copy.html
@@ -1,146 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>batch check on remote when using copy</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-batch check on remote when using copy--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When I copy my local repository with SHA* to a remote repo with SHA*, every single file is checked by itself which seems rather inefficient. When my remote is accessed via ssh, git-annex opens a new connections for every check. If you are not using a ssh key or key agent, this gets tedious...</p>--<p>For all locked files, either git's built-in mechanisms should be used or, if that's not possible, a few hundred checksums (assuming SHA* backend) should be transfered at once and then checked locally before deciding that to transfer.</p>--<p>Once all checks are done, one single transfer session should be started. Creating new sessions and waiting for TCP's slowstart to get going is a lot less than efficient.</p>--<p>-- RichiH</p>--<blockquote>-  <p>(Use of SHA is irrelevant here, copy does not checksum anything.)</p>-  -  <p>I think what you're seeing is-  that <code>git annex copy --to remote</code> is slow, going to the remote repository-  every time to see if it has the file, while <code>git annex copy --from remote</code>-  is fast, since it looks at what files are locally present.</p>-  -  <p>That is something I mean to improve. At least <code>git annex copy --fast --to remote</code>-  could easily do a fast copy of all files that are known to be missing from-  the remote repository. When local and remote git repos are not 100% in sync,-  relying on that data could miss some files that the remote doesn't have anymore,-  but local doesn't know it dropped. That's why it's a candidate for <code>--fast</code>.</p>-  -  <p>I've just implemented that.</p>-  -  <p>While I do hope to improve ssh usage so that it sshs once, and feeds-  <code>git-annex-shell</code> a series of commands to run, that is a much longer-term-  thing. --<span class="createlink">Joey</span></p>-  -  <blockquote>-    <p>FYI, in a repo with 1228 files, all small, repos <em>completely in sync</em>.</p>-  </blockquote>-</blockquote>--<pre><code>% git annex copy . --to foo # 1200 seconds-% git annex copy . --to foo --fast # 20 seconds-</code></pre>--<blockquote>-  <blockquote>-    <p>RichiH</p>-  </blockquote>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./relying_on_git_for_numcopies.html">relying on git for numcopies</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/can_git-annex_replace_ddm__63__.html
@@ -1,219 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>can git-annex replace ddm&#63;</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-can git-annex replace ddm&#63;--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Hi,-a few years ago I wrote a tool called 'ddm'.  The code is overengineered and the script is more complicated then it should be,-but I think it demonstrates some good use cases, and I wonder how well git-annex can fulfill the requirements for those use cases - maybe I should remove ddm and start hacking with git-annex instead.</p>--<p>To answer this question, you should read the section about the possible dataset types on http://dieter.plaetinck.be/ddm_a_distributed_data_manager.html, and the example at the bottom of that page. it demonstrates the idea behind the "selection" dataset to always try to keep a subset (the most appropriate, based on the output of some script) of files "checked out".-the introduction section on https://github.com/Dieterbe/ddm/raw/358f7cf92c0ba7b336dc97638351d4e324461afa/MANUAL should further clarify things, as well as give some more good use cases (as you can see it's a bit more about [semi-]automated workflows then purely tracking what's where)</p>--<p>So I'm not sure, maybe the way to go for me is to make git-annex my "housekeeping about which data is where" backend and make ddm into a set of policies and tools on top of git-annex.</p>--<p>Any input?</p>--<p>Thanks,-Dieter</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-b47bc6096d0596ec45f2d40d0208ff46">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-b47bc6096d0596ec45f2d40d0208ff46">comment 1</a>--</div>--<div class="inlinecontent">-<p>Yes, there is value in layering something over git-annex to use a policy to choose what goes where.</p>--<p>I use <a href="http://kitenet.net/~joey/code/mr/">mr</a> to update and manage all my repositories, and since mr can be made to run arbitrary commands when doing eg, an update, I use its config file as such a policy layer. For example, my podcasts are pulled into my sound repository in a subdirectory; boxes that consume podcasts run "git pull; git annex get podcasts --exclude="<em>/out/</em>"; git annex drop podcasts/*/out". I move podcasts to "out" directories once done with them (I have yet to teach mpd to do that for me..), and the next time I run "mr update" to update everything, it pulls down new ones and removes old ones.</p>--<p>I don't see any obstacle to doing what you want. May be that you'd need better querying facilities in git-annex (so the policy layer can know what is available where), or finer control (--exclude is a good enough hammer for me, but maybe not for you).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Feb 14 18:08:54 2011</span>-</div>----</div>-<div class="comment" id="comment-278e83955890c8b2b745287be4b49d98">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-278e83955890c8b2b745287be4b49d98">comment 2</a>--</div>--<div class="inlinecontent">-<p>thanks Joey,</p>--<p>is it possible to run some git annex command that tells me, for a specific directory, which files are available in an other remote? (and which remote, and which filenames?)-I guess I could run that, do my own policy thingie, and run <code>git annex get</code> for the files I want.</p>--<p>For your podcast use case (and some of my use cases) don't you think git [annex] might actually be overkill?  For example your podcasts use case, what value does git annex give over a simple rsync/rm script?-such a script wouldn't even need a data store to store its state, unlike git. it seems simpler and cleaner to me.</p>--<p>for the mpd thing, check http://alip.github.com/mpdcron/ (bad project name, it's a plugin based "event handler")-you should be able to write a simple plugin for mpdcron that does what you want (or even interface with mpd yourself from perl/python/.. to use its idle mode to get events)</p>--<p>Dieter</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Wed Feb 16 17:32:04 2011</span>-</div>----</div>-<div class="comment" id="comment-74d208343263f8ab3e9d766e203311da">--<div class="comment-subject">--<a href="/forum/can_git-annex_replace_ddm__63__.html#comment-74d208343263f8ab3e9d766e203311da">comment 3</a>--</div>--<div class="inlinecontent">-<p>Whups, the comment above got stuck in moderation queue for 27 days. I will try to check that more frequently.</p>--<p>In the meantime, I've implemented "git annex whereis" -- enjoy!</p>--<p>I find keeping my podcasts in the annex useful because it allows me to download individual episodes or poscasts easily when low bandwidth is available (ie, dialup), or over sneakernet. And generally keeps everything organised.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:01:17 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/git-annex_communication_channels.html
@@ -1,318 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex communication channels</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-git-annex communication channels--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Thought I'd ask how y'all are finding the current communication by this forum/website/git repo only.</p>--<p>Would there be a benefit to having an irc channel for git-annex?</p>--<p>Maybe a mailing list? (Any persuasive reason why it would be better than this forum?)</p>--<p>Are the existing RSS feeds on this site, for eg, new <a href="../comments.html">comments</a> and posts to this forum, sufficient to keep up with-things?</p>--<p>--<span class="createlink">Joey</span></p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-3ede79f296a4b24c8485db819624dc9a">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-3ede79f296a4b24c8485db819624dc9a">comment 1</a>--</div>--<div class="inlinecontent">-<p>No matter what you end up doing, I would appreciate a git-annex-announce@ list.</p>--<p>I really like the persistence of ikiwiki, but it's not ideal for quick communication. I would be fine with IRC and/or ML. The advantage of a ML over ikiwiki is that it doesn't seem to be as "wasteful" to mix normal chat with actual problem-solving.  But maybe that's merely my own perception.</p>--<p>Speaking of RSS: I thought I had added a wishlist item to ikiwiki about providing per-subsite RSS feeds. For example there is no (obvious) way to subscribe to changes in http://git-annex.branchable.com/forum/git-annex_communication_channels/ .</p>--<p>FWIW, I resorted to tagging my local clone of git-annex to keep track of what I've read, already.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 11:48:08 2011</span>-</div>----</div>-<div class="comment" id="comment-b9856cec0ecba0efd0ac6a7ecb5eae74">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-b9856cec0ecba0efd0ac6a7ecb5eae74">comment 2</a>--</div>--<div class="inlinecontent">-I think the forums/website currently is sufficient, I do at times wish there was a mailing list or anonymous git push to the wiki as I find editing posts through the web browser is some times tedious (the lack of !fmt or alt-q bugs me at times ;) ). The main advantage of keeping stuff on the site/forum is that everything gets saved and passed on to anyone who checks out the git repo of the code base.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Mon Mar 28 14:35:50 2011</span>-</div>----</div>-<div class="comment" id="comment-fa4a178cb30a86e7bca3814fbb040946">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-fa4a178cb30a86e7bca3814fbb040946">comment 3</a>--</div>--<div class="inlinecontent">-Push access to the non-code bits of git-annex' ikiwiki would be very welcome indeed. Given the choice, I would rather edit everything in Vim than in a browser. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:47:23 2011</span>-</div>----</div>-<div class="comment" id="comment-932f7044a241459e239282552ea7a6ac">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-932f7044a241459e239282552ea7a6ac">comment 4</a>--</div>--<div class="inlinecontent">-.1 cents: Having IRC would be really nice for seeking quick help.   E.g. like I was trying to do now, google lead me to this page.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY">Yaroslav</a>-</span>---&mdash; <span class="date">Wed Apr 13 13:53:26 2011</span>-</div>----</div>-<div class="comment" id="comment-98eb246163a987ef7b962acc6fc996a2">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-98eb246163a987ef7b962acc6fc996a2">comment 5</a>--</div>--<div class="inlinecontent">-I would also like an git-annex channel. Would be #git-annex@OFTC ok?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Thu Apr 14 07:24:59 2011</span>-</div>----</div>-<div class="comment" id="comment-05141f213ee7137c9213ee52e16cd838">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-05141f213ee7137c9213ee52e16cd838">comment 6</a>--</div>--<div class="inlinecontent">-We seem to be using #vcs-home @ OFTC for now. madduck is fine with it and joeyh pokes his head in there, as well. I just added a CIA bot to #vcs-home and this comment is a test if pushing works. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr 15 15:32:08 2011</span>-</div>----</div>-<div class="comment" id="comment-c4f41108e50cee329f68b820de20a6a2">--<div class="comment-subject">--<a href="/forum/git-annex_communication_channels.html#comment-c4f41108e50cee329f68b820de20a6a2">anonymous git push</a>--</div>--<div class="inlinecontent">-<p>@Jimmy mentioned anonymous git push -- that is now enabled for this wiki. Enjoy!</p>--<p>I may try to spend more time on #vcs-home -- or I can be summoned there from my other lurking places on irc, I guess.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu May 19 15:21:51 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/git-annex_on_OSX.html
@@ -1,97 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex on OSX</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-git-annex on OSX--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>See <a href="../install/OSX.html">OSX</a>.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/hashing_objects_directories.html
@@ -1,304 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>hashing objects directories</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-hashing objects directories--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I'm wondering how easy the addition of hashing to the directories of the objects would be.</p>--<p>Currently a tree directory structure becomes a flat two level tree under the .git/annex/objects directory (<a href="../internals.html">internals</a>).  This, through the 555 mode on the directory prevents the accidental destruction of content, which is <em>good</em>.  However file and directory numbers soon add up in there and as such any file-systems with sub directory limitations will quickly realize the limit (certainly quicker than maybe expected).</p>--<p>Suggestion is therefore to change from </p>--<p><code>.git/annex/objects/SHA1:123456789abcdef0123456789abcdef012345678/SHA1:123456789abcdef0123456789abcdef012345678</code></p>--<p>to </p>--<p><code>.git/annex/objects/SHA1:1/2/3456789abcdef0123456789abcdef012345678/SHA1:123456789abcdef0123456789abcdef012345678</code></p>--<p>or anything in between to a paranoid</p>--<p><code>.git/annex/objects/SHA1:123/456/789/abc/def/012/345/678/9ab/cde/f01/234/5678/SHA1:123456789abcdef0123456789abcdef012345678</code></p>--<p>Also the use of a colon specifically breaks FAT32 (<a href="../bugs/fat_support.html">fat support</a>), must it be a colon or could an extra directory be used? i.e. <code>.git/annex/objects/SHA1/*/...</code></p>--<p><code>git annex init</code> could also create all but the last level directory on initialization. I'm thinking <code>SHA1/1/1, SHA1/1/2, ..., SHA256/f/f, ..., URL/f/f, ..., WORM/f/f</code></p>--<blockquote>-  <p>This is done now with a 2-level hash. It also hashes .git-annex/ log-  files which were the worse problem really. Scales to hundreds of millions-  of files with each dir having 1024 or fewer contents. Example:</p>-  -  <p><code>me -&gt; .git/annex/objects/71/9t/WORM-s3-m1300247299--me/WORM-s3-m1300247299--me</code></p>-  -  <p>--<span class="createlink">Joey</span></p>-</blockquote>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4b443eed7653385f5746bdaa0db58498">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-4b443eed7653385f5746bdaa0db58498">comment 1</a>--</div>--<div class="inlinecontent">-<p>My experience is that modern filesystems are not going to have many issues with tens to hundreds of thousands of items in the directory. However, if a transition does happen for FAT support I will consider adding hashing. Although getting a good balanced hash in general without, say, checksumming the filename and taking part of the checksum, is difficult. </p>--<p>I prefer to keep all the metadata in the filename, as this eases recovery if the files end up in lost+found. So while "SHA/" is a nice workaround for the FAT colon problem, I'll be doing something else. (What I'm not sure yet.)</p>--<p>There is no point in creating unused hash directories on initialization. If anything, with a bad filesystem that just guarantees worst performance from the beginning..</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 14 12:12:49 2011</span>-</div>----</div>-<div class="comment" id="comment-9d8966c41f6e6ab3eab3ea32787cede5">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-9d8966c41f6e6ab3eab3ea32787cede5">comment 2</a>--</div>--<div class="inlinecontent">-<p>Can't you just use an underscore instead of a colon?</p>--<p>Would it be feasible to split directories dynamically? I.e. start with SHA1_123456789abcdef0123456789abcdef012345678/SHA1_123456789abcdef0123456789abcdef012345678 and, at a certain cut-off point, switch to shorter directory names? This could even be done per subdirectory and based purely on a locally-configured number. Different annexes on different file systems or with different file subsets might even have different thresholds. This would ensure scale while not forcing you to segment from the start. Also, while segmenting with longer directory names means a flatter tree, segments longer than four characters might not make too much sense. Segmenting too often could lead to some directories becoming too populated, bringing us back to the dynamic segmentation.</p>--<p>All of the above would make merging annexes by hand a <em>lot</em> harder, but I don't know if this is a valid use case. And if all else fails, one could merge everything with the unsegemented directory names and start again from there.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 09:52:16 2011</span>-</div>----</div>-<div class="comment" id="comment-ec44ff4c7172f71e0b4db5e68a216302">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-ec44ff4c7172f71e0b4db5e68a216302">comment 3</a>--</div>--<div class="inlinecontent">-<p>It is unfortunatly not possible to do system-dependant hashing, so long as git-annex stores symlinks to the content in git.</p>--<p>It might be possible to start without hashing, and add hashing for new files after a cutoff point. It would add complexity.</p>--<p>I'm currently looking at a 2 character hash directory segment, based on an md5sum of the key, which splits it into 1024 buckets. git uses just 256 buckets for its object directory, but then its objects tend to get packed away. I sorta hope that one level is enough, but guess I could go to 2 levels (objects/ab/cd/key), which would provide 1048576 buckets, probably plenty, as if you are storing more than a million files, you are probably using a modern enough system to have a filesystem that doesn't need hashing.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:13:39 2011</span>-</div>----</div>-<div class="comment" id="comment-b3e4eb24a8755f2d7713c9e030004e41">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-b3e4eb24a8755f2d7713c9e030004e41">comment 4</a>--</div>--<div class="inlinecontent">-<p>The .git-annex/ directory is what really needs hashing.</p>--<p>Consider that when git looks for changes in there, it has to scan every file in the directory. With hashing, it should be able to more quickly identify just the subdirectories that contained changed files, by the directory mtimes.</p>--<p>And the real kicker is that when committing there, git has to create a tree object containing every single file, even if only 1 file changed. That will be a lot of extra work; with hashed subdirs it will instead create just 2 or 3 small tree objects leading down to the changed file. (Probably these trees both pack down to similar size pack files, not sure.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 00:06:19 2011</span>-</div>----</div>-<div class="comment" id="comment-3b0d46115206132c4d44d378dbb86ed6">--<div class="comment-subject">--<a href="/forum/hashing_objects_directories.html#comment-3b0d46115206132c4d44d378dbb86ed6">comment 5</a>--</div>--<div class="inlinecontent">-<p>If you can't segment the names retroactively, it's better to start with segmenting, imo.</p>--<p>As subdirectories are cheap, going with ab/cd/rest or even ab/cd/ef/rest by default wouldn't hurt.</p>--<p>Your point about git not needing to create as many tree objects is a kicker indeed. If I were you, I would default to segmentation.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:47:17 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../todo/object_dir_reorg_v2.html">todo/object dir reorg v2</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/incompatible_versions__63__.html
@@ -1,129 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>incompatible versions&#63;</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-incompatible versions&#63;--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Are versions 0.14 and 0.20110522 incompatible? I can't seem to copy files from a system running 0.14 to one running 20110522.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-061ae3f0353bd94bc5f3513c5308c4a0">--<div class="comment-subject">--<a href="/forum/incompatible_versions__63__.html#comment-061ae3f0353bd94bc5f3513c5308c4a0">comment 1</a>--</div>--<div class="inlinecontent">-They are not. See <a href="../upgrades.html">upgrades</a>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Jun  7 20:40:54 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/migration_to_git-annex_and_rsync.html
@@ -1,131 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>migration to git-annex and rsync</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-migration to git-annex and rsync--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>When migrating large file repositories to git-annex that are backuped in a way that uses an rsync-style mechanism (e.g. <a href="http://www.dirvish.org/">dirvish</a>) and thus keeps incremental backups small by using hardlinks, space can be saved by manually reflecting the migration on the backup. So, instead of making a last pre-git-annex backup, migrating, and duplicating all backupped data with the next backup, I used the <del>attached</del> migrate.py file below, and it saved me roughly a day of backuping.</p>--<p>A note on terminology: "migrating" here means migrating from not using git-annex at all to using it, not to the <code>git annex migrate</code> command, for which a similar but different solution may be created.</p>--<p><strong>WARNING</strong>: This is a quickly hacked-together script. It worked for me, but is untested apart from that. It's just a dozen lines of code, so have a look at it and make sure you understand what it does, and what migrate.sh looks like. Take special care as this tampers with your backups, and if something goes wrong, well...</p>--<p>First, have an up-to-date backup; then, git annex init / add etc as described in the <a href="../walkthrough.html">walkthrough</a>. In the directory in which you use git-annex, run:</p>--<pre><code>&#036; python migrate.py &gt; migrate.sh-</code></pre>--<p>Then copy the resulting migrate.sh to the equivalent location inside your backups and run it there. It will move all files that are now symlinked on the master to their new positions according to the symlinks (inside .git/annex/objects), but not create the symlinks (you will do a backup later anyway).</p>--<p>After that, do a backup as usual. As rsync sees the moved files at their new locations, it will accept them and not duplicate the data.</p>--<p><strong>migrate.py</strong>:</p>--<pre><code>#!/usr/bin/env python--import os-from pipes import quote--print "#!/bin/sh"-print "set -e"-print ""--for (dirpath, dirnames, filenames) in os.walk("."):-    for f in filenames:-        fn = os.path.join(dirpath, f)-        if os.path.islink(fn):-            link = os.path.normpath(os.path.join(dirpath, os.readlink(fn)))-            assert link.startswith(".git/annex/objects/")-            print "mkdir -p %s"%quote(os.path.dirname(link))-            print "mv %s %s"%(quote(fn), quote(link))-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/new_microfeatures.html
@@ -1,378 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>new microfeatures</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-new microfeatures--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I'm soliciting ideas for new small features that let git-annex do things that currently have to be done manually or whatever.</p>--<p>Here are a few I've been considering:</p>--<hr />--<p><ul>-<li>--numcopies would be a useful command line switch.</p>--<blockquote>-  <p>Update: Added. Also allows for things like <code>git annex drop --numcopies=2</code> when in a repo that normally needs 3 copies, if you need-  to urgently free up space.</li>-  <li>A way to make <code>drop</code> and other commands temporarily trust a given remote, or possibly all remotes. </li>-  </ul>-  Combined, this would allow <code>git annex drop --numcopies=2 --trust=repoa --trust=repob</code> to remove files that have been replicated out to the other 2 repositories, which could be offline. (Slightly unsafe, but in this case the files are podcasts so not really.)</p>-  -  <p>Update: done --<span class="createlink">Joey</span> </p>-</blockquote>--<hr />--<p><a href="./wishlist:_git-annex_replicate.html">wishlist: git-annex replicate</a> suggests some way for git-annex to have the smarts to copy content around on its own to ensure numcopies is satisfied. I'd be satisfied with a <code>git annex copy --to foo --if-needed-by-numcopies</code></p>--<blockquote>-  <p>Contrary to the "basic" solution, I would love to have a git annex distribute which is smart enough to simply distribute all data according to certain rules. My ideal, personal use case during the next holidays where I will have two external disks, several SD cards with 32 GB each and a local disk with 20 GB (yes....) would be:</p>-</blockquote>--<pre><code>cd ~/photos.annex # this repository does not have any objects!-git annex inject --bare /path/to/SD/card  # this adds softlinks, but does **not** add anything to the index. it would calculate checksums (if enabled) and have to add a temporary location list, though-git annex distribute # this checks the config. it would see that my two external disks have a low cost whereas the two remotes have a higher cost.- # check numcopies. it's 3- # copy to external disk one (cost x)- # copy to external disk two (cost x)- # copy to remote one (cost x * 2)- # remove file from temporary tracking list-git annex fsck # everything ok. yay!-</code></pre>--<p>Come to think of it, the inject --bare thing is probably not a microfeature. Should I add a new wishlist item for that? -- RichiH</p>--<blockquote>-  <p>I've thought about such things before; does not seem really micro and I'm unsure how well it would work, but it would be worth a <a href="../todo.html">todo</a>. --<span class="createlink">Joey</span></p>-</blockquote>--<hr />--<p>Along similar lines, it might be nice to have a mode where git-annex tries to fill up a disk up to the <code>annex.diskreserve</code> with files, preferring files that have relatively few copies. Then as storage prices continue to fall, new large drives could just be plopped in and git-annex used to fill it up in a way that improves the overall redundancy without needing to manually pick and choose.</p>--<hr />--<p>If a remote could send on received files to another remote, I could use my own local bandwith efficiently while still having my git-annex repos replicate data. -- RichiH</p>--<hr />--<p>Really micro:</p>--<pre><code>% grep annex-push .git/config-    annex-push = !git pull &amp;&amp; git annex add . &amp;&amp; git annex copy . --to origin --fast --quiet &amp;&amp; git commit -a -m "&#036;HOST &#036;(date +%F--%H-%M-%S-%Z)" &amp;&amp; git push-%-</code></pre>--<p>-- RichiH---<span class="createlink">Joey</span></p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-59ea7200189cbe4cca5822d64727d0cb">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-59ea7200189cbe4cca5822d64727d0cb">comment 1</a>--</div>--<div class="inlinecontent">-I've been longing for an automated way of removing references to a remote assuming I know the exact uuid that I want to remove. i.e. I have lost a portable HDD due to a destructive process, I now want to delete all references to copies of data that was on that disk. Unless this feature exists, I would love to see it implemented.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Wed Jun  1 13:36:50 2011</span>-</div>----</div>-<div class="comment" id="comment-0aead1ba7e280f7494730891e80a906e">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-0aead1ba7e280f7494730891e80a906e">comment 2</a>--</div>--<div class="inlinecontent">-@jimmy <a href="../walkthrough/what_to_do_when_you_lose_a_repository.html">what to do when you lose a repository</a>.. I have not seen a convincing argument that removing the location tracking data entirely serves any purpose--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Jun  1 16:24:33 2011</span>-</div>----</div>-<div class="comment" id="comment-416cbc4155ea7e5676da822facc3a860">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-416cbc4155ea7e5676da822facc3a860">git annex unlock --readonly</a>--</div>--<div class="inlinecontent">-<p>This was already asked <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606577">here</a>, but I have a use case where I need to unlock with the files being hardlinked instead of copied (my fs does not support CoW), even though 'git annex lock' is now much faster ;-) . The idea is that 1) I want the external world see my repo "as if" it wasn't annexed (because of its own limitation to deal with soft links), and 2) I know what I do, and am sure that files won't be written to but only read.</p>--<p>My case is: the repo contains a snapshot A1 of a certain remote directory. Later I want to rsync this dir into a new snapshot A2. Of course, I want to transfer only new or changed files, with the --copy-dest=A1 (or --compare-dest) rsync's options. Unfortunately, rsync won't recognize soft-links from git-annex, and will re-transfer everything.</p>--<p>Maybe I'm overusing git-annex ;-) but still, I find it is a legitimate use case, and even though there are workarounds (I don't even remember what I had to do), it would be much more straightforward to have 'git annex unlock --readonly' (or '--readonly-unsafe'?), ... or have rsync take soft-links into account, but I did not see the author ask for microfeatures ideas :) (it was discussed, and only some convoluted workarounds were proposed). Thanks.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 07:34:42 2011</span>-</div>----</div>-<div class="comment" id="comment-a5e89958742d529859970cbfda9e5ad0">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-a5e89958742d529859970cbfda9e5ad0">git annex unused</a>--</div>--<div class="inlinecontent">-<p>Before dropping unsused items, sometimes I want to check the content of the files manually.-But currently, from e.g. a sha1 key, I don't know how to find the corresponding file, except with-'find .git/annex/objects -type f -name 'SHA1-s1678--70....', wich is too slow (I'm in the case where "git log --stat -S'KEY'"-won't work, either because it is too slow or it was never commited). By the way,-is it documented somewhere how to determine the 2 (nested) sub-directories in which a given-(by name) object is located?</p>--<p>So I would like 'git-annex unused' be able to give me the list of <em>paths</em> to the unused items.-Also, I would really appreciate a command like 'git annex unused --log NUMBER [NUMBER2...]' which would do for me the suggested command-"git log --stat -S'KEY'", where NUMBER is from the 'git annex unused' output.-Thanks.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 07:55:58 2011</span>-</div>----</div>-<div class="comment" id="comment-30d0bb4af4f1e2129fb021744eed6812">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-30d0bb4af4f1e2129fb021744eed6812">git annex unused</a>--</div>--<div class="inlinecontent">-ps: concerning the command 'find .git/annex/objects -type f -name 'SHA1-s1678--70....' from my previous comment, it is "significantly" faster to search for the containing directory which have the same name: 'find .git/annex/objects -maxdepth 2 -mindepth 2 -type d -name 'SHA1-s1678--70....'. I am just curious: what is the need to have each file object in its own directory, itself nested under two more sub-directories?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Thu Jun  2 15:51:49 2011</span>-</div>----</div>-<div class="comment" id="comment-ddc0b653ecea101212c786eecb21fadf">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-ddc0b653ecea101212c786eecb21fadf">git annex fetch</a>--</div>--<div class="inlinecontent">-I'm not sure it is worth adding a command for such a small feature, but I would certainly use it: having something like "git annex fetch remote" do "git fetch remote &amp;&amp; git annex copy --from=remote", and "git annex push remote" do "git push remote &amp;&amp; git annex copy --to=remote". And maybe the same for a pull operation?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Sun Jul  3 10:39:41 2011</span>-</div>----</div>-<div class="comment" id="comment-fd4faaf504daf33f8e250f626a302f19">--<div class="comment-subject">--<a href="/forum/new_microfeatures.html#comment-fd4faaf504daf33f8e250f626a302f19">git annex fetch</a>--</div>--<div class="inlinecontent">-<p>My last comment is a bit confused. The "git fetch" command allows to get all the information from a remote, and it is then possible to merge while being offline (without access to the remote). I would like a "git annex fetch remote" command to be able to get all annexed files from remote, so that if I later merge with remote, all annexed files are already here. And "git annex fetch" could (optionally) call "git fetch" before getting the files.</p>--<p>It seems also that in my last post, I should have written "git annex get --from=remote" instead of "git annex copy --from=remote", because "annex copy --from" copies all files, even if the local repo already have them (is this the case? if yes, when is it useful?)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnpdM9F8VbtQ_H5PaPMpGSxPe_d5L1eJ6w">Rafaël</a>-</span>---&mdash; <span class="date">Sun Jul  3 13:57:00 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/relying_on_git_for_numcopies.html
@@ -1,272 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>relying on git for numcopies</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-relying on git for numcopies--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><strong>&lt;out-of-date-warning&gt;</strong>The main problems this is supposed to solve are addressed in a different way with <a href="../todo/hidden_files.html">hidden files</a> and the <code>--fast</code> option introduced in <a href="./batch_check_on_remote_when_using_copy.html">batch check on remote when using copy</a>, so while this is not technically obsolete, the main reasons for it are gone. --<span class="createlink">chrysn</span><strong>&lt;/out-of-date-warning&gt;</strong></p>--<p>This is a rough sketch of a modification of git-annex to rely more on git commit semantics. It might be flawed due to my lack of understanding of git-annex internals. --<span class="createlink">chrysn</span></p>--<h1>Summary</h1>--<p>Currently, <a href="../location_tracking.html">location tracking</a> is only used for informational purposes unless a repository is <a href="../trust.html">trust</a>ed, in which case there is no checking at all. It is proposed to use the location tracking information as a commitment to keep track of a file until another repository takes over responsibility.</p>--<p>git's semantics for atomic commits are proposed to be used, which makes sure that before files are actually deleted, another repository has accepted the deletion.</p>--<h1>Modified git-annex-drop behavior</h1>--<p>The most important (if not only) git-annex command that is affected by this is <code>git annex drop</code>. Currently, for dropping a large number of files, every file is checked with another (or multiple, if so configured) host if it's safe to delete.</p>--<p>The new behavior would be to</p>--<ul>-<li>decrement the location tracking counter for all files to be dropped,</li>-<li>commit that change,</li>-<li>try to push it to at least as many repositories that the numcopies constraints are met,</li>-<li>revert if that fails,</li>-<li>otherwise really drop the files from the backend.</li>-</ul>--<p>Unlike explicit checking, this never looks at the remote backend if the file is really present -- otoh, git-annex already relies on the files in the backend to not be touched by anyone but git-annex itself, and git-annex would only drop them if they were derefed and committed, in which case git would not accept the push. (git by itself would accept a merged push, but even if the reverting step failed due to a power outage or similar, git-annex would, before really deleting files from the backend, check again if the numcopies restraint is still met, and revert its own delete commit as the files are still present anyway.)</p>--<h1>Implications for trust</h1>--<p>The proposed change also changes the semantics of trust. Trust can now be controlled in a finer-grained way between untrusted and semi-trusted, as best illustrated by a use case:</p>--<blockquote>-  <p>Alice takes her netbook with her on a trip through Spain, and will fill most of its disk up with pictures she takes. As she expects to meet some old friends during the first days, she wants to take older pictures with her, which are safely backed up at home, so they can be deleted on demand.</p>-  -  <p>She tells her netbook's repository to dereference the old images (but not other parts of the repository she has not copied anywhere yet) and pushes to the server before leaving. When she adds pictures from her camera to the repository, git-annex can now free up space as needed.</p>-</blockquote>--<p>Dereferencing could be implemented as <code>git annex drop --no-rm</code> (or <code>move --no-rm</code>), freeing space is similar to <code>dropunused</code>.</p>--<p>A trusted repository with the new semantics would mean that the repository would not accept dropping anything, just as before.</p>--<h1>Advantages / Disadvantages</h1>--<p>The advantage of this proposal is that the round trips required for dropping something could be greatly reduced.</p>--<p>There should also be simplifications in the <code>git annex drop</code> command as it doesn't need to take care of locking any more (git should already do that between checking if HEAD is a parent of the pushed commit and replacing HEAD).</p>--<p>Besides being a major change in git-annex (with the requirement to track hosts' git-annex versions for migration, as the new trust system is incompatible with the old one), no disadvantages of that stragegy are known to the author (hoping for discussion below).</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4ddc5f9e4c3ea86593aa0ee22e51d490">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-4ddc5f9e4c3ea86593aa0ee22e51d490">comment 1</a>--</div>--<div class="inlinecontent">-<p>I see the following problems with this scheme:</p>--<ul>-<li><p>Disallows removal of files when disconnected. It's currently safe to force that, as long as-git-annex tells you enough other repos are belived to have the file. Just as long as you-only force on one machine (say your laptop). With your scheme, if you drop a file while -disconnected, any other host could see that the counter is still at N, because your-laptop had the file last time it was online, and can decide to drop the file, and lose the last -version.</p></li>-<li><p>pushing a changed counter commit to other repos is tricky, because they're not bare, and -the network topology to get the commit pulled into the other repo could vary.</p></li>-<li><p>Merging counter files issues.  If the counter file doesn't automerge, two repos dropping the same file will conflict. But, if it does automerge, it breaks the counter conflict detection.</p></li>-<li><p>Needing to revert commits is going to be annoying. An actual git revert-could probably not reliably be done. It's need to construct a revert-and commit it as a new commit. And then try to push that to remotes, and-what if <em>that</em> push conflicts?</p></li>-<li><p>I do like the pre-removal dropping somewhat as an alternative to-trust checking. I think that can be done with current git-annex though,-just remove the files from the location log, but keep them in-annex.-Dropping a file only looks at repos that the location log says have a-file; so other repos can have retained a copy of a file secretly like-this, and can safely remove it at any time. I'd need to look into this a bit more to be 100% sure it's safe, but have started <a href="../todo/hidden_files.html">hidden files</a>. </p></li>-<li><p>I don't see any reduced round trips. It still has to contact N other-repos on drop. Now, rather than checking that they have a file, it needs-to push a change to them.</p></li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb 22 14:44:28 2011</span>-</div>----</div>-<div class="comment" id="comment-771167f73b6bcc07e751954f03bb9d7f">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-771167f73b6bcc07e751954f03bb9d7f">comment 2</a>--</div>--<div class="inlinecontent">-<p>i'll comment on each of the points separately, well aware that even a single little leftover issue can show that my plan is faulty:</p>--<ul>-<li>force removal: well, yes -- but the file that is currently force-removed on the laptop could just as well be the last of its kind itself. i see the problem, but am not sure if it's fatal (after all, if we rely on out-of-band knowledge when forcing something, we could just as well ask a little more)</li>-<li>non-bare repos: pushing is tricky with non-bare repos now just as well; a post-commit hook could auto-accept counter changes. (but pushing causes problems with counters anyway, doesn't it?)</li>-<li>merging: i'd have them auto-merge. git-annex will have to check the validity of the current state anyway, and a situation in which a counter-decrementing commit is not a fast-forward one would be reverted in the next step (or upon discovery, in case the next step never took place).</li>-<li>reverting: my wording was bad as "revert" is already taken in git-lingo. the correct term for what i was thinking of is "reset". (as the commit could not be pushed, it would be rolled back completely).-<ul>-<li>we might have to resort to reverting, though, if the commit has already been pused to a first server of many.</li>-</ul></li>-<li><a href="../todo/hidden_files.html">hidden files</a>: yes, this solves pre-removal dropping :-)</li>-<li>round trips: it's not the number of servers, it's the number of files (up to 30k in my case). it seems to me that an individual request was made for every single file i wanted to drop (that would be N*M roundtrips for N affected servers and M files, and N roundtrips with git managed numcopies)</li>-</ul>--<p>all together, it seems to be a bit more complicated than i imagined, although not completely impossible. a combination of <a href="../todo/hidden_files.html">hidden files</a> and maybe a simpler reduction of the number of requests might though achieve the important goals as well.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Feb 23 12:43:59 2011</span>-</div>----</div>-<div class="comment" id="comment-3a858d56461be358daec636680b590c9">--<div class="comment-subject">--<a href="/forum/relying_on_git_for_numcopies.html#comment-3a858d56461be358daec636680b590c9">relation to [[todo/branching]]</a>--</div>--<div class="inlinecontent">-the non-bare repository issue would go away if this was combined with the "alternate" approach to <a href="../todo/branching.html">branching</a>. (with the "fleshed out proposal" of branching, this would not work at all for lack of shared commits.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Feb 23 17:48:14 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/rsync_over_ssh__63__.html
@@ -1,158 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>rsync over ssh&#63;</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-rsync over ssh&#63;--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="http://git-annex.branchable.com/walkthrough/using_ssh_remotes/">Walkthrough</a> says that when using ssh remotes rsync is used for transfering files. Is rsync used via ssh or unsecure?--- Michael K.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-ebb34f33e254095f9d5fed5485292493">--<div class="comment-subject">--<a href="/forum/rsync_over_ssh__63__.html#comment-ebb34f33e254095f9d5fed5485292493">comment 1</a>--</div>--<div class="inlinecontent">-Everything is done over ssh unless both repos are on the same system (or unless you NFS mount a repo)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sun Mar  6 11:59:37 2011</span>-</div>----</div>-<div class="comment" id="comment-a56c621fa1b2629636d22a79b4ccd49a">--<div class="comment-subject">--<a href="/forum/rsync_over_ssh__63__.html#comment-a56c621fa1b2629636d22a79b4ccd49a">comment 2</a>--</div>--<div class="inlinecontent">-Great! This was the only thing about git-annex which could have kept me from using it. --Michael--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://m-f-k.myopenid.com/">m-f-k [myopenid.com]</a>-</span>---&mdash; <span class="date">Sun Mar  6 12:33:19 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/sparse_git_checkouts_with_annex.html
@@ -1,270 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>sparse git checkouts with annex</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-sparse git checkouts with annex--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I checked in my music collection into git annex (about 25000 files) and i'm really impressed by the performance of git annex (after i've done an git-repack). Now i'm also moving my movies into the same git-annex, but i have the following layout of my disk drives:</p>--<ul>-<li>small raid-1 for important stuff (music, documents), which is also backupped (aka: raid)</li>-<li>big bulk data store (aka: media)</li>-</ul>--<p>In the git-annex the following layout of files is used:</p>--<ul>-<li>documents/ &lt;- on raid</li>-<li>music/ &lt;- on raid</li>-<li>videos/ &lt;- on media</li>-</ul>--<p>Now i didn't simply clone the raid-annex to media, but did an sparse-checkout (possible since version 1.7.0)</p>--<ul>-<li>raid: .git-annex/, documents/ and music</li>-<li>media: .git-annex/, videos/</li>-</ul>--<p>As you can see i have to checkout the .git-annex directory with the file-logs twice which slows down git operations. Everything else works fine until now. git-annex doesn't have any problem, that only a part of the symlinks are present, which is really great. Is there a possibility to sparse checkout the .git-annex directory also? Perhaps splitting the log files in .git-annex/ into N subfolders, corresponding to the toplevel subfolders, like this?</p>--<p>Before:</p>--<pre><code> &#036; ls .git-annex- 00 01 02....-</code></pre>--<p>After:</p>--<pre><code> &#036; ls .git-annex- documents/ music/ videos/- &#036; ls .git-annex/documents- 00 01 02....-</code></pre>--<p>This would make it possible to checkout only the part of the log files which i'm interested in.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-f0734953027e17bd633da14e626a4263">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-f0734953027e17bd633da14e626a4263">comment 1</a>--</div>--<div class="inlinecontent">-<p>That's awesome, I had not heard of git sparse checkouts before. </p>--<p>It does not make sense to tie the log files to the directory of the corresponding files, as then the logs would have to move when the files are moved, which would be a PITA and likely make merging log file changes very complex. Also, of course, multiple files in different locations can point at the same content, which has the same log file. And, to cap it off, git-annex can need to access the log file for a given key without having the slightest idea what file in the repository might point to it, and it would be very expensive to scan the whole repository to find out what that file is in order to lookup the filename of the log file.</p>--<p>The most likely change in git-annex that will make this better is in <a href="../todo/branching.html">this todo item</a> -- but it's unknown how to do it yet.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:32:04 2011</span>-</div>----</div>-<div class="comment" id="comment-500928a61136a4c93253f25ba5d36862">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-500928a61136a4c93253f25ba5d36862">comment 2</a>--</div>--<div class="inlinecontent">-BTW, git-annex unused <em>will</em> have a problem that not all the symlinks are present. It will suggest dropping content belonging to the excluded symlinks.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Apr  7 12:33:30 2011</span>-</div>----</div>-<div class="comment" id="comment-be2b3abdc7d19fd24101ae1b34c1344e">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-be2b3abdc7d19fd24101ae1b34c1344e">comment 3</a>--</div>--<div class="inlinecontent">-So perhaps checking if git-status (or similar) complains about missing files is a possible solution for this?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:31:03 2011</span>-</div>----</div>-<div class="comment" id="comment-35a76359402ff26352260120783b9dfe">--<div class="comment-subject">--<a href="/forum/sparse_git_checkouts_with_annex.html#comment-35a76359402ff26352260120783b9dfe">comment 4</a>--</div>--<div class="inlinecontent">-<p>And something else i've done is, that i symlinked the video/ directory from the media annex to the normal raid annex</p>--<pre><code>ln -s ~/media/annex/video ~/annex-</code></pre>--<p>And it's working out great.</p>--<pre><code>~annex &#036; git annex whereis video/series/episode1.avi-whereis video/series/episode1.avi(1 copy)-        f210b45a-60d3-11e0-b593-3318d96f2520  -- Trantor - Media-ok-</code></pre>--<p>I really like this, perhaps it is a good idea to store all log files in every repo, but maybe there is a possibilitiy to to pack multiple log files into one single file, where not only the time, the present bit and the annex-repository is stored, but also the file key. I don't know if this format would also be merged correctly by the union merge driver.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:54:37 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/unannex_alternatives.html
@@ -1,278 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>unannex alternatives</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-unannex alternatives--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>what is the work flow to get a file that is in git-annex out of there and into git? (current situation: <code>git-annex add</code>ed a bunch of pictures, later found make files in there which i'd rather have in git for proper source code control)</p>--<p>the most intuitive thing to do is <code>git unannex</code>, which at first seemed to do the right thing, but when committing there came the hook and everything was back to where it was before.</p>--<p>i could disable the hook as a workaround, but that doesn't smell like a good work flow.</p>--<p>the <a href="../git-annex.html">man page</a> does warn that <code>unannex</code> is only supposed to be used against unintentional <code>git annex add</code>s (probably meaning that it should be used before something is committed), but the alternatives it suggests (<code>git rm</code> and <code>git annex drop</code>) don't to what i want to do.</p>--<p>am i missing something or is there really no work flow for this? --<span class="createlink">chrysn</span></p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8b1d8928e9fe8835bfa9fb390822eb1f">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-8b1d8928e9fe8835bfa9fb390822eb1f">comment 1</a>--</div>--<div class="inlinecontent">-<p>Git-annex's commit hook does not prevent unannex being used. The file you unannex will not be checked into git anymore and will be a regular file again, not a git-annex symlink. </p>--<p>For example, here's a transcript:</p>--<pre>-joey@gnu:~/tmp&gt;mkdir demo-joey@gnu:~/tmp&gt;cd demo-joey@gnu:~/tmp/demo&gt;git init-Initialized empty Git repository in /home/joey/tmp/demo/.git/-joey@gnu:~/tmp/demo&gt;git annex init demo-init demo ok-joey@gnu:~/tmp/demo&gt;echo hi &gt; file-joey@gnu:~/tmp/demo&gt;git annex add file -add file ok-(Recording state in git...)-joey@gnu:~/tmp/demo&gt;git commit -m add-[master 64cf267] add- 2 files changed, 2 insertions(+), 0 deletions(-)- create mode 100644 .git-annex/WORM:1296607093:3:file.log- create mode 120000 file-joey@gnu:~/tmp/demo&gt;git annex unannex file-unannex file ok-(Recording state in git...)-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git commit-[master 78a09cc] unannex- 2 files changed, 1 insertions(+), 2 deletions(-)- delete mode 120000 file-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git status-# On branch master-# Untracked files:-#   (use "git add ..." to include in what will be committed)-#-#   file-nothing added to commit but untracked files present (use "git add" to track)-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:39:10 2011</span>-</div>----</div>-<div class="comment" id="comment-66f69be9caa5f0196848b579f9273f29">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-66f69be9caa5f0196848b579f9273f29">comment 2</a>--</div>--<div class="inlinecontent">-<p>And following on to my transcript, you can then add the file to git in the regular git way, and it works fine:</p>--<pre>-joey@gnu:~/tmp/demo&gt;git add file-joey@gnu:~/tmp/demo&gt;git commit-[master 225ffc0] added as regular git file, not in annex- 1 files changed, 1 insertions(+), 0 deletions(-)- create mode 100644 file-joey@gnu:~/tmp/demo&gt;ls -l file--rw-r--r-- 1 joey joey 3 Feb  1 20:38 file-joey@gnu:~/tmp/demo&gt;git log file-commit 225ffc048f5af7c0466b3b1fe549a6d5e9a9e9fe-Author: Joey Hess -Date:   Tue Feb 1 20:43:13 2011 -0400--    added as regular git file, not in annex--commit 78a09cc791b875c3b859ca9401e5b6472bf19d08-Author: Joey Hess -Date:   Tue Feb 1 20:38:30 2011 -0400--    unannex--commit 64cf267734adae05c020d9fd4d5a7ff7c64390db-Author: Joey Hess -Date:   Tue Feb 1 20:38:18 2011 -0400--    add-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:41:24 2011</span>-</div>----</div>-<div class="comment" id="comment-8172bdd0bc6e4da58764811260d32d74">--<div class="comment-subject">--<a href="/forum/unannex_alternatives.html#comment-8172bdd0bc6e4da58764811260d32d74">comment 3</a>--</div>--<div class="inlinecontent">-<p>Sorry for all the followups, but I see now that if you unannex, then add the file to git normally, and commit, the hook <em>does</em> misbehave.</p>--<p>This seems to be a bug. git-annex's hook thinks that you have used git annex unlock (or "git annex edit") on the file and are now committing a changed version, and the right thing to do there is to add the new content to the annex and update the symlink accordingly. I'll track this bug over at <a href="../bugs/unannex_vs_unlock_hook_confusion.html">unannex vs unlock hook confusion</a>.</p>--<p>So, committing after unannex, and before checking the file into git in the-usual way, is a workaround. But only if you do a "git commit" to commit-staged changes.</p>--<p>Anyway, this confusing point is fixed in git now!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Feb  1 20:46:00 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/unannex_vs_unlock_hook_confusion.html">bugs/unannex vs unlock hook confusion</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/version_3_upgrade.html
@@ -1,146 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>version 3 upgrade</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-version 3 upgrade--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>after upgrading to git-annex 3, i'm stuck with diverging git-annex branches -- i didn't manage to follow this line in the directions:</p>--<blockquote>-  <p>After this upgrade, you should make sure you include the git-annex branch when git pushing and pulling.</p>-</blockquote>--<p>could you explain how to do that in a littel more detail? git pull seems to only merge master, although i have these <code>.git/config</code> settings:</p>--<pre><code>[branch "git-annex"]-    remote = origin-    merge = git-annex-</code></pre>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-eeeb833ada98804a25afc7e7e71257ac">--<div class="comment-subject">--<a href="/forum/version_3_upgrade.html#comment-eeeb833ada98804a25afc7e7e71257ac">comment 1</a>--</div>--<div class="inlinecontent">-<p>It's ok that <code>git pull</code> does not merge the git-annex branch. You can merge it with <code>git annex merge</code>, or it will be done-automatically when you use other git-annex commands.</p>--<p>If you use <code>git pull</code> and <code>git push</code> without any options, the defaults will make git pull and push the git-annex branch automatically.</p>--<p>But if you're in the habit of doing <code>git push origin master</code>, that won't cause the git-annex branch to be pushed (use <code>git push origin git-annex</code> to manually push it then). Similarly, <code>git pull origin master</code> won't pull it. And also, the <code>remote.origin.fetch</code> setting in <code>.git/config</code> can be modified in ways that make <code>git pull</code> not automatically pull the git-annex branch. So those are the things to avoid after upgrade to v3, basically.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Aug 16 21:33:08 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_command_options_changes.html
@@ -1,233 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: command options changes</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist: command options changes--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Some suggestions for changes to command options:</p>--<ul>-<li><p>--verbose:</p>--<ul>-<li>add alternate: -v</li>-</ul></li>-<li><p>--from:</p>--<ul>-<li>replace with: -s $SOURCE || --source=$SOURCE</li>-</ul></li>-<li><p>--to:</p>--<ul>-<li>replace with: -d $DESTINATION || --destination=$DESTINATION</li>-</ul></li>-<li><p>--force:</p>--<ul>-<li>add alternate: -F-<ul>-<li>"-f" was removed in v0.20110417</li>-<li>since it forces unsafe operations, should be capitalized to reduce chance of accidental usage.</li>-</ul></li>-</ul></li>-</ul>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-81c27bfefe16538939c7ef86c099e724">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-81c27bfefe16538939c7ef86c099e724">comment 1</a>--</div>--<div class="inlinecontent">-<p>--to and --from seem to have different semantics than --source and --destination. Subtle, but still different.</p>--<p>That being said, I am not sure --from and --to are needed at all. Calling the local repo . and all remotes by their name, they are arguably redundant and removing them would make the syntax a lot prettier; mv and cp don't need them, either.</p>--<p>I am not sure changing syntax at this point is considered good style though personally, I wouldn't mind adapting and would actually prefer it over using --to and --from.</p>--<p>-v and -q would be nice.</p>--<p>Richard</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sun Apr 17 19:46:37 2011</span>-</div>----</div>-<div class="comment" id="comment-d75f951efcc458813d7a7c8ac15c7c52">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-d75f951efcc458813d7a7c8ac15c7c52">comment 2</a>--</div>--<div class="inlinecontent">-<p>Let's see..</p>--<ul>-<li><p>-v is already an alias for --verbose</p></li>-<li><p>I don't find --source and --destination as easy to type or as clear as --from or --to.</p></li>-<li><p>-F is fast, so it cannot be used for --force. And I have no desire to make it easy to mistype a short option and enable --force; it can lose data. </p></li>-</ul>--<p>@richard while it would be possible to support some syntax like "git annex copy . remote"; what is it supposed to do if there are local files named foo and bar, and a remotes named foo and bar? Does "git annex copy foo bar" copy file foo to remote bar, or file bar from remote foo? I chose to use --from/--to to specify remotes independant of files to avoid such-ambiguity, which plain old <code>cp</code> doesn't have since it's operating entirely on filesystem objects, not both filesystem objects and abstract remotes.</p>--<p>Seems like nothing to do here. <span class="createlink">done</span> --<span class="createlink">Joey</span></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 19 16:13:10 2011</span>-</div>----</div>-<div class="comment" id="comment-f1173396b59e5275a52bfb796b49c0eb">--<div class="comment-subject">--<a href="/forum/wishlist:_command_options_changes.html#comment-f1173396b59e5275a52bfb796b49c0eb">comment 3</a>--</div>--<div class="inlinecontent">-Good point. scp fixes this by using a colon, but as colons aren't needed in git-annex remotes' names... -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Apr 20 17:28:06 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git-annex_replicate.html
@@ -1,219 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: git-annex replicate</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist: git-annex replicate--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>I'd like to be able to do something like the following:</p>--<ul>-<li>Create encrypted git-annex remotes on a couple of semi-trusted machines - ones that have good connectivity, but non-redundant hardware</li>-<li>set numcopies=3</li>-<li>run <code>git-annex replicate</code> and have git-annex run the appropriate copy commands to make sure every file is on at least 3 machines</li>-</ul>--<p>There would also likely be a <code>git annex rebalance</code> 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.</p>--<p>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:</p>--<ul>-<li>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)</li>-<li>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)</li>-</ul>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-e35414f96a49d2c8473c4b110a8c74f3">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-e35414f96a49d2c8473c4b110a8c74f3">comment 1</a>--</div>--<div class="inlinecontent">-<p>While having remotes redistribute introduces some obvious security concerns, I might use it.</p>--<p>As remotes support a cost factor already, you can basically implement bandwidth through that.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Apr 22 14:27:00 2011</span>-</div>----</div>-<div class="comment" id="comment-e8885e49e8d321df6ddd0feff08ce43d">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-e8885e49e8d321df6ddd0feff08ce43d">comment 2</a>--</div>--<div class="inlinecontent">-<p>Besides the cost values, annex.diskreserve was recently added. (But is not available for special remotes.)</p>--<p>I have held off on adding high-level management stuff like this to git-annex, as it's hard to make it generic enough to cover use cases.</p>--<p>A low-level way to accomplish this would be to have a way for <code>git annex get</code> and/or <code>copy</code> to skip files when <code>numcopies</code> is already satisfied. Then cron jobs could be used.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr 23 12:22:07 2011</span>-</div>----</div>-<div class="comment" id="comment-fd4fd2223d2f38310be477c642a05163">--<div class="comment-subject">--<a href="/forum/wishlist:_git-annex_replicate.html#comment-fd4fd2223d2f38310be477c642a05163">comment 3</a>--</div>--<div class="inlinecontent">-<p>Hmm, so it seems there is almost a way to do this already.</p>--<p>I think the one thing that isn't currently possible is to have 'plain' ssh remotes.. basically something just like the directory remote, but able to take a ssh user@host/path url.  something like sshfs could be used to fake this, but for things like fsck you would want to do the sha1 calculations on the remote host.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo">Justin</a>-</span>---&mdash; <span class="date">Sat Apr 23 13:54:42 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./new_microfeatures.html">new microfeatures</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git_annex_status.html
@@ -1,255 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: git annex status</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist: git annex status--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Ideally, it would look similar to this. And yes, I put "put" in there ;)</p>--<pre><code>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 - &#036;annex_name-Last git push: datetime - &#036;annex_name-Last git annex get: datetime - &#036;annex_name-Last git annex put: datetime - &#036;annex_name-annex %-</code></pre>--<p>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.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-133126826889edc0c4eb8958c63e2385">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-133126826889edc0c4eb8958c63e2385">comment 1</a>--</div>--<div class="inlinecontent">-+1 for this feature, I've been longing for something like this other than rolling my own perl/shell scripts to parse the outputs of "git annex whereis ." to see how many files are on my machine or not.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Fri Apr  8 03:23:08 2011</span>-</div>----</div>-<div class="comment" id="comment-488ff87cb654867d24b402f1d796b030">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-488ff87cb654867d24b402f1d796b030">format, respect working directory</a>--</div>--<div class="inlinecontent">-<p>we could include the information about the current directory as well, if the command is not issued in the local git root directory. to avoid large numbers of similar lines, that could look like this:</p>--<pre><code>Estimated annex size: B MiB (of C MiB; [B/C]%)-Estimated annex size in &#036;PWD: B' MiB (of C' MiB; [B'/C']%)-</code></pre>--<p>with the percentages being replaced with "complete" if really all files are present (and not just many enough for the value to be rounded to 100%).</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Tue Apr 26 08:31:02 2011</span>-</div>----</div>-<div class="comment" id="comment-7cd19708aa54f98cc5ddbdebb2881ea1">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-7cd19708aa54f98cc5ddbdebb2881ea1">comment 3</a>--</div>--<div class="inlinecontent">-<p>What a good idea!</p>--<p>150 lines of haskell later, I have this:</p>--<pre>-# git annex status-supported backends: WORM SHA1 SHA256 SHA512 SHA224 SHA384 SHA1E SHA256E SHA512E SHA224E SHA384E URL-supported remote types: git S3 bup directory rsync hook-local annex keys: 32-local annex size: 58 megabytes-total annex keys: 38158-total annex size: 6 terabytes (but 1632 keys have unknown size)-backend usage: -    SHA1: 1789-    WORM: 36369-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon May 16 21:15:10 2011</span>-</div>----</div>-<div class="comment" id="comment-a42bad3fb1866788e6e260bf7cfeb207">--<div class="comment-subject">--<a href="/forum/wishlist:_git_annex_status.html#comment-a42bad3fb1866788e6e260bf7cfeb207">status of other remotes?</a>--</div>--<div class="inlinecontent">-using the location tracking information, it should be possible to show the status of other remotes as well. what about supporting <code>--from=...</code> or <code>--all</code>? (thus, among other things, one could determine if a remote has a complete checkout.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Wed Jun 15 04:39:24 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git_backend_for_git-annex.html
@@ -1,260 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: git backend for git-annex</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist: git backend for git-annex--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>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.</p>--<p>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 <em>really</em> like to have proper version tracking for many of my files. Thus...</p>--<p>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.</p>--<p>-- RichiH</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-8a052cfa0e22ea3aafcc0ff9e4ecf373">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-8a052cfa0e22ea3aafcc0ff9e4ecf373">comment 1</a>--</div>--<div class="inlinecontent">-<p>Indeed, see <a href="../todo/add_a_git_backend.html">add a git backend</a>, where you and I have already discussed this idea. :)</p>--<p>With the new support for special remotes, which will be used by S3, it would be possible to make such a git repo, using bup, be a special remote. I think it would be pretty easy to implement now. Not a priority for me though.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 28 12:01:30 2011</span>-</div>----</div>-<div class="comment" id="comment-4943ec11d1517bcfd660fd1896129fff">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-4943ec11d1517bcfd660fd1896129fff">comment 2</a>--</div>--<div class="inlinecontent">-<p>On the plus side, the past me wanted exactly what I had in mind.</p>--<p>On the meh side, I really forgot about this conversation :/</p>--<p>When you say this todo is not a priority, does that mean there's no ETA at all and that it will most likely sleep for a long time? Or the almost usual "what the heck, I will just wizard it up in two lines of haskell"?</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 13:47:38 2011</span>-</div>----</div>-<div class="comment" id="comment-f3a69fc1e95615f10209cf1d4fe1efc5">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-f3a69fc1e95615f10209cf1d4fe1efc5">comment 3</a>--</div>--<div class="inlinecontent">-<p>Probably more like 150 lines of haskell. Maybe just 50 lines if the bup repository is required to be on the same computer as the git-annex repository.</p>--<p>Since I do have some repositories where I'd appreciate this level of assurance that data not be lost, it's mostly a matter of me finding a free day.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:05:13 2011</span>-</div>----</div>-<div class="comment" id="comment-aa1c17542050206423be24bb899334c2">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-aa1c17542050206423be24bb899334c2">comment 4</a>--</div>--<div class="inlinecontent">-Personally, I would not mind a requirement to keep a local bup repo. I wouldn't want my data to to unncessarily complex setups, anyway. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Mon Mar 28 16:45:35 2011</span>-</div>----</div>-<div class="comment" id="comment-f4000340d1c552e6c4a5ecfffdd37f82">--<div class="comment-subject">--<a href="/forum/wishlist:_git_backend_for_git-annex.html#comment-f4000340d1c552e6c4a5ecfffdd37f82">comment 5</a>--</div>--<div class="inlinecontent">-My estimates were pretty close -- the new bup special remote type took 133 lines of code, and 2 hours to write. A testament to the flexibility of the special remote infrastructure. :)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Apr  8 16:59:37 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_support_for_more_ssh_urls_.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: support for more ssh urls </title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist: support for more ssh urls --</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex does not seem to support all kinds of urls that git does.</p>--<blockquote>-  <p>Please use <a href="../bugs.html">bugs</a> for bug reports. Moved <span class="createlink">there</span>.-  --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>And now all fixed! --<span class="createlink">Joey</span> </p>-  </blockquote>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:alias_system.html
@@ -1,97 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist:alias system</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-wishlist:alias system--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>To implement things like my custom <code>git annex-push</code> without the dash, i.e. <code>git annex push</code>, an alias system for git-annex would be nice.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/forum/working_without_git-annex_commits.html
@@ -1,118 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>working without git-annex commits</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../forum.html">forum</a>/ --</span>-<span class="title">-working without git-annex commits--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Is it possible to use git-annex without having <a href="../location_tracking.html">location tracking</a> commits in the style of "got a video I want to rewatch on the plane" or "freed up space" in the main tree?</p>--<p>I consider these changes to be volatile, and irrelevant to the archive history. While they are unproblematic when it comes to merging, they make the commit tree rather complicated, especially with multiple users (as opposed to a single user managing his files on an external disk, a server and his laptop). Some users might even want to contribute to a shared repository without reporting on what they checked out.</p>--<p>As a minimal solution, I configured a repository to <code>.gitignore</code> <code>.git-annex/*:*.log</code>, but even when using modes that do not require that information (<code>git annex copy --from</code> instead of <code>git annex get</code>), that failes when git-annex tried to git-add ignored files.</p>--<p>A more elaborate solution might be to keep location tracking information in a branch on its own (as suggested in <a href="../todo/branching.html">branching</a>), keeping the main tree clean of such commits. A stealth user could then configure that branch to never be pushed. (Alternatively, if git-annex respects .gitignore and doesn't try to check in changes on ignored files, he could locally <code>.gitignore</code> <code>.git-annex/*:*.log</code>.)</p>--<blockquote>-  <p>A stealth user can simply avoid pushing, and so keep their repository -  in a forked state, that can still pull changes from origin.</p>-  -  <p>Beyond that, <a href="../todo/branching.html">branching</a> is the best solution.</p>-  -  <p>I don't think that gitignoring the log files is a good plan, because-  if the files are left modified and uncommitted, git will not be able to -  merge other changes it pulls. The automerging of log files only works-  if any local changes to them have been committed.</p>-  -  <p>It would be possible to add a knob that-  simply blocks all local modifications to the log files. --<span class="createlink">Joey</span></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/future_proofing.html
@@ -1,137 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>future proofing</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-future proofing--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Imagine putting a git-annex drive in a time capsule. In 20, or 50, or 100-years, you'd like its contents to be as accessible as possible to whoever-digs it up.</p>--<p>This is a hard problem. git-annex cannot completly solve it, but it does-its best to not contribute to the problem. Here are some aspects of the-problem:</p>--<ul>-<li><p>How are files accessed? Git-annex carefully adds minimal complexity-to access files in a repository. Nothing needs to be done to extract-files from the repository; they are there on disk in the usual way,-with just some symlinks pointing at the annexed file contents.-Neither git-annex nor git is needed to get at the file contents.</p>--<p>(Also, git-annex provides an "uninit" command that moves everything out-of the annex, if you should ever want to stop using it.)</p></li>-<li><p>What file formats are used? Will they still be readable? To deal with-this, it's best to stick to plain text files, and the most common-image, sound, etc formats. Consider storing the same content in multiple-formats.</p></li>-<li><p>What filesystem is used on the drive? Will that filesystem still be-available?</p></li>-<li><p>What is the hardware interface of the drive? Will hardware still exist-to talk to it?</p></li>-<li><p>What if some of the data is damaged? git-annex facilitates storing a-configurable number of <a href="./copies.html">copies</a> of the file contents. The metadata-about your files is stored in git, and so every clone of the repository-means another copy of that is stored. Also, git-annex uses filenames-for the data that encode everything needed to match it back to the-metadata. So if a filesystem is badly corrupted and all your annexed-files end up in <code>lost+found</code>, they can easily be lifted back out into-another clone of the repository. Even if the filenames are lost,-it's possible to <a href="./walkthrough/recover_data_from_lost+found.html">recover data from lost+found</a>.</p></li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./use_case/Bob.html">use case/Bob</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-annex-shell.html
@@ -1,169 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex-shell</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-git-annex-shell--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h1>NAME</h1>--<p>git-annex-shell - Restricted login shell for git-annex only SSH access</p>--<h1>SYNOPSIS</h1>--<p>git-annex-shell [-c] command [params ...]</p>--<h1>DESCRIPTION</h1>--<p>git-annex-shell is a restricted shell, similar to git-shell, which-can be used as a login shell for SSH accounts.</p>--<p>Since its syntax is identical to git-shell's, it can be used as a drop-in-replacement anywhere git-shell is used. For example it can be used as a -user's restricted login shell.</p>--<h1>COMMANDS</h1>--<p>Any command not listed below is passed through to git-shell.</p>--<ul>-<li><p>configlist directory</p>--<p>This outputs a subset of the git configuration, in the same form as-<code>git config --list</code></p></li>-<li><p>inannex directory [key ...]</p>--<p>This checks if all specified keys are present in the annex, -and exits zero if so.</p></li>-<li><p>dropkey directory [key ...]</p>--<p>This drops the annexed data for the specified keys.</p></li>-<li><p>recvkey directory key</p>--<p>This runs rsync in server mode to receive the content of a key,-and stores the content in the annex.</p></li>-<li><p>sendkey directory key</p>--<p>This runs rsync in server mode to transfer out the content of a key.</p></li>-</ul>--<h1>OPTIONS</h1>--<p>Same as git-annex or git-shell, depending on the command being run.</p>--<p>Note that the directory parameter should be an absolute path, otherwise-it is assumed to be relative to the user's home directory. Also the-first "/~/" or "/~user/" is expanded to the specified home directory.</p>--<h1>SEE ALSO</h1>--<p><a href="./git-annex.html">git-annex</a>(1)</p>--<p>git-shell(1)</p>--<h1>AUTHOR</h1>--<p>Joey Hess <a href="mailto:joey@kitenet.net">&#106;&#x6F;&#101;&#121;&#64;&#107;i&#x74;&#101;&#110;e&#x74;&#x2E;&#110;&#x65;&#x74;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: this page is automatically made into a man page via <a href="http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=mdwn2man;hb=HEAD">mdwn2man</a>.  Edit with care</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./bare_repositories.html">bare repositories</a>--<a href="./special_remotes/bup.html">special remotes/bup</a>--<a href="./walkthrough/using_ssh_remotes.html">walkthrough/using ssh remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-annex.html
@@ -1,600 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-git-annex--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h1>NAME</h1>--<p>git-annex - manage files with git, without checking their contents in</p>--<h1>SYNOPSIS</h1>--<p>git annex command [params ...]</p>--<h1>DESCRIPTION</h1>--<p>git-annex allows managing files with git, without checking the file-contents into git. While that may seem paradoxical, it is useful when-dealing with files larger than git can currently easily handle, whether due-to limitations in memory, checksumming time, or disk space.</p>--<p>Even without file content tracking, being able to manage files with git,-move files around and delete files with versioned directory trees, and use-branches and distributed clones, are all very handy reasons to use git. And-annexed files can co-exist in the same git repository with regularly-versioned files, which is convenient for maintaining documents, Makefiles,-etc that are associated with annexed files but that benefit from full-revision control.</p>--<p>When a file is annexed, its content is moved into a key-value store, and-a symlink is made that points to the content. These symlinks are checked into-git and versioned like regular files. You can move them around, delete -them, and so on. Pushing to another git repository will make git-annex-there aware of the annexed file, and it can be used to retrieve its-content from the key-value store.</p>--<h1>EXAMPLES</h1>--<pre><code># git annex get video/hackity_hack_and_kaxxt.mov-get video/_why_hackity_hack_and_kaxxt.mov (not available)-  I was unable to access these remotes: 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 remote add usbdrive /media/usb-# git annex get video/hackity_hack_and_kaxxt.mov-get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok-# git commit -a -m "got a video I want to rewatch on the plane"--# git annex add iso-add iso/Debian_5.0.iso ok-# git commit -a -m "saving Debian CD for later"--# git annex drop iso/Debian_4.0.iso-drop iso/Debian_4.0.iso ok-# git commit -a -m "freed up space"--# git annex move iso --to=usbdrive-move iso/Debian_5.0.iso (moving to usbdrive...) ok-</code></pre>--<h1>COMMANDS</h1>--<p>Like many git commands, git-annex can be passed a path that -is either a file or a directory. In the latter case it acts on all relevant-files in the directory. If no path is specified, most git-annex commands-default to acting on all relevant files in the current directory (and-subdirectories).</p>--<p>Many git-annex commands will stage changes for later <code>git commit</code> by you.</p>--<ul>-<li><p>add [path ...]</p>--<p>Adds files in the path to the annex. Files that are already checked into-git, or that git has been configured to ignore will be silently skipped.</p></li>-<li><p>get [path ...]</p>--<p>Makes the content of annexed files available in this repository. This-will involve copying them from another repository, or downloading them,-or transferring them from some kind of key-value store.</p></li>-<li><p>drop [path ...]</p>--<p>Drops the content of annexed files from this repository. </p>--<p>git-annex may refuse to drop content if it does not think-it is safe to do so, typically because of the setting of annex.numcopies.</p></li>-<li><p>move [path ...]</p>--<p>When used with the --from option, moves the content of annexed files-from the specified repository to the current one.</p>--<p>When used with the --to option, moves the content of annexed files from-the current repository to the specified one.</p></li>-<li><p>copy [path ...]</p>--<p>When used with the --from option, copies the content of annexed files-from the specified repository to the current one.</p>--<p>When used with the --to option, copies the content of annexed files from-the current repository to the specified one.</p>--<p>To avoid contacting the remote to check if it has every file, specify --fast</p></li>-<li><p>unlock [path ...]</p>--<p>Normally, the content of annexed files is protected from being changed.-Unlocking a annexed file allows it to be modified. This replaces the-symlink for each specified file with a copy of the file's content.-You can then modify it and <code>git annex add</code> (or <code>git commit</code>) to inject-it back into the annex.</p></li>-<li><p>edit [path ...]</p>--<p>This is an alias for the unlock command. May be easier to remember,-if you think of this as allowing you to edit an annexed file.</p></li>-<li><p>lock [path ...]</p>--<p>Use this to undo an unlock command if you don't want to modify-the files, or have made modifications you want to discard.</p></li>-<li><p>init [description]</p>--<p>Until a repository (or one of its remotes) has been initialized,-git-annex will refuse to operate on it, to avoid accidentially-using it in a repository that was not intended to have an annex.</p>--<p>It's useful, but not mandatory, to initialize each new clone-of a repository with its own description.</p></li>-<li><p>describe repository description</p>--<p>Changes the description of a repository.</p>--<p>The repository to describe can be specified by git remote name or-by uuid. To change the description of the current repository, use-"."</p></li>-<li><p>initremote name [param=value ...]</p>--<p>Sets up a special remote. The remote's-configuration is specified by the parameters. If a remote-with the specified name has already been configured, its configuration-is modified by any values specified. In either case, the remote will be-added to <code>.git/config</code>.</p>--<p>Example Amazon S3 remote:</p>--<p>initremote mys3 type=S3 encryption=none datacenter=EU</p></li>-<li><p>fsck [path ...]</p>--<p>With no parameters, this command checks the whole annex for consistency,-and warns about or fixes any problems found.</p>--<p>With parameters, only the specified files are checked.</p>--<p>To avoid expensive checksum calculations, specify --fast</p></li>-<li><p>unused</p>--<p>Checks the annex for data that does not correspond to any files present-in the currently checked out branch, and prints a numbered list of the data.</p>--<p>To only show unused temp and bad files, specify --fast</p>--<p>To check data on a remote that does not correspond to any files present-on the locally checked out branch, specify --from.</p></li>-<li><p>dropunused [number ...]</p>--<p>Drops the data corresponding to the numbers, as listed by the last-<code>git annex unused</code></p>--<p>To drop the data from a remote, specify --from.</p></li>-<li><p>find [path ...]</p>--<p>Outputs a list of annexed files whose content is currently present.</p>--<p>With no parameters, defaults to finding all files in the current directory-and its subdirectories.</p></li>-<li><p>whereis [path ...]</p>--<p>Displays a list of repositories known to contain the content of the-specified file or files.</p></li>-<li><p>merge</p>--<p>Automatically merges any changes from remotes into the git-annex branch.-While git-annex mostly handles keeping the git-annex branch merged-automatically, if you find you are unable to push the git-annex branch-due non-fast-forward, this will fix it.</p></li>-<li><p>status</p>--<p>Displays some statistics and other information, including how much data-is in the annex.</p>--<p>Some of the statistics can take a while to generate, and those-come last. You can ctrl-c this command once it's displayed the-information you wanted to see. Or, use --fast to only display-the first, fast(ish) statistics.</p></li>-<li><p>migrate [path ...]</p>--<p>Changes the specified annexed files to use the default key-value backend-(or the one specified with --backend). Only files whose content-is currently available are migrated.</p>--<p>Note that the content is also still available using the old key after-migration. Use <code>git annex unused</code> to find and remove the old key.</p>--<p>Normally, nothing will be done to files already using the new backend.-However, if a backend changes the information it uses to construct a key,-this can also be used to migrate files to use the new key format.</p></li>-<li><p>map</p>--<p>Helps you keep track of your repositories, and the connections between them,-by going out and looking at all the ones it can get to, and generating a-Graphviz file displaying it all. If the <code>dot</code> command is available, it is-used to display the file to your screen (using x11 backend).</p>--<p>Note that this only connects to hosts that the host it's run on can-directly connect to. It does not try to tunnel through intermediate hosts.-So it might not show all connections between the repositories in the network.</p>--<p>Also, if connecting to a host requires a password, you might have to enter-it several times as the map is being built.</p>--<p>Note that this subcommand can be used to graph any git repository; it-is not limited to git-annex repositories.</p></li>-<li><p>unannex [path ...]</p>--<p>Use this to undo an accidental <code>git annex add</code> command. You can use-<code>git annex unannex</code> to move content out of the annex at any point,-even if you've already committed it.</p>--<p>This is not the command you should use if you intentionally annexed a-file and don't want its contents any more. In that case you should use-<code>git annex drop</code> instead, and you can also <code>git rm</code> the file.</p>--<p>In --fast mode, this command leaves content in the annex, simply making-a hard link to it.</p></li>-<li><p>uninit</p>--<p>Use this to stop using git annex. It will unannex every file in the-repository, and remove all of git-annex's other data, leaving you with a-git repository plus the previously annexed files.</p></li>-<li><p>fix [path ...]</p>--<p>Fixes up symlinks that have become broken to again point to annexed content.-This is useful to run if you have been moving the symlinks around.</p></li>-<li><p>pre-commit [path ...]</p>--<p>Fixes up symlinks that are staged as part of a commit, to ensure they-point to annexed content. Also handles injecting changes to unlocked-files into the annex.</p>--<p>This is meant to be called from git's pre-commit hook. <code>git annex init</code>-automatically creates a pre-commit hook using this.</p></li>-<li><p>trust [repository ...]</p>--<p>Records that a repository is trusted to not unexpectedly lose-content. Use with care.</p>--<p>To trust the current repository, use "."</p></li>-<li><p>untrust [repository ...]</p>--<p>Records that a repository is not trusted and could lose content-at any time.</p></li>-<li><p>semitrust [repository ...]</p>--<p>Returns a repository to the default semi trusted state.</p></li>-<li><p>addurl [url ...]</p>--<p>Downloads each url to a file, which is added to the annex.</p>--<p>To avoid immediately downloading the url, specify --fast</p></li>-<li><p>fromkey file</p>--<p>This plumbing-level command can be used to manually set up a file-in the git repository to link to a specified key.</p></li>-<li><p>dropkey [key ...]</p>--<p>This plumbing-level command drops the annexed data for the specified-keys from this repository.</p>--<p>This can be used to drop content for arbitrary keys, which do not need-to have a file in the git repository pointing at them.</p>--<p>Example:</p>--<p>git annex dropkey SHA1-s10-7da006579dd64330eb2456001fd01948430572f2</p></li>-<li><p>setkey file</p>--<p>This plumbing-level command sets the annexed data for a key to the-content of the specified file, and then removes the file.</p>--<p>Example:</p>--<p>git annex setkey --key=WORM-s3-m1287765018--file /tmp/file</p></li>-<li><p>upgrade</p>--<p>Upgrades the repository to current layout.</p></li>-<li><p>version</p>--<p>Shows the version of git-annex, as well as repository version information.</p></li>-</ul>--<h1>OPTIONS</h1>--<ul>-<li><p>--force</p>--<p>Force unsafe actions, such as dropping a file's content when no other-source of it can be verified to still exist, or adding ignored files.-Use with care.</p></li>-<li><p>--fast</p>--<p>Enables less expensive, but also less thorough versions of some commands.-What is avoided depends on the command.</p></li>-<li><p>--quiet</p>--<p>Avoid the default verbose display of what is done; only show errors-and progress displays.</p></li>-<li><p>--verbose</p>--<p>Enable verbose display.</p></li>-<li><p>--json</p>--<p>Rather than the normal output, generate JSON. This is intended to be-parsed by programs that use git-annex. Each line of output is a JSON-object.</p></li>-<li><p>--debug</p>--<p>Show debug messages.</p></li>-<li><p>--from=repository</p>--<p>Specifies a repository that content will be retrieved from, or that-should otherwise be acted on.</p>--<p>It should be specified using the name of a configured remote.</p></li>-<li><p>--to=repository</p>--<p>Specifies a repository that content will be sent to.</p>--<p>It should be specified using the name of a configured remote.</p></li>-<li><p>--exclude=glob</p>--<p>Skips files matching the glob pattern. The glob is matched relative to-the current directory.</p>--<p>This option can be specified multiple times.</p></li>-<li><p>--numcopies=n</p>--<p>Overrides the <code>annex.numcopies</code> setting, forcing git-annex to ensure the-specified number of copies exist.</p></li>-<li><p>--trust=repository</p></li>-<li>--semitrust=repository</li>-<li><p>--untrust=repository</p>--<p>Overrides trust settings for a repository. May be specified more than once.</p>--<p>The repository should be specified using the name of a configured remote,-or the UUID or description of a repository.</p></li>-<li><p>--backend=name</p>--<p>Specifies which key-value backend to use. This can be used when-adding a file to the annex, or migrating a file. Once files-are in the annex, their backend is known and this option is not-necessary.</p></li>-<li><p>--key=name</p>--<p>Specifies a key to operate on.</p></li>-<li><p>-c name=value</p>--<p>Used to override git configuration settings. May be specified multiple times.</p></li>-</ul>--<h1>CONFIGURATION</h1>--<p>Like other git commands, git-annex is configured via <code>.git/config</code>.-Here are all the supported configuration settings.</p>--<ul>-<li><p><code>annex.uuid</code></p>--<p>A unique UUID for this repository (automatically set).</p></li>-<li><p><code>annex.numcopies</code></p>--<p>Number of copies of files to keep across all repositories. (default: 1)</p></li>-<li><p><code>annex.backends</code></p>--<p>Space-separated list of names of the key-value backends to use. -The first listed is used to store new files by default. </p></li>-<li><p><code>remote.&lt;name&gt;.annex-cost</code></p>--<p>When determining which repository to-transfer annexed files from or to, ones with lower costs are preferred.-The default cost is 100 for local repositories, and 200 for remote-repositories.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-cost-command</code></p>--<p>If set, the command is run, and the number it outputs is used as the cost.-This allows varying the cost based on eg, the current network. The-cost-command can be any shell command line.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-ignore</code></p>--<p>If set to <code>true</code>, prevents git-annex-from using this remote by default. (You can still request it be used-by the --from and --to options.)</p>--<p>This is, for example, useful if the remote is located somewhere-without git-annex-shell. (For example, if it's on GitHub).-Or, it could be used if the network connection between two-repositories is too slow to be used normally.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-uuid</code></p>--<p>git-annex caches UUIDs of remote repositories here.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-ssh-options</code></p>--<p>Options to use when using ssh to talk to this remote.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-rsync-options</code></p>--<p>Options to use when using rsync-to or from this remote. For example, to force ipv6, and limit-the bandwidth to 100Kbyte/s, set it to "-6 --bwlimit 100"</p></li>-<li><p><code>remote.&lt;name&gt;.annex-bup-split-options</code></p>--<p>Options to pass to bup split when storing content in this remote.-For example, to limit the bandwidth to 100Kbye/s, set it to "--bwlimit 100k"-(There is no corresponding option for bup join.)</p></li>-<li><p><code>annex.ssh-options</code>, <code>annex.rsync-options</code>, <code>annex.bup-split-options</code></p>--<p>Default ssh, rsync, and bup options to use if a remote does not have-specific options.</p></li>-<li><p><code>annex.diskreserve</code></p>--<p>Amount of disk space to reserve. Disk space is checked when transferring-content to avoid running out, and additional free space can be reserved-via this option, to make space for more important content (such as git-commit logs). Can be specified with any commonly used units, for example,-"0.5 gb" or "100 KiloBytes"</p>--<p>The default reserve is 1 megabyte.</p></li>-<li><p><code>annex.version</code></p>--<p>Automatically maintained, and used to automate upgrades between versions.</p></li>-<li><p><code>remote.&lt;name&gt;.buprepo</code></p>--<p>Used by bup special remotes, this configures-the location of the bup repository to use. Normally this is automaticaly-set up by <code>git annex initremote</code>, but you can change it if needed.</p></li>-<li><p><code>remote.&lt;name&gt;.directory</code></p>--<p>Used by directory special remotes, this configures-the location of the directory where annexed files are stored for this-remote. Normally this is automaticaly set up by <code>git annex initremote</code>,-but you can change it if needed.</p></li>-<li><p><code>remote.&lt;name&gt;.s3</code></p>--<p>Used to identify Amazon S3 special remotes.-Normally this is automaticaly set up by <code>git annex initremote</code>.</p></li>-</ul>--<h1>CONFIGURATION VIA .gitattributes</h1>--<p>The key-value backend used when adding a new file to the annex can be-configured on a per-file-type basis via <code>.gitattributes</code> files. In the file,-the <code>annex.backend</code> attribute can be set to the name of the backend to-use. For example, this here's how to use the WORM backend by default,-but the SHA1 backend for ogg files:</p>--<pre><code>* annex.backend=WORM-*.ogg annex.backend=SHA1-</code></pre>--<p>The numcopies setting can also be configured on a per-file-type basis via-the <code>annex.numcopies</code> attribute in <code>.gitattributes</code> files.-For example, this makes two copies be needed for wav files:</p>--<pre><code>*.wav annex.numcopies=2-</code></pre>--<h1>FILES</h1>--<p>These files are used by git-annex, in your git repository:</p>--<p><code>.git/annex/objects/</code> contains the annexed file contents that are currently-available. Annexed files in your git repository symlink to that content.</p>--<h1>SEE ALSO</h1>--<p>Most of git-annex's documentation is available on its web site, -<a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>If git-annex is installed from a package, a copy of its documentation-should be included, in, for example, <code>/usr/share/doc/git-annex/</code></p>--<h1>AUTHOR</h1>--<p>Joey Hess <a href="mailto:joey@kitenet.net">&#x6A;&#x6F;e&#121;&#64;&#107;&#105;&#x74;&#x65;&#110;&#x65;t&#46;&#x6E;&#101;&#116;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: this page is automatically made into a man page via <a href="http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=mdwn2man;hb=HEAD">mdwn2man</a>.  Edit with care</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./forum/unannex_alternatives.html">forum/unannex alternatives</a>--<a href="./git-annex-shell.html">git-annex-shell</a>--<a href="./index.html">index</a>--<a href="./walkthrough/using_ssh_remotes.html">walkthrough/using ssh remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 16:53:33 2011</span>-<!-- Created <span class="date">Sat Sep 17 16:53:33 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-union-merge.html
@@ -1,133 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-union-merge</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-git-union-merge--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h1>NAME</h1>--<p>git-union-merge - Join branches together using a union merge</p>--<h1>SYNOPSIS</h1>--<p>git union-merge ref ref newref</p>--<h1>DESCRIPTION</h1>--<p>Does a union merge between two refs, storing the result in the-specified newref.</p>--<p>The union merge will always succeed, but assumes that files can be merged-simply by concacenating together lines from all the oldrefs, in any order.-So, this is useful only for branches containing log-type data.</p>--<p>That this does not touch the checked out working copy. It operates-entirely on git refs and branches.</p>--<h1>EXAMPLE</h1>--<pre><code>git union-merge git-annex origin/git-annex refs/heads/git-annex -</code></pre>--<p>Merges the current git-annex branch, and a version from origin,-storing the result in the git-annex branch.</p>--<h1>BUGS</h1>--<p>File modes are not currently merged.</p>--<h1>AUTHOR</h1>--<p>Joey Hess <a href="mailto:joey@kitenet.net">&#106;o&#x65;y&#64;&#107;&#x69;&#x74;&#x65;&#x6E;&#101;&#116;&#46;n&#101;&#116;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: this page is automatically made into a man page via <a href="http://git.ikiwiki.info/?p=ikiwiki;a=blob;f=mdwn2man;hb=HEAD">mdwn2man</a>.  Edit with care</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/ikiwiki.js
@@ -1,54 +0,0 @@-// ikiwiki's javascript utility function library--var hooks;--// Run onload as soon as the DOM is ready, if possible.-// gecko, opera 9-if (document.addEventListener) {-	document.addEventListener("DOMContentLoaded", run_hooks_onload, false);-}-// other browsers-window.onload = run_hooks_onload;--var onload_done = 0;--function run_hooks_onload() {-	// avoid firing twice-	if (onload_done)-		return;-	onload_done = true;--	run_hooks("onload");-}--function run_hooks(name) {-	if (typeof(hooks) != "undefined") {-		for (var i = 0; i < hooks.length; i++) {-			if (hooks[i].name == name) {-				hooks[i].call();-			}-		}-	}-}--function hook(name, call) {-	if (typeof(hooks) == "undefined")-		hooks = new Array;-	hooks.push({name: name, call: call});-}--function getElementsByClass(cls, node, tag) {-        if (document.getElementsByClass)-                return document.getElementsByClass(cls, node, tag);-        if (! node) node = document;-        if (! tag) tag = '*';-        var ret = new Array();-        var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)");-        var els = node.getElementsByTagName(tag);-        for (i = 0; i < els.length; i++) {-                if ( pattern.test(els[i].className) ) {-                        ret.push(els[i]);-                }-        }-        return ret;-}
− debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/relativedate.js
@@ -1,75 +0,0 @@-// Causes html elements in the 'relativedate' class to be displayed-// as relative dates. The date is parsed from the title attribute, or from-// the element content.--var dateElements;--hook("onload", getDates);--function getDates() {-	dateElements = getElementsByClass('relativedate');-	for (var i = 0; i < dateElements.length; i++) {-		var elt = dateElements[i];-		var title = elt.attributes.title;-		var d = new Date(title ? title.value : elt.innerHTML);-		if (! isNaN(d)) {-			dateElements[i].date=d;-			elt.title=elt.innerHTML;-		}-	}--	showDates();-}--function showDates() {-	for (var i = 0; i < dateElements.length; i++) {-		var elt = dateElements[i];-		var d = elt.date;-		if (! isNaN(d)) {-			elt.innerHTML=relativeDate(d);-		}-	}-	setTimeout(showDates,30000); // keep updating every 30s-}--var timeUnits = [-	{ unit: 'year',		seconds: 60 * 60 * 24 * 364 },-	{ unit: 'month',	seconds: 60 * 60 * 24 * 30 },-	{ unit: 'day',		seconds: 60 * 60 * 24 },-	{ unit: 'hour',		seconds: 60 * 60 },-	{ unit: 'minute',	seconds: 60 },-];--function relativeDate(date) {-	var now = new Date();-	var offset = date.getTime() - now.getTime();-	var seconds = Math.round(Math.abs(offset) / 1000);--	// hack to avoid reading just in the future if there is a minor-	// amount of clock slip-	if (offset >= 0 && seconds < 30 * 60 * 60) {-		return "just now";-	}--	var ret = "";-	var shown = 0;-	for (i = 0; i < timeUnits.length; i++) {-		if (seconds >= timeUnits[i].seconds) {-			var num = Math.floor(seconds / timeUnits[i].seconds);-			seconds -= num * timeUnits[i].seconds;-			if (ret)-				ret += "and ";-			ret += num + " " + timeUnits[i].unit + (num > 1 ? "s" : "") + " ";--			if (++shown == 2)-				break;-		}-		else if (shown)-			break;-	}--	if (! ret)-		ret = "less than a minute "--	return ret + (offset < 0 ? "ago" : "from now");-}
− debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/toggle.js
@@ -1,29 +0,0 @@-// Uses CSS to hide toggleables, to avoid any flashing on page load. The-// CSS is only emitted after it tests that it's going to be able-// to show the toggleables.-if (document.getElementById && document.getElementsByTagName && document.createTextNode) {-	document.write('<style type="text/css">div.toggleable { display: none; }</style>');-	hook("onload", inittoggle);-}--function inittoggle() {-	var as = getElementsByClass('toggle');-	for (var i = 0; i < as.length; i++) {-		var id = as[i].href.match(/#(\w.+)/)[1];-		if (document.getElementById(id).className == "toggleable")-			document.getElementById(id).style.display="none";-		as[i].onclick = function() {-			toggle(this);-			return false;-		}-	}-}--function toggle(s) {-	var id = s.href.match(/#(\w.+)/)[1];-	style = document.getElementById(id).style;-	if (style.display == "none")-		style.display = "block";-	else-		style.display = "none";-}
− debian/git-annex/usr/share/doc/git-annex/html/index.html
@@ -1,226 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--</span>-<span class="title">-git-annex--</span>-</span>--</div>------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><strong><a href="./download.html">download</a></strong></li>-<li><a href="./install.html">install</a></li>-<li><a href="./bugs.html">bugs</a></li>-<li><a href="./todo.html">todo</a></li>-<li><a href="./forum.html">forum</a></li>-<li><a href="./comments.html">comments</a></li>-<li><a href="./contact.html">contact</a></li>-<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>-</ul>--<p><a href="./news.html">News</a>:</p>--<p><small></p>----<p></small></p>--<p><a href="./feeds.html">Feeds</a>:</p>--<p><small></p>----<p></small></p>--</div>---<div id="pagebody">--<div id="content">-<p>git-annex allows managing files with git, without checking the file-contents into git. While that may seem paradoxical, it is useful when-dealing with files larger than git can currently easily handle, whether due-to limitations in memory, checksumming time, or disk space.</p>--<p>Even without file content tracking, being able to manage files with git,-move files around and delete files with versioned directory trees, and use-branches and distributed clones, are all very handy reasons to use git. And-annexed files can co-exist in the same git repository with regularly-versioned files, which is convenient for maintaining documents, Makefiles,-etc that are associated with annexed files but that benefit from full-revision control.</p>--<p>To get a feel for it, see the <a href="./walkthrough.html">walkthrough</a>.</p>--<table>-<tr>-<td width="50%" valign="top"><h3>use case: The Archivist</h3>--<p>Bob has many drives to archive his data, most of them kept offline, in a-safe place.</p>--<p>With git-annex, Bob has a single directory tree that includes all-his files, even if their content is being stored offline. He can-reorganize his files using that tree, committing new versions to git,-without worry about accidentally deleting anything. </p>--<p>When Bob needs access to some files, git-annex can tell him which drive(s)-they're on, and easily make them available. Indeed, every drive knows what-is on every other drive. <br />-<small><a href="./location_tracking.html">more about location tracking</a></small></p>--<p>Bob thinks long-term, and so he appreciates that git-annex uses a simple-repository format. He knows his files will be accessible in the future-even if the world has forgotten about git-annex and git. <br />-<small><a href="./future_proofing.html">more about future-proofing</a></small></p>--<p>Run in a cron job, git-annex adds new files to archival drives at night. It-also helps Bob keep track of intentional, and unintentional copies of-files, and logs information he can use to decide when it's time to duplicate-the content of old drives. <br />-<small><a href="./copies.html">more about backup copies</a></small></p>----</td>-<td width="50%" valign="top"><h3>use case: The Nomad</h3>--<p>Alice is always on the move, often with her trusty netbook and a small-handheld terabyte USB drive, or a smaller USB keydrive. She has a server-out there on the net. She stores data, encrypted in the Cloud.</p>--<p>All these things can have different files on them, but Alice no longer-has to deal with the tedious process of keeping them manually in sync,-or remembering where she put a file. git-annex manages all these data-sources as if they were git remotes. <br />-<small><a href="./special_remotes.html">more about special remotes</a></small></p>--<p>When she has 1 bar on her cell, Alice queues up interesting files on her-server for later. At a coffee shop, she has git-annex download them to her-USB drive. High in the sky or in a remote cabin, she catches up on-podcasts, videos, and games, first letting git-annex copy them from-her USB drive to the netbook (this saves battery power). <br />-<small><a href="./transferring_data.html">more about transferring data</a></small></p>--<p>When she's done, she tells git-annex which to keep and which to remove.-They're all removed from her netbook to save space, and Alice knows-that next time she syncs up to the net, her changes will be synced back -to her server. <br />-<small><a href="./distributed_version_control.html">more about distributed version control</a></small></p>----</td>-</tr>-</table>--<p>If that describes you, or if you're some from column A and some from column-B, then git-annex may be the tool you've been looking for to expand from-keeping all your small important files in git, to managing your large-files with git.</p>--<h2>documentation</h2>--<ul>-<li><a href="./git-annex.html">git-annex man page</a></li>-<li><a href="./backends.html">key-value backends</a> for data storage</li>-<li><a href="./special_remotes.html">special remotes</a> (including <a href="./special_remotes/S3.html">S3</a> and <a href="./special_remotes/bup.html">bup</a>)</li>-<li><a href="./encryption.html">encryption</a></li>-<li><a href="./bare_repositories.html">bare repositories</a></li>-<li><a href="./internals.html">internals</a></li>-<li><a href="./design.html">design</a></li>-<li><a href="./not.html">what git annex is not</a></li>-<li>git-annex is Free Software, licensed under the <a href="./GPL">GPL</a>.</li>-</ul>--<p><br clear="all" /></p>--<hr />--<p>git-annex's wiki is powered by <a href="http://ikiwiki.info/">Ikiwiki</a> and-hosted by <a href="http://branchable.com/">Branchable</a>.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install.html
@@ -1,376 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>install</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-install--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h2>OS-specific instructions</h2>--<ul>-<li><a href="./install/OSX.html">OSX</a></li>-<li><a href="./install/Debian.html">Debian</a></li>-<li><a href="./install/Ubuntu.html">Ubuntu</a></li>-<li><a href="./install/Fedora.html">Fedora</a></li>-<li><a href="./install/FreeBSD.html">FreeBSD</a></li>-</ul>--<h2>Using cabal</h2>--<p>As a haskell package, git-annex can be built using cabal. For example:</p>--<pre><code>cabal install git-annex --bindir=&#036;HOME/bin-</code></pre>--<h2>Installation by hand</h2>--<p>To build and use git-annex, you will need:</p>--<ul>-<li>Haskell stuff-<ul>-<li><a href="http://haskell.org/platform/">The Haskell Platform</a></li>-<li><a href="http://github.com/jgoerzen/missingh/wiki">MissingH</a></li>-<li><a href="http://hackage.haskell.org/package/pcre-light">pcre-light</a></li>-<li><a href="http://hackage.haskell.org/package/utf8-string">utf8-string</a></li>-<li><a href="http://hackage.haskell.org/package/SHA">SHA</a></li>-<li><a href="http://hackage.haskell.org/package/dataenc">dataenc</a></li>-<li><a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack">TestPack</a></li>-<li><a href="http://hackage.haskell.org/package/QuickCheck">QuickCheck 2</a></li>-<li><a href="http://hackage.haskell.org/package/HTTP">HTTP</a></li>-<li><a href="http://hackage.haskell.org/package/hS3">hS3</a> (optional, but recommended)</li>-<li><a href="http://hackage.haskell.org/package/json">json</a></li>-</ul></li>-<li>Shell commands-<ul>-<li><a href="http://git-scm.com/">git</a></li>-<li><a href="http://www.ossp.org/pkg/lib/uuid/">uuid</a>-(or <code>uuidgen</code> from util-linux)</li>-<li><a href="http://savannah.gnu.org/projects/findutils/">xargs</a></li>-<li><a href="http://rsync.samba.org/">rsync</a></li>-<li><a href="http://www.gnu.org/software/wget/">wget</a> or <a href="http://http://curl.haxx.se/">curl</a> (optional, but recommended)</li>-<li><a href="ftp://ftp.gnu.org/gnu/coreutils/">sha1sum</a> (optional, but recommended;-a sha1 command will also do)</li>-<li><a href="http://gnupg.org/">gpg</a> (optional; needed for encryption)</li>-<li><a href="http://ikiwiki.info">ikiwiki</a> (optional; used to build the docs)</li>-</ul></li>-</ul>--<p>Then just <a href="./download.html">download</a> git-annex and run: <code>make; make install</code></p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-4637ce9b32abecf6ebf94c75f907f351">--<div class="comment-subject">--<a href="/install.html#comment-4637ce9b32abecf6ebf94c75f907f351">short answer: no</a>--</div>--<div class="inlinecontent">-<p>Long answer, quoting from a mail to someone else:</p>--<p>Well, I can tell you that it assumes a POSIX system, both in available-utilities and system calls, So you'd need to use cygwin or something-like that. (Perhaps you already are for git, I think git also assumes a-POSIX system.) So you need a Haskell that can target that. What this-page refers to as "GHC-Cygwin":-<a href="http://www.haskell.org/ghc/docs/6.6/html/building/platforms.html">http://www.haskell.org/ghc/docs/6.6/html/building/platforms.html</a>-I don't know where to get one. Did find this:-<a href="http://copilotco.com/mail-archives/haskell-cafe.2007/msg00824.html">http://copilotco.com/mail-archives/haskell-cafe.2007/msg00824.html</a></p>--<p>(There are probably also still some places where it assumes / as a path-separator, although I fixed some.)</p>--<p>FWIW, git-annex works fine on OS X and other fine proprietary unixen. ;P</p>--<hr />--<p>Alternatively, windows versions of these functions could be found,-which are all the ones that need POSIX, I think. A fair amount of this,-the stuff to do with signals and users, could be empty stubs in windows.-The file manipulation, particularly symlinks, would probably be the main-challenge.</p>--<pre>-addSignal-blockSignals-changeWorkingDirectory-createLink-createSymbolicLink-emptySignalSet-executeFile-fileMode-fileSize-forkProcess-getAnyProcessStatus-getEffectiveUserID-getEnvDefault-getFileStatus-getProcessID-getProcessStatus-getSignalMask-getSymbolicLinkStatus-getUserEntryForID-getUserEntryForName-groupWriteMode-homeDirectory-installHandler-intersectFileModes-isRegularFile-isSymbolicLink-modificationTime-otherWriteMode-ownerWriteMode-readSymbolicLink-setEnv-setFileMode-setSignalMask-sigCHLD-sigINT-unionFileModes-</pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Jun 10 15:55:38 2011</span>-</div>----</div>-<div class="comment" id="comment-87eeeabc26e66bd965bea3ca66f7140d">--<div class="comment-subject">--<a href="/install.html#comment-87eeeabc26e66bd965bea3ca66f7140d">Any chance to get git-annex going on windows?</a>--</div>--<div class="inlinecontent">-<p>Would be great! :-)</p>--<p>Jonas</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmByD9tmR48HuYgS4qWEGDDaoVTTC3m4kc">Jonas</a>-</span>---&mdash; <span class="date">Fri Jun 10 14:08:36 2011</span>-</div>----</div>-<div class="comment" id="comment-5c71f1d9ac9246b3376325d574d9eefc">--<div class="comment-subject">--<a href="/install/Debian.html#comment-5c71f1d9ac9246b3376325d574d9eefc">squeeze-backports update?</a>--</div>--<div class="inlinecontent">-<p>Is there going to be an update of git-annex in debian squeeze-backports to a version that supports repository version 3?-Thx</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawla7u6eLKNYZ09Z7xwBffqLaXquMQC07fU">Matthias</a>-</span>---&mdash; <span class="date">Wed Aug 17 08:34:46 2011</span>-</div>----</div>-<div class="comment" id="comment-120b10ef843c0a90b8af063f7c234fd9">--<div class="comment-subject">--<a href="/install/OSX.html#comment-120b10ef843c0a90b8af063f7c234fd9">comment 1</a>--</div>--<div class="inlinecontent">-<p>You can also use Homebrew instead of MacPorts.  Homebrew's <code>haskell-platform</code> is up-to-date, too:</p>--<pre><code>brew install haskell-platform git ossp-uuid md5sha1sum coreutils pcre-ln -s /usr/local/include/pcre.h /usr/include/pcre.h-</code></pre>--<p>As of this writing, however, Homebrew's <code>md5sha1sum</code> has a broken mirror.  I wound up getting that from MacPorts anyway.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://www.schleptet.net/~cfm/">cfm [schleptet.net]</a>-</span>---&mdash; <span class="date">Tue Aug 30 10:31:36 2011</span>-</div>----</div>-<div class="comment" id="comment-a7f0a516edda1f6e61c13aaa72ff5bae">--<div class="comment-subject">--<a href="/install/Debian.html#comment-a7f0a516edda1f6e61c13aaa72ff5bae">Re: squeeze-backports update?</a>--</div>--<div class="inlinecontent">-Yes, I uploaded it last night.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Aug 17 11:34:29 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./download.html">download</a>--<a href="./index.html">index</a>--<a href="./install/Ubuntu.html">install/Ubuntu</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 16:53:33 2011</span>-<!-- Created <span class="date">Sat Sep 17 16:53:33 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Debian.html
@@ -1,180 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Debian</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../install.html">install</a>/ --</span>-<span class="title">-Debian--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>If using Debian testing or unstable:</p>--<ul>-<li><code>sudo apt-get install git-annex</code></li>-</ul>--<p>If using Debian 6.0 stable:</p>--<ul>-<li>Follow the instructions to <a href="http://backports.debian.org/Instructions/">enable backports</a>.</li>-<li><code>sudo apt-get -t squeeze-backports install git-annex</code></li>-</ul>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-5c71f1d9ac9246b3376325d574d9eefc">--<div class="comment-subject">--<a href="/install/Debian.html#comment-5c71f1d9ac9246b3376325d574d9eefc">squeeze-backports update?</a>--</div>--<div class="inlinecontent">-<p>Is there going to be an update of git-annex in debian squeeze-backports to a version that supports repository version 3?-Thx</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawla7u6eLKNYZ09Z7xwBffqLaXquMQC07fU">Matthias</a>-</span>---&mdash; <span class="date">Wed Aug 17 08:34:46 2011</span>-</div>----</div>-<div class="comment" id="comment-a7f0a516edda1f6e61c13aaa72ff5bae">--<div class="comment-subject">--<a href="/install/Debian.html#comment-a7f0a516edda1f6e61c13aaa72ff5bae">Re: squeeze-backports update?</a>--</div>--<div class="inlinecontent">-Yes, I uploaded it last night.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Aug 17 11:34:29 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../forum/Need_new_build_instructions_for_Debian_stable.html">forum/Need new build instructions for Debian stable</a>--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Fedora.html
@@ -1,111 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Fedora</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../install.html">install</a>/ --</span>-<span class="title">-Fedora--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Installation recipe for Fedora 14.</p>--<pre>-sudo yum install ghc cabal-install-sudo cabal update-sudo cabal install git-annex-</pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:27:06 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:27:06 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/FreeBSD.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>FreeBSD</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../install.html">install</a>/ --</span>-<span class="title">-FreeBSD--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex is in FreeBSD ports in-<a href="http://www.freshports.org/devel/git-annex/">devel/git-annex</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/OSX.html
@@ -1,167 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>OSX</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../install.html">install</a>/ --</span>-<span class="title">-OSX--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Install Haskel Platform from <a href="http://hackage.haskell.org/platform/mac.html">http://hackage.haskell.org/platform/mac.html</a>. The version provided by Macports is too old to work with current versions of git-annex. Then execute</p>--<pre>-sudo port install git-core ossp-uuid md5sha1sum coreutils pcre--sudo ln -s /opt/local/include/pcre.h  /usr/include/pcre.h # This is hack that allows pcre-light to find pcre--# optional: this will enable the gnu tools, (to give sha224sum etc..., it does not override the BSD userland)-export PATH=$PATH:/opt/local/libexec/gnubin--sudo cabal update-sudo cabal install git-annex-</pre>--<p>Originally posted by Jon at <a href="https://gist.github.com/671785">https://gist.github.com/671785</a> --<span class="createlink">Joey</span>, modified by <span class="createlink">kristianrumberg</span></p>--<p>See also:</p>--<ul>-<li><a href="../forum/OSX__39__s_haskell-platform_statically_links_things.html">OSX&#39;s haskell-platform statically links things</a></li>-<li><a href="../forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.html">OSX&#39;s default sshd behaviour has limited paths set</a></li>-</ul>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-120b10ef843c0a90b8af063f7c234fd9">--<div class="comment-subject">--<a href="/install/OSX.html#comment-120b10ef843c0a90b8af063f7c234fd9">comment 1</a>--</div>--<div class="inlinecontent">-<p>You can also use Homebrew instead of MacPorts.  Homebrew's <code>haskell-platform</code> is up-to-date, too:</p>--<pre><code>brew install haskell-platform git ossp-uuid md5sha1sum coreutils pcre-ln -s /usr/local/include/pcre.h /usr/include/pcre.h-</code></pre>--<p>As of this writing, however, Homebrew's <code>md5sha1sum</code> has a broken mirror.  I wound up getting that from MacPorts anyway.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://www.schleptet.net/~cfm/">cfm [schleptet.net]</a>-</span>---&mdash; <span class="date">Tue Aug 30 10:31:36 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../forum/git-annex_on_OSX.html">forum/git-annex on OSX</a>--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:27:27 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:27:27 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Ubuntu.html
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Ubuntu</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../install.html">install</a>/ --</span>-<span class="title">-Ubuntu--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>If using Ubuntu natty or newer:</p>--<pre><code>sudo apt-get install git-annex-</code></pre>--<p>Otherwise, see <a href="../install.html">manual installation instructions</a>.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/internals.html
@@ -1,204 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>internals</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-internals--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>In the world of git, we're not scared about internal implementation-details, and sometimes we like to dive in and tweak things by hand. Here's-some documentation to that end.</p>--<h2><code>.git/annex/objects/aa/bb/*/*</code></h2>--<p>This is where locally available file contents are actually stored.-Files added to the annex get a symlink checked into git that points-to the file content.</p>--<p>First there are two levels of directories used for hashing, to prevent-too many things ending up in any one directory.</p>--<p>Each subdirectory has the name of a key in one of the-<a href="./backends.html">key-value backends</a>. The file inside also has the name of the key.-This two-level structure is used because it allows the write bit to be removed-from the subdirectories as well as from the files. That prevents accidentially-deleting or changing the file contents.</p>--<h2>The git-annex branch</h2>--<p>This branch is managed by git-annex, with the contents listed below.</p>--<p>The file <code>.git/annex/index</code> is a separate git index file it uses-to accumulate changes for the git-annex. Also, <code>.git/annex/journal/</code> is used-to record changes before they are added to git.</p>--<p>Note that for speed reasons, git-annex assumes only it will modify this-branch. If you go in and make changes directly, it will probably revert-your changes in its next commit to the branch.</p>--<p>The best way to make changes to the git-annex branch is instead-to create a branch of it, with a name like "my/git-annex", and then-use "git annex merge" to automerge your branch into the main git-annex-branch.</p>--<h3><code>uuid.log</code></h3>--<p>Records the UUIDs of known repositories, and associates them with a-description of the repository. This allows git-annex to display something-more useful than a UUID when it refers to a repository that does not have-a configured git remote pointing at it.</p>--<p>The file format is simply one line per repository, with the uuid followed by a-space and then the description through to the end of the line. Example:</p>--<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 laptop-26339d22-446b-11e0-9101-002170d25c55 usb disk-</code></pre>--<h2><code>remotes.log</code></h2>--<p>Holds persistent configuration settings for <a href="./special_remotes.html">special remotes</a> such as-Amazon S3.</p>--<p>The file format is one line per remote, starting with the uuid of the-remote, followed by a space, and then a series of key=value pairs,-each separated by whitespace.</p>--<h2><code>trust.log</code></h2>--<p>Records the <a href="./trust.html">trust</a> information for repositories. Does not exist unless-<a href="./trust.html">trust</a> values are configured.</p>--<p>The file format is one line per repository, with the uuid followed by a-space, and then either 1 (trusted), 0 (untrusted), or ? (semi-trusted).-Repositories not listed are semi-trusted.</p>--<p>Example:</p>--<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 1-26339d22-446b-11e0-9101-002170d25c55 ?-</code></pre>--<h2><code>aaa/bbb/*.log</code></h2>--<p>These log files record <a href="./location_tracking.html">location tracking</a> information-for file contents. Again these are placed in two levels of subdirectories-for hashing. The name of the key is the filename, and the content-consists of a timestamp, either 1 (present) or 0 (not present), and-the UUID of the repository that has or lacks the file content.</p>--<p>Example:</p>--<pre><code>1287290776.765152s 1 e605dca6-446a-11e0-8b2a-002170d25c55-1287290767.478634s 0 26339d22-446b-11e0-9101-002170d25c55-</code></pre>--<p>These files are designed to be auto-merged using git's union merge driver.-The timestamps allow the most recent information to be identified.</p>--<h2><code>remote/web/aaa/bbb/*.log</code></h2>--<p>These log files record urls used by the-<a href="./special_remotes/web.html">web special remote</a>. Their format is similar-to the location tracking files, but with urls rather than UUIDs.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./design.html">design</a>--<a href="./design/encryption.html">design/encryption</a>--<a href="./forum/hashing_objects_directories.html">forum/hashing objects directories</a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/location_tracking.html
@@ -1,149 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>location tracking</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-location tracking--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex keeps track of in which repositories it last saw a file's content.-This location tracking information is stored in the git-annex branch.-Repositories record their UUID and the date when they get or drop -a file's content. (Git is configured to use a union merge for this file,-so the lines may be in arbitrary order, but it will never conflict.)</p>--<p>This location tracking information is useful if you have multiple-repositories, and not all are always accessible. For example, perhaps one-is on a home file server, and you are away from home. Then git-annex can-tell you what git remote it needs access to in order to get a file:</p>--<pre><code># git annex get myfile -get myfile(not available)-  I was unable to access these remotes: home-</code></pre>--<p>Another way the location tracking comes in handy is if you put repositories-on removable USB drives, that might be archived away offline in a safe-place. In this sort of case, you probably don't have a git remotes-configured for every USB drive. So git-annex may have to resort to talking-about repository UUIDs. If you have previously used "git annex init"-to attach descriptions to those repositories, it will include their-descriptions to help you with finding them:</p>--<pre><code># git annex get myfile-get myfile (not available)-  Try making some of these repositories available:-    c0a28e06-d7ef-11df-885c-775af44f8882  -- USB archive drive 1-    e1938fee-d95b-11df-96cc-002170d25c55-</code></pre>--<p>In certain cases you may want to configure git-annex to <a href="./trust.html">trust</a>-that location tracking information is always correct for a repository.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./distributed_version_control.html">distributed version control</a>--<a href="./forum/relying_on_git_for_numcopies.html">forum/relying on git for numcopies</a>--<a href="./forum/working_without_git-annex_commits.html">forum/working without git-annex commits</a>--<a href="./internals.html">internals</a>--<a href="./trust.html">trust</a>--<a href="./use_case/Bob.html">use case/Bob</a>--<a href="./walkthrough/transferring_files:_When_things_go_wrong.html">walkthrough/transferring files: When things go wrong</a>--<a href="./walkthrough/what_to_do_when_you_lose_a_repository.html">walkthrough/what to do when you lose a repository</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/logo.png

binary file changed (9092 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/logo_small.png

binary file changed (4713 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/news.html
@@ -1,103 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>news</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-news--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>(Please see the changelog.)</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/not.html
@@ -1,144 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>what git-annex is not</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-what git-annex is not--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<ul>-<li><p>git-annex is not a backup system. It may be a useful component of an-<a href="./use_case/Bob.html">archival</a> system, or a way to deliver files to a backup-system. For a backup system that uses git and that git-annex supports-storing data in, see <a href="./special_remotes/bup.html">bup</a>.</p></li>-<li><p>git-annex is not a filesystem or DropBox clone. But there-is a FUSE filesystem built on top of git-annex, called -<a href="https://github.com/chmduquesne/sharebox">ShareBox</a>, and there is-interest in making it easy to use and covering some of the use-cases supported by DropBox.</p></li>-<li><p>git-annex is not unison, but if you're finding unison's checksumming-too slow, or its strict mirroring of everything to both places too-limiting, then git-annex could be a useful alternative.</p></li>-<li><p>git-annex is more than just a workaround for git limitations that might-eventually be fixed by efforts like-<a href="http://caca.zoy.org/wiki/git-bigfiles">git-bigfiles</a>.</p></li>-<li><p>git-annex is not some flaky script that was quickly thrown together.-I wrote it in Haskell because I wanted it to be solid and to compile-down to a binary. And it has a fairly extensive test suite. (Don't be-fooled by "make test" only showing a few dozen test cases; each test-involves checking dozens to hundreds of assertions.)</p></li>-<li><p>git-annex is not <a href="https://github.com/schacon/git-media">git-media</a>,-although they both approach the same problem from a similar direction.-I only learned of git-media after writing git-annex, but I probably-would have still written git-annex instead of using it. Currently,-git-media has the advantage of using git smudge filters rather than-git-annex's pile of symlinks, and it may be a tighter fit for certain-situations. It lacks git-annex's support for widely distributed storage,-using only a single backend data store. It also does not support-partial checkouts of file contents, like git-annex does.</p></li>-<li><p>git-annex is also not <a href="http://code.google.com/p/boar/">boar</a>,-although it shares many of its goals and characteristics. Boar implements-its own version control system, rather than simply embracing and-extending git. And while boar supports distributed clones of a repository,-it does not support keeping different files in different clones of the-same repository, which git-annex does, and is an important feature for-large-scale archiving.</p></li>-<li><p>git-annex is not the <a href="http://mercurial.selenic.com/wiki/BfilesExtension">Mercurial bfiles extension</a>.-Although mercurial and git have some of the same problems around large-files, and both try to solve them in similar ways (standin files using-mostly hashes of the real content).</p></li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/repomap.png

binary file changed (67316 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/special_remotes.html
@@ -1,162 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>special remotes</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-special remotes--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Most <a href="./backends.html">backends</a> can transfer data to and from configured git remotes.-Normally those remotes are normal git repositories (bare and non-bare;-local and remote), that store the file contents in their own git annex-directory.</p>--<p>But, git-annex also extends git's concept of remotes, with these special-types of remotes. These can be used just like any normal remote by git-annex.-They cannot be used by other git commands though.</p>--<ul>-<li><a href="./special_remotes/S3.html">S3</a> (Amazon S3, and other compatible services)</li>-<li><a href="./special_remotes/bup.html">bup</a></li>-<li><a href="./special_remotes/directory.html">directory</a></li>-<li><a href="./special_remotes/rsync.html">rsync</a></li>-<li><a href="./special_remotes/web.html">web</a></li>-<li><a href="./special_remotes/hook.html">hook</a></li>-<li><a href="./forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html">tahoe-lafs</a> - limited testing</li>-</ul>--<h2>Unused content on special remotes</h2>--<p>Over time, special remotes can accumulate file content that is no longer-referred to by files in git. Normally, unused content in the current-repository is found by running <code>git annex unused</code>. To detect unused content-on special remotes, instead use <code>git annex unused --from</code>. Example:</p>--<pre><code>&#036; git annex unused --from mys3-unused mys3 (checking for unused data...) -  Some annexed data on mys3 is not used by any files in this repository.-    NUMBER  KEY-    1       WORM-s3-m1301674316--foo-  (To see where data was previously used, try: git log --stat -S'KEY')-  (To remove unwanted data: git-annex dropunused --from mys3 NUMBER)-  Please be cautious -- are you sure that the remote repository-  does not use this data?-&#036; git annex dropunused --from mys3 1-dropunused 12948 (from mys3...) ok-</code></pre>--<p>Do be cautious when using this; it cannot detect if content in a remote-is used by that remote, or is the last copy of data that is used by-some <em>other</em> remote.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./bugs/check_for_curl_in_configure.hs.html">bugs/check for curl in configure.hs</a>--<a href="./copies.html">copies</a>--<a href="./encryption.html">encryption</a>--<a href="./index.html">index</a>--<a href="./internals.html">internals</a>--<a href="./transferring_data.html">transferring data</a>--<a href="./use_case/Alice.html">use case/Alice</a>--<a href="./walkthrough/using_Amazon_S3.html">walkthrough/using Amazon S3</a>--<a href="./walkthrough/using_bup.html">walkthrough/using bup</a>--<a href="./walkthrough/using_the_web.html">walkthrough/using the web</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/S3.html
@@ -1,147 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>S3</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-S3--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in a bucket in Amazon S3-or a similar service.</p>--<p>See <a href="../walkthrough/using_Amazon_S3.html">using Amazon S3</a> and-<a href="../walkthrough/Internet_Archive_via_S3.html">Internet Archive via S3</a> for usage examples.</p>--<h2>configuration</h2>--<p>The standard environment variables <code>ANNEX_S3_ACCESS_KEY_ID</code> and -<code>ANNEX_S3_SECRET_ACCESS_KEY</code> are used to supply login credentials-for Amazon. When encryption is enabled, they are stored in encrypted form-by <code>git annex initremote</code>, so you do not need to keep the environment-variables set after the initial initalization of the remote.</p>--<p>A number of parameters can be passed to <code>git annex initremote</code> to configure-the S3 remote.</p>--<ul>-<li><p><code>encryption</code> - Required. Either "none" to disable encryption-(not recommended),-or a value that can be looked up (using gpg -k) to find a gpg encryption-key that will be given access to the remote. Note that additional gpg-keys can be given access to a remote by rerunning initremote with-the new key id. See <a href="../encryption.html">encryption</a>.</p></li>-<li><p><code>datacenter</code> - Defaults to "US". Other values include "EU",-"us-west-1", and "ap-southeast-1".</p></li>-<li><p><code>storageclass</code> - Default is "STANDARD". If you have configured git-annex-to preserve multiple <a href="../copies.html">copies</a>, consider setting this to "REDUCED_REDUNDANCY"-to save money.</p></li>-<li><p><code>host</code> and <code>port</code> - Specify in order to use a different, S3 compatable-service.</p></li>-<li><p><code>bucket</code> - S3 requires that buckets have a globally unique name, -so by default, a bucket name is chosen based on the remote name-and UUID. This can be specified to pick a bucket name.</p></li>-<li><p><code>x-amz-*</code> are passed through as http headers when storing keys-in S3.</p></li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../index.html">index</a>--<a href="../special_remotes.html">special remotes</a>--<a href="../walkthrough/Internet_Archive_via_S3.html">walkthrough/Internet Archive via S3</a>--<a href="../walkthrough/using_Amazon_S3.html">walkthrough/using Amazon S3</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/bup.html
@@ -1,152 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>bup</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-bup--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in a -<a href="http://github.com/apenwarr/bup">bup</a> repository. By using git-annex-in the front-end, and bup as a remote, you get an easy git-style-interface to large files, and easy backups of the file contents using git.</p>--<p>This is particularly well suited to collaboration on projects involving-large files, since both the git-annex and bup repositories can be-accessed like any other git repository.</p>--<p>See <a href="../walkthrough/using_bup.html">using bup</a> for usage examples.</p>--<p>Each individual key is stored in a bup remote using <code>bup split</code>, with-a git branch named the same as the key name. Content is retrieved from-bup using <code>bup join</code>. All other bup operations are up to you -- consider-running <code>bup fsck --generate</code> in a cron job to generate recovery blocks,-for example; or clone bup's git repository to further back it up.</p>--<h2>configuration</h2>--<p>These parameters can be passed to <code>git annex initremote</code> to configure bup:</p>--<ul>-<li><p><code>encryption</code> - Required. Either "none" to disable encryption of content-stored in bup (ssh will still be used to transport it securely),-or a value that can be looked up (using gpg -k) to find a gpg encryption-key that will be given access to the remote. Note that additional gpg-keys can be given access to a remote by rerunning initremote with-the new key id. See <a href="../encryption.html">encryption</a>.</p></li>-<li><p><code>buprepo</code> - Required. This is passed to <code>bup</code> as the <code>--remote</code>-to use to store data. To create the repository,<code>bup init</code> will be run.-Example: "buprepo=example.com:/big/mybup" or "buprepo=/big/mybup"-(To use the default <code>~/.bup</code> repository on the local host, specify "buprepo=")</p></li>-</ul>--<p>Options to pass to <code>bup split</code> when sending content to bup can also-be specified, by using <code>git config annex.bup-split-options</code>. This-can be used to, for example, limit its bandwidth.</p>--<h2>notes</h2>--<p><a href="../git-annex-shell.html">git-annex-shell</a> does not support bup, due to the wacky way that bup-starts its server. So, to use bup, you need full shell access to the server.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../index.html">index</a>--<a href="../not.html">not</a>--<a href="../special_remotes.html">special remotes</a>--<a href="../walkthrough/using_bup.html">walkthrough/using bup</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/directory.html
@@ -1,118 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>directory</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-directory--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in directory.</p>--<p>One use case for this would be if you have a removable drive that-you want to use it to sneakernet files between systems (possibly with-<a href="../encryption.html">encrypted</a> contents). Just set up both systems to use-the drive's mountpoint as a directory remote.</p>--<p>Setup example:</p>--<pre><code># git annex initremote usbdrive type=directory directory=/media/usbdrive/ encryption=none-# git annex describe usbdrive "usb drive on /media/usbdrive/"-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./hook.html">hook</a>--<a href="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/hook.html
@@ -1,177 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>hook</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-hook--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This special remote type lets you store content in a remote of your own-devising.</p>--<p>It's not recommended to use this remote type when another like <a href="./rsync.html">rsync</a>-or <a href="./directory.html">directory</a> will do. If your hooks are not carefully written, data-could be lost.</p>--<h2>example</h2>--<p>Here's a simple example that stores content on clay tablets. If you-implement this example in the real world, I'd appreciate a tour-next Apert! :) --<span class="createlink">Joey</span></p>--<pre><code># git config annex.cuneiform-store-hook 'tocuneiform &lt; "&#036;ANNEX_FILE" | tablet-writer --implement=stylus --title="&#036;ANNEX_KEY" | tablet-proofreader | librarian --shelve --floor=&#036;ANNEX_HASH_1 --shelf=&#036;ANNEX_HASH_2'-# git config annex.cuneiform-retrieve-hook 'librarian --get --floor=&#036;ANNEX_HASH_1 --shelf=&#036;ANNEX_HASH_2 --title="&#036;ANNEX_KEY" | tablet-reader --implement=coffee --implement=glasses --force-monastic-dedication | fromcuneiform &gt; "&#036;ANNEX_FILE"'-# git config annex.cuneiform-remove-hook 'librarian --get --floor=&#036;ANNEX_HASH_1 --shelf=&#036;ANNEX_HASH_2 --title="&#036;ANNEX_KEY" | goon --hit-with-hammer'-# git config annex.cuneiform-checkpresent-hook 'librarian --find --force-distrust-catalog --floor=&#036;ANNEX_HASH_1 --shelf=&#036;ANNEX_HASH_2 --title="&#036;ANNEX_KEY" --shout-title'-# git annex initremote library type=hook hooktype=cuneiform encryption=none-# git annex describe library "the reborn Library of Alexandria (upgrade to bronze plates pending)"-</code></pre>--<p>Can you spot the potential data loss bugs in the above simple example?-(Hint: What happens when the <code>tablet-proofreader</code> exits nonzero?)</p>--<h2>configuration</h2>--<p>These parameters can be passed to <code>git annex initremote</code>:</p>--<ul>-<li><p><code>encryption</code> - Required. Either "none" to disable encryption of content,-or a value that can be looked up (using gpg -k) to find a gpg encryption-key that will be given access to the remote. Note that additional gpg-keys can be given access to a remote by rerunning initremote with-the new key id. See <a href="../encryption.html">encryption</a>.</p></li>-<li><p><code>hooktype</code> - Required. This specifies a collection of hooks to use for-this remote.</p></li>-</ul>--<h2>hooks</h2>--<p>Each type of hook remote is specified by a collection of hook commands.-Each hook command is run as a shell command line, and should return nonzero-on failure, and zero on success.</p>--<p>These environment variables are used to communicate with the hook commands:</p>--<ul>-<li><code>ANNEX_KEY</code> - name of a key to store, retrieve, remove, or check.</li>-<li><code>ANNEX_FILE</code> - a file containing the key's content</li>-<li><code>ANNEX_HASH_1</code> - short stable value, based on the key, can be used for hashing-into 1024 buckets.</li>-<li><code>ANNEX_HASH_2</code> - another hash value, can be used for a second level of hashing</li>-</ul>--<p>The setting to use in git config for the hook commands are as follows:</p>--<ul>-<li><p><code>annex.&#036;hooktype-store-hook</code> - Command run to store a key in the special remote.-<code>ANNEX_FILE</code> contains the content to be stored.</p></li>-<li><p><code>annex.&#036;hooktype-retrieve-hook</code> - Command run to retrieve a key from the special remote.-<code>ANNEX_FILE</code> is a file that the retrieved content should be written to.-The file may already exist with a partial-copy of the content (or possibly just garbage), to allow for resuming-of partial transfers.</p></li>-<li><p><code>annex.&#036;hooktype-remove-hook</code> - Command to remove a key from the special remote.</p></li>-<li><p><code>annex.&#036;hooktype-checkpresent-hook</code> - Command to check if a key is present-in the special remote. Should output the key name to stdout, on its own line,-if and only if the key has been actively verified to be present in the-special remote (caching presence information is a very bad idea);-all other output to stdout will be ignored.</p></li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html">forum/tips: special&#95;remotes&#47;hook with tahoe-lafs</a>--<a href="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/rsync.html
@@ -1,139 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>rsync</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-rsync--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This special remote type rsyncs file contents to somewhere else.</p>--<p>Setup example:</p>--<pre><code># git annex initremote myrsync type=rsync rsyncurl=rsync://rsync.example.com/myrsync encryption=joey@kitenet.net-# git annex describe myrsync "rsync server"-</code></pre>--<p>Or for using rsync over SSH</p>--<pre><code># git annex initremote myrsync type=rsync rsyncurl=ssh.example.com:/myrsync encryption=joey@kitenet.net-# git annex describe myrsync "rsync server"-</code></pre>--<h2>configuration</h2>--<p>These parameters can be passed to <code>git annex initremote</code> to configure rsync:</p>--<ul>-<li><p><code>encryption</code> - Required. Either "none" to disable encryption of content-stored in rsync, -or a value that can be looked up (using gpg -k) to find a gpg encryption-key that will be given access to the remote. Note that additional gpg-keys can be given access to a remote by rerunning initremote with-the new key id. See <a href="../encryption.html">encryption</a>.</p></li>-<li><p><code>rsyncurl</code> - Required. This is the url or <code>hostname:/directory</code> to -pass to rsync to tell it where to store content.</p></li>-</ul>--<p>The <code>annex-rsync-options</code> git configuration setting can be used to pass-parameters to rsync.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../forum/wishlist:_special_remote_for_sftp_or_rsync.html">forum/wishlist: special remote for sftp or rsync</a>--<a href="./hook.html">hook</a>--<a href="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/web.html
@@ -1,117 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>web</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../special_remotes.html">special remotes</a>/ --</span>-<span class="title">-web--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex can use the WWW as a special remote, downloading urls to files.-See <a href="../walkthrough/using_the_web.html">using the web</a> for usage examples.</p>--<h2>notes</h2>--<p>Currently git-annex only supports downloading content from the web; -it cannot upload to it or remove content.</p>--<p>This special remote uses arbitrary urls on the web as the source for content.-git-annex can also download content from a normal git remote, accessible by-http.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../internals.html">internals</a>--<a href="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/summary.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>summary</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-summary--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex allows managing files with git, without checking the file-contents into git. While that may seem paradoxical, it is useful when-dealing with files larger than git can currently easily handle, whether due-to limitations in memory, checksumming time, or disk space.</p>--<p>Even without file content tracking, being able to manage files with git,-move files around and delete files with versioned directory trees, and use-branches and distributed clones, are all very handy reasons to use git. And-annexed files can co-exist in the same git repository with regularly-versioned files, which is convenient for maintaining documents, Makefiles,-etc that are associated with annexed files but that benefit from full-revision control.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/templates/bare.tmpl
@@ -1,1 +0,0 @@-<TMPL_VAR CONTENT>
− debian/git-annex/usr/share/doc/git-annex/html/templates/walkthrough.tmpl
@@ -1,2 +0,0 @@-<h2><a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a></h2>-<TMPL_VAR CONTENT>
− debian/git-annex/usr/share/doc/git-annex/html/todo.html
@@ -1,988 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>todo</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-todo--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This is git-annex's todo list. Link items to <a href="./todo/done.html">done</a> when done.</p>--<div id="feedlink">---</div>-<p>--<a href="./todo/smudge.html">smudge</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./todo/git-annex_unused_eats_memory.html">git-annex unused eats memory</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./todo/parallel_possibilities.html">parallel possibilities</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/wishlist:_swift_backend.html">wishlist: swift backend</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/tahoe_lfs_for_reals.html">tahoe lfs for reals</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/hidden_files.html">hidden files</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/cache_key_info.html">cache key info</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.html">wishlist: Prevent repeated password prompts for one command</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.html">wishlist: Provide a &#34;git annex&#34; command that will skip duplicates</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/support_S3_multipart_uploads.html">support S3 multipart uploads</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/auto_remotes.html">auto remotes</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/wishlist:___34__git_annex_add__34___multiple_processes.html">wishlist: &#34;git annex add&#34; multiple processes</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./todo/union_mounting.html">union mounting</a><br />--<i>-Posted <span class="date">Wed Apr 13 16:18:01 2011</span>--</i>-</p>---</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-e19e9a742f671f07cadaf7ab81033fdb">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-e19e9a742f671f07cadaf7ab81033fdb">comment 4</a>--</div>--<div class="inlinecontent">-<p>Well, I spent a few hours playing this evening in the 'reorg' branch in git. It seems to be shaping up pretty well; type-based refactoring in haskell makes these kind of big systematic changes a matter of editing until it compiles. And it compiles and test suite passes. But, so far I've only covered 1. 3. and 4. on the list, and have yet to deal with upgrades.</p>--<p>I'd recommend you not wait before using git-annex. I am committed to provide upgradability between annexes created with all versions of git-annex, going forward. This is important because we can have offline archival drives that sit unused for years. Git-annex will upgrade a repository to current standard the first time it sees it, and I hope the upgrade will be pretty smooth. It was not bad for the annex.version 0 to 1 upgrade earlier. The only annoyance with upgrades is that it will result in some big commits to git, as every symlink in the repo gets changed, and log files get moved to new names.</p>--<p>(The metadata being stored with keys is data that a particular backend can use, and is static to a given key, so there are no merge issues (and it won't be used to preserve mtimes, etc).)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:22:45 2011</span>-</div>----</div>-<div class="comment" id="comment-66db8c76b0db27cf1419ebe3dbf7ec4b">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-66db8c76b0db27cf1419ebe3dbf7ec4b">comment 1</a>--</div>--<div class="inlinecontent">-<p>What is the potential time-frame for this change? As I am not using git-annex for production yet, I can see myself waiting to avoid any potential hassle.</p>--<p>Supporting generic metadata seems like a great idea. Though if you are going this path, wouldn't it make sense to avoid metastore for mtime etc and support this natively without outside dependencies?</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 10:08:41 2011</span>-</div>----</div>-<div class="comment" id="comment-887b37c183ed558af239012a80be2c53">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-887b37c183ed558af239012a80be2c53">comment 6</a>--</div>--<div class="inlinecontent">-<p>The mtime cannot be stored for all keys. Consider a SHA1 key. The mtime is irrelevant; 2 files with different mtimes, when added to the SHA1 backend, should get the same key.</p>--<p>Probably our spam filter doesn't like your work IP.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 12:32:52 2011</span>-</div>----</div>-<div class="comment" id="comment-5662bd0ab34ed1306a60470e6ca95cfc">--<div class="comment-subject">--<a href="/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.html#comment-5662bd0ab34ed1306a60470e6ca95cfc">Duplication of the filenames is what I am concerned about</a>--</div>--<div class="inlinecontent">-<p>For what it's worth, yes, I want to actually forget I ever had the same file in the filesystem with a duplicated name. I'm not just aiming to clean up the disk's space usage; I'm also aiming to clean things up so that navigating the filesystem is easier.</p>--<p>I can write my own script to do that based on the symlinks' target (and I wrote something along those lines), but I still think it'd be nicer if git-annex supported this use case.</p>--<p>Perhaps:</p>--<pre>git annex drop --by-contents</pre>--<p>could let me remove a file from git-annex if the contents are available through a different name. (Right now, "git annex drop" requires the name <em>and</em> contents match.)</p>--<p>-- Asheesh.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkjvjLHW9Omza7x1VEzIFQ8Z5honhRB90I">Asheesh</a>-</span>---&mdash; <span class="date">Fri Apr 29 07:48:22 2011</span>-</div>----</div>-<div class="comment" id="comment-d040bf59238731a2545f4c2394dc87f4">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-d040bf59238731a2545f4c2394dc87f4">comment 7</a>--</div>--<div class="inlinecontent">-<p>Ah, OK. I assumed the metadata would be attached to a key, not part of the key. This seems to make upgrades/extensions down the line harder than they need to be, but you are right that this way, merges are not, and never will be, an issue.</p>--<p>Though with the SHA1 backend, changing files can be tracked. This means that tracking changes in mtime or other is possible. It also means that there are potential merge issues. But I won't argue the point endlessly. I can accept design decisions :)</p>--<p>The prefix at work is from a university netblock so yes, it might be on a few hundred proxy lists etc.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 17:05:38 2011</span>-</div>----</div>-<div class="comment" id="comment-862776d34395c7c94d3d010b0a70566f">--<div class="comment-subject">--<a href="/todo/parallel_possibilities.html#comment-862776d34395c7c94d3d010b0a70566f">comment 2</a>--</div>--<div class="inlinecontent">-<p>I agree with Christian.</p>--<p>One should first make a better use of connections to remotes before exploring parallel possibilities. One should pipeline the requests and answers.</p>--<p>Of course this could be implemented using parallel&amp;concurrency features of Haskell to do this.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Fri May 20 16:14:15 2011</span>-</div>----</div>-<div class="comment" id="comment-a4b46ed9f880f4cc96450f92a45af602">--<div class="comment-subject">--<a href="/todo/wishlist:___34__git_annex_add__34___multiple_processes.html#comment-a4b46ed9f880f4cc96450f92a45af602">comment 3</a>--</div>--<div class="inlinecontent">-Thank your for your answer and the link !--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=jbd&amp;do=goto">jbd</a>--</span>---&mdash; <span class="date">Sat Feb 26 06:26:12 2011</span>-</div>----</div>-<div class="comment" id="comment-278ec9e9bb4265fcc0ba54ed26454136">--<div class="comment-subject">--<a href="/todo/wishlist:_swift_backend.html#comment-278ec9e9bb4265fcc0ba54ed26454136">comment 2</a>--</div>--<div class="inlinecontent">-It does offer a S3 compability layer, but that is de facto non-functioning as of right now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat May 14 11:00:51 2011</span>-</div>----</div>-<div class="comment" id="comment-8e0dcf4b8ac4e44c9a88e226e0145aae">--<div class="comment-subject">--<a href="/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.html#comment-8e0dcf4b8ac4e44c9a88e226e0145aae">I actually *do* want to avoid duplication of filenames</a>--</div>--<div class="inlinecontent">-<p>I really do want just one filename per file, at least for some cases.</p>--<p>For my photos, there's no benefit to having a few filenames point to the same file. As I'm putting them all into the git-annex, that is a good time to remove the pure duplicates so that I don't e.g. see them twice when browsing the directory as a gallery. Also, I am uploading my photos to the web, and I want to avoid uploading the same photo (by content) twice.</p>--<p>I hope that makes things clearer!</p>--<p>For now I'm just doing this:</p>--<ul>-<li>paulproteus@renaissance:/mnt/backups-terabyte/paulproteus/sd-card-from-2011-01-06/sd-cards/DCIM/100CANON $ for file in *; do hash=$(sha1sum "$file"); if ls /home/paulproteus/Photos/in-flickr/.git-annex | grep -q "$hash"; then echo already annexed ; else flickr_upload "$file" &amp;&amp; mv "$file" "/home/paulproteus/Photos/in-flickr/2011-01-28/from-some-nested-sd-card-bk" &amp;&amp; (cd /home/paulproteus/Photos/in-flickr/2011-01-28/from-some-nested-sd-card-bk &amp;&amp; git annex add . &amp;&amp; git commit -m ...) ; fi; done</li>-</ul>--<p>(Yeah, Flickr for my photos for now. I feel sad about betraying the principle of autonomo.us-ness.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkjvjLHW9Omza7x1VEzIFQ8Z5honhRB90I">Asheesh</a>-</span>---&mdash; <span class="date">Fri Jan 28 03:30:05 2011</span>-</div>----</div>-<div class="comment" id="comment-25ca214a488580eb5e23c75a6e373d10">--<div class="comment-subject">--<a href="/todo/cache_key_info.html#comment-25ca214a488580eb5e23c75a6e373d10">comment 1</a>--</div>--<div class="inlinecontent">-<p>Sounds like a good idea.</p>--<ul>-<li>git annex fsck (or similar) should check/rebuild the caches</li>-<li>I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue May 17 03:27:02 2011</span>-</div>----</div>-<div class="comment" id="comment-a65928fdba6c93b559fa74c55d9d12d2">--<div class="comment-subject">--<a href="/todo/wishlist:___34__git_annex_add__34___multiple_processes.html#comment-a65928fdba6c93b559fa74c55d9d12d2">comment 2</a>--</div>--<div class="inlinecontent">-But, see <a href="./todo/parallel_possibilities.html">parallel possibilities</a>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Feb 25 15:54:28 2011</span>-</div>----</div>-<div class="comment" id="comment-39fca9dbb05fba6d60113ab6f368510f">--<div class="comment-subject">--<a href="/todo/wishlist:_swift_backend.html#comment-39fca9dbb05fba6d60113ab6f368510f">comment 1</a>--</div>--<div class="inlinecontent">-I don't suppose this SWIFT api is compatible with the eucalytpus walrus api ?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat May 14 06:04:36 2011</span>-</div>----</div>-<div class="comment" id="comment-6da7bb862966c35a744ce1fa95f20bd6">--<div class="comment-subject">--<a href="/todo/wishlist:___34__git_annex_add__34___multiple_processes.html#comment-6da7bb862966c35a744ce1fa95f20bd6">comment 1</a>--</div>--<div class="inlinecontent">-<p>I'd expect the checksumming to be disk bound, not CPU bound, on most systems.</p>--<p>I suggest you start off on the WORM backend, and then you can run a job later to <a href="./walkthrough.html#index14h2">migrate</a> to the SHA1 backend.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Fri Feb 25 15:12:42 2011</span>-</div>----</div>-<div class="comment" id="comment-b0ec5418d8cf6c4d400253d4a4ff2924">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-b0ec5418d8cf6c4d400253d4a4ff2924">comment 2</a>--</div>--<div class="inlinecontent">-Hmm, I added quite a few comments at work, but they are stuck in moderation. Maybe I forgot to log in before adding them. I am surprised this one appeared immediately. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 21:19:25 2011</span>-</div>----</div>-<div class="comment" id="comment-a64773cbca5f3e378017ebf4ef56e4d3">--<div class="comment-subject">--<a href="/todo/smudge.html#comment-a64773cbca5f3e378017ebf4ef56e4d3">symlinks</a>--</div>--<div class="inlinecontent">-<blockquote>-  <p>(Sadly, it cannot create a symlink, as git still wants to write the file afterwards.-  So the nice current behavior of unavailable files being clearly missing due to dangling symlinks, would be lost when using smudge/clean filters. (Contact git developers to get an interface to do this?)</p>-</blockquote>--<p>Have you checked what the smudge filter sees when the input is a symlink? Because git supports tracking symlinks, so it should also support pushing symlinks through a smudge filter, right?-Either way: yes, contact the git devs, one can only ask and hope.  And if you can demonstrate the awesomeness of git-annex they might get more 1interested :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Sun Apr  3 16:30:21 2011</span>-</div>----</div>-<div class="comment" id="comment-2128601c5d4fec5b1379fd3cdf866031">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-2128601c5d4fec5b1379fd3cdf866031">comment 5</a>--</div>--<div class="inlinecontent">-<p>Hashing &amp; segmenting seems to be around the corner, which is nice :)</p>--<p>Is there a chance that you will optionally add mtime to your native metadata store? If yes, I'd rather wait for v2 to start with the native system from the start. If not, I will probably set it up tonight.</p>--<p>PS: While posting from work, my comments are held for moderation once again. I am somewhat confused as to why this happens when I can just submit directly from home. And yes, I am using the same auth provider and user in both cases.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:51:30 2011</span>-</div>----</div>-<div class="comment" id="comment-dee8e8d22410b001cdf2cf76d4de6c2f">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-dee8e8d22410b001cdf2cf76d4de6c2f">comment 1</a>--</div>--<div class="inlinecontent">-If you support generic meta-data, keep in mind that you will need to do conflict resolution. Timestamps may not be synched across all systems, so keeping a log of old metadata could be used, sorting by history and using the latest. Which leaves the situation of two incompatible changes. This would probably mean manual conflict resolution. You will probably have thought of this already, but I still wanted to make sure this is recorded. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 21:16:48 2011</span>-</div>----</div>-<div class="comment" id="comment-623625dc982d67c929729ac22b7e02b0">--<div class="comment-subject">--<a href="/todo/tahoe_lfs_for_reals.html#comment-623625dc982d67c929729ac22b7e02b0">performance</a>--</div>--<div class="inlinecontent">-<p>Hm... O(N^2)? I think it just takes O(N). To read an entry out of a directory you have to download the entire directory (and store it in RAM and parse it). The constants are basically "too big to be good but not big enough to be prohibitive", I think. jctang has reported that his special remote hook performs well enough to use, but it would be nice if it were faster.</p>--<p>The Tahoe-LAFS folks are working on speeding up mutable files, by the way, after which we would be able to speed up directories.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=zooko&amp;do=goto">zooko</a>--</span>---&mdash; <span class="date">Tue May 17 15:20:39 2011</span>-</div>----</div>-<div class="comment" id="comment-f7d655c03881ee5a00fe6c840d3cbac7">--<div class="comment-subject">--<a href="/todo/tahoe_lfs_for_reals.html#comment-f7d655c03881ee5a00fe6c840d3cbac7">comment 2</a>--</div>--<div class="inlinecontent">-<p>Whoops! You'd only told me O(N) twice before..</p>--<p>So this is not too high priority. I think I would like to get the per-remote storage sorted out anyway, since probably it will be the thing needed to convert the URL backend into a special remote, which would then allow ripping out the otherwise unused pluggable backend infrastructure.</p>--<p>Update: Per-remote storage is now sorted out, so this could be implemented-if it actually made sense to do so.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue May 17 15:57:33 2011</span>-</div>----</div>-<div class="comment" id="comment-8fdd2e212819fc435705705af0df7f48">--<div class="comment-subject">--<a href="/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.html#comment-8fdd2e212819fc435705705af0df7f48">comment 1</a>--</div>--<div class="inlinecontent">-<p>Hey Asheesh, I'm happy you're finding git-annex useful.</p>--<p>So, there are two forms of duplication going on here. There's duplication of the content, and duplication of the filenames -pointing at that content.</p>--<p>Duplication of the filenames is probably not a concern, although it's what I thought you were talking about at first. It's probably info worth recording that backup-2010/some_dir/foo and backup-2009/other_dir/foo are two names you've used for the same content in the past. If you really wanted to remove backup-2009/foo, you could do it by writing a script that looks at the basenames of the symlink targets and removes files that point to the same content as other files.</p>--<p>Using SHA1 ensures that the same key is used for identical files, so generally avoids duplication of content. But if you have 2 disks with an identical file on each, and make them both into annexes, then git-annex will happily retain both-copies of the content, one per disk. It generally considers keeping copies of content a good thing. :)</p>--<p>So, what if you want to remove the unnecessary copies? Well, there's a really simple way:</p>--<pre>-cd /media/usb-1-git remote add other-disk /media/usb-0-git annex add-git annex drop-</pre>--<p>This asks git-annex to add everything to the annex, but then remove any file contents that it can safely remove. What can it safely remove? Well, anything that it can verify is on another repository such as "other-disk"! So, this will happily drop any duplicated file contents, while leaving all the rest alone.</p>--<p>In practice, you might not want to have all your old backup disks mounted at the same time and configured as remotes. Look into configuring <a href="./trust.html">trust</a> to avoid needing do to that. If usb-0 is already a trusted disk, all you need is a simple "git annex drop" on usb-1.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Thu Jan 27 14:29:44 2011</span>-</div>----</div>-<div class="comment" id="comment-d96ce84b420e7aeb7e16065842116935">--<div class="comment-subject">--<a href="/todo/smudge.html#comment-d96ce84b420e7aeb7e16065842116935">git-add instead of git-annex-add</a>--</div>--<div class="inlinecontent">-would, with these modifications in place, there still be a way to <em>really</em> git-add a file? (my main repository contains both normal git and git-annex files.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Sat Feb 26 17:43:21 2011</span>-</div>----</div>-<div class="comment" id="comment-0a2d75a94903d9b181b78bb3d937aba9">--<div class="comment-subject">--<a href="/todo/parallel_possibilities.html#comment-0a2d75a94903d9b181b78bb3d937aba9">comment 1</a>--</div>--<div class="inlinecontent">-I also think, that fetching keys via rsync can be done by one rsync process, when the keys are fetched from one host. This would avoid establishing a new TCP connection for every file.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 08:41:43 2011</span>-</div>----</div>-<div class="comment" id="comment-810dacf96f33336326d504c5f686e142">--<div class="comment-subject">--<a href="/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.html#comment-810dacf96f33336326d504c5f686e142">comment 1</a>--</div>--<div class="inlinecontent">-<p>Unless you are forced to use a password, you should really be using a ssh key.</p>--<pre><code>ssh-keygen-#put local .ssh/id_?sa.pub into remote .ssh/authorized_keys (which needs to be chmod 600)-ssh-add-git annex whatever-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri May  6 14:30:02 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./forum/new_microfeatures.html">forum/new microfeatures</a>--<a href="./index.html">index</a>--<a href="./todo/done.html">todo/done</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/S3.html
@@ -1,120 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>S3</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-S3--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Support Amazon S3 as a file storage backend.</p>--<p>There's a haskell library that looks good. Not yet in Debian.</p>--<p>Multiple ways of using S3 are possible. Currently implemented as -a special type of git remote.</p>--<p>Before this can be close, I need to fix:</p>--<h2>encryption</h2>--<p>TODO</p>--<h2>unused checking</h2>--<p>One problem is <code>git annex unused</code>. Currently it only looks at the local-repository, not remotes. But if something is dropped from the local repo,-and you forget to drop it from S3, cruft can build up there.</p>--<p>This could be fixed by adding a hook to list all keys present in a remote.-Then unused could scan remotes for keys, and if they were not used locally,-offer the possibility to drop them from the remote.</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/add_--exclude_option_to_git_annex_find.html
@@ -1,102 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>add --exclude option to git annex find</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-add --exclude option to git annex find--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Seems pretty self-explanatory.</p>--<blockquote>-  <p>This was already implemented, the --exclude option can be used-  for find as well as most any other subcommand. --<span class="createlink">Joey</span> <a href="./done.html">done</a></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/add_a_git_backend.html
@@ -1,122 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>add a git backend</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-add a git backend--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>There should be a backend where the file content is stored.. in a git-repository!</p>--<p>This way, you know your annexed content is safe &amp; versioned, but you only-have to deal with the pain of git with large files in one place, and can-use all of git-annex's features everywhere else.</p>--<blockquote>-  <p>Speaking as a future user, do very, very much want. -- RichiH</p>-  -  <blockquote>-    <p>Might also be interesting to use <code>bup</code> in the git backend, to work-    around git's big file issues there. So git-annex would pull data out-    of the git backend using bup. --<span class="createlink">Joey</span> </p>-    -    <blockquote>-      <p>Very much so. Generally speaking, having one or more versioned storage back-ends with current data in the local annexes sounds incredibly useful. Still being able to get at old data in via the back-end and/or making offline backups of the full history are excellent use cases. -- RichiH</p>-    </blockquote>-  </blockquote>-</blockquote>--<p><a href="./done.html">done</a>, the bup special remote type is written! --<span class="createlink">Joey</span> </p>--<blockquote>-  <p>Yay! -- RichiH</p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/auto_remotes.html
@@ -1,130 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>auto remotes</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-auto remotes--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>It should be possible for clones to learn about how to contact-each other without remotes needing to always be explicitly set-up. Say that <code>.git-annex/remote.log</code> is maintained by git-annex-to contain:</p>--<pre><code>UUID hostname URI-</code></pre>--<p>The URI comes from configured remotes and maybe from -<code>file://&#036;(pwd)</code>, or even <code>ssh://&#036;(hostname -f)</code>-for the current repo. This format will merge without-conflicts or data loss.</p>--<p>Then when content is belived to be in a UUID, and no-configured remote has it, the remote.log can be consulted and-URIs that look likely tried. (file:// ones if the hostname-is the same (or maybe always -- a removable drive might tend-to be mounted at the same location on different hosts),-otherwise ssh:// ones.)</p>--<p>Question: When should git-annex update the remote.log? -(If not just on init.) Whenever it reads in a repo's remotes?</p>--<blockquote>-  <p>This sounds useful and the log should be updated every time any remote is being accessed. A counter or timestamp (yes, distributed times may be wrong/different) could be used to auto-prune old entries via a global and per-remote config setting. -- RichiH</p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.html">git annex init : include repo description and&#47;or UUID in commit message</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/auto_remotes/discussion.html
@@ -1,115 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>discussion</title>--<link rel="stylesheet" href="../../style.css" type="text/css" />--<link rel="stylesheet" href="../../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../../index.html">git-annex</a>/ --<a href="../../todo.html">todo</a>/ --<a href="../auto_remotes.html">auto remotes</a>/ --</span>-<span class="title">-discussion--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Remotes log should probably be stored in ".git/annex/remote.log"-instead of ".git-annex/remote.log" to prevent leaking credentials.</p>--<blockquote>-  <p>The idea is to distribute the info between repositories, which is-  why it'd go in <code>.git-annex</code>. Of course that does mean that repository-  location information would be included, and if that'd not desirable-  this feature would need to be turned off. --<span class="createlink">Joey</span> </p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../auto_remotes.html">auto remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/backendSHA1.html
@@ -1,103 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>backendSHA1</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-backendSHA1--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This backend is not finished.</p>--<p>In particular, while files can be added using it, git-annex will not notice-when their content changes, and will not create a new key for the new sha1-of the net content.</p>--<p><a href="./done.html">done</a>; use unlock subcommand and commit changes with git</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/branching.html
@@ -1,280 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>branching</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-branching--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="./done.html">done</a> !!!</p>--<p>The use of <code>.git-annex</code> to store logs means that if a repo has branches -and the user switched between them, git-annex will see different logs in-the different branches, and so may miss info about what remotes have which-files (though it can re-learn). </p>--<p>An alternative would be to store the log data directly in the git repo-as <code>pristine-tar</code> does. Problem with that approach is that git won't merge-conflicting changes to log files if they are not in the currently checked-out branch.</p>--<p>It would be possible to use a branch with a tree like this, to avoid-conflicts:</p>--<p>key/uuid/time/status</p>--<p>As long as new files are only added, and old timestamped files deleted,-there would be no conflicts.</p>--<p>A related problem though is the size of the tree objects git needs to-commit. Having the logs in a separate branch doesn't help with that.-As more keys are added, the tree object size will increase, and git will-take longer and longer to commit, and use more space. One way to deal with-this is simply by splitting the logs amoung subdirectories. Git then can-reuse trees for most directories. (Check: Does it still have to build-dup trees in memory?)</p>--<p>Another approach would be to have git-annex <em>delete</em> old logs. Keep logs-for the currently available files, or something like that. If other log-info is needed, look back through history to find the first occurance of a-log. Maybe even look at other branches -- so if the logs were on master,-a new empty branch could be made and git-annex would still know where to-get keys in that branch. </p>--<p>Would have to be careful about conflicts when deleting and bringing back-files with the same name. And would need to avoid expensive searching thru-all history to try to find an old log file.</p>--<h2>fleshed out proposal</h2>--<p>Let's use one branch per uuid, named git-annex/$UUID.</p>--<ul>-<li>I came to realize this would be a good idea when thinking about how-to upgrade. Each individual annex will be upgraded independantly,-so each will want to make a branch, and if the branches aren't distinct,-they will merge conflict for sure.</li>-<li>TODO: What will need to be done to git to make it push/pull these new-branches?</li>-<li>A given repo only ever writes to its UUID branch. So no conflicts.-<ul>-<li><strong>problem</strong>: git annex move needs to update log info for other repos!-(possibly solvable by having git-annex-shell update the log info-when content is moved using it)</li>-</ul></li>-<li>(BTW, UUIDs probably don't compress well, and this reduces the bloat of having-them repeated lots of times in the tree.)</li>-<li>Per UUID branches mean that if it wants to find a file's location-amoung configured remotes, it can examine only their branches, if-desired.</li>-<li>It's important that the per-repo branches propigate beyond immediate-remotes. If there is a central bare repo, that means push --all. Without-one, it means that when repo B pulls from A, and then C pulls from B,-C needs to get A's branch -- which means that B should have a tracking-branch for A's branch.</li>-</ul>--<p>In the branch, only one file is needed. Call it locationlog. git-annex-can cache location log changes and write them all to locationlog in-a single git operation on shutdown.</p>--<ul>-<li>TODO: what if it's ctrl-c'd with changes pending? Perhaps it should-collect them to .git/annex/locationlog, and inject that file on shutdown?</li>-<li>This will be less overhead than the current staging of all the log files.</li>-</ul>--<p>The log is not appended to, so in git we have a series of commits each of-which replaces the log's entire contens.</p>--<p>To find locations of a key, all (or all relevant) branches need to be-examined, looking backward through the history of each until a log-with a indication of the presense/absense of the key is found.</p>--<ul>-<li>This will be less expensive for files that have recently been added-or transfered.</li>-<li>It could get pretty slow when digging deeper.</li>-<li>Only 3 places in git-annex will be affected by any slowdown: move --from,-get and drop. (Update: Now also unused, whereis, fsck) </li>-</ul>--<h2>alternate</h2>--<p>As above, but use a single git-annex branch, and keep the per-UUID-info in their own log files. Hope that git can auto-merge as long as-each observing repo only writes to its own files. (Well, it can, but for-non-fast-forward merges, the git-annex branch would need to be checked out,-which is problimatic.)</p>--<p>Use filenames like:</p>--<pre><code>&lt;observing uuid&gt;/&lt;location uuid&gt;-</code></pre>--<p>That allows one repo to record another's state when doing a-<code>move</code>.</p>--<h2>outside the box approach</h2>--<p>If the problem is limited to only that the <code>.git-annex/</code> files make-branching difficult (and not to the related problem that commits to them-and having them in the tree are sorta annoying), then a simple approach-would be to have git-annex look in other branches for location log info-too.</p>--<p>The problem would then be that any locationlog lookup would need to look in-all other branches (any branch could have more current info after all),-which could get expensive.</p>--<h2>way outside the box approach</h2>--<p>Another approach I have been mulling over is keeping the log file-branch checked out in .git/annex/logs/ -- this would be a checkout of a git-repository inside a git repository, using "git fake bare" techniques. This-would solve the merge problem, since git auto merge could be used. It would-still mean all the log files are on-disk, which annoys some. It would-require some tighter integration with git, so that after a pull, the log-repo is updated with the data pulled. --<span class="createlink">Joey</span> </p>--<blockquote>-  <p>Seems I can't use git fake bare exactly. Instead, the best option-  seems to be <code>git clone --shared</code> to make a clone that uses-  <code>.git/annex/logs/.git</code> to hold its index etc, but (mostly) uses-  objects from the main repo. There would be some bloat,-  as commits to the logs made in there would not be shared with the main-  repo. Using <code>GIT_OBJECT_DIRECTORY</code> might be a way to avoid that bloat.</p>-</blockquote>--<h2>notes</h2>--<p>Another approach could be to use git-notes. It supports merging branches-of notes, with union merge strategy (a hook would have to do this after-a pull, it's not done automatically). </p>--<p>Problem: Notes are usually attached to git-objects, and there are no git objects corresponding to git-annex keys.</p>--<p>Problem: Notes are not normally copied when cloning.</p>--<hr />--<h2>elminating the merge problem</h2>--<p>Most of the above options are complicated by the problem of how to merge-changes from remotes. It should be possible to deal with the merge-problem generically. Something like this:</p>--<ul>-<li>We have a local branch <code>B</code>.</li>-<li>For remotes, there are also <code>origin/B</code>, <code>otherremote/B</code>, etc.</li>-<li>To merge two branches <code>B</code> and <code>foo/B</code>, construct a merge commit that-makes each file have all lines that were in either version of the file,-with duplicates removed (probably). Do this without checking out a tree.--- now implemented as git-union-merge</li>-<li>As a <code>post-merge</code> hook, merge <code>*/B</code> into <code>B</code>. This will ensure <code>B</code>-is always up-to-date after a pull from a remote.</li>-<li>When pushing to a remote, nothing need to be done, except ensure-<code>B</code> is either successfully pushed, or the push fails (and a pull needs to-be done to get the remote's changes merged into <code>B</code>).</li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/bare_git_repos.html">bugs/bare git repos</a>--<a href="../bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html">bugs/git annex fsck is a no-op in bare repos</a>--<a href="../forum/working_without_git-annex_commits.html">forum/working without git-annex commits</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/cache_key_info.html
@@ -1,172 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>cache key info</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-cache key info--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Most of git-annex is designed to be fast no matter how many other files are-in the annex. Things like add/get/drop/move/fsck have good locality;-they will only operate on as many files as you need them to. </p>--<p>(git commit can get a little slow with a great deal of files,-but that's out of scope -- and recent git-annex versions use queuing-to save git add from piling up too much in the index.)</p>--<p>But currently two git-annex commands are quite slow when annexes become large-in quantity of files. These are unused and stats-(Both have --fast versions that don't do as much).</p>--<p>Both are slow because both need two pieces of information that are not-quick to look up, and require examining the whole repo, very seekily:</p>--<ol>-<li>The keys present in the annex. Found by looking thru .git/annex/objects.</li>-<li>The keys referenced by files in git. Found by finding every file-in git, and looking at its symlink.</li>-</ol>--<p>Of these, the first is less expensive (typically, an annex does not have every-key in it). It could be optimized fairly simply, by adding a database-of keys present in the annex that is optimised to list them all. The-database would be updated by the few functions that move content in and-out.</p>--<p>The second is harder to optimise, because the user can delete, revert,-copy, add, etc files in git at will, and git-annex does not have a good way-to watch that and maintain a database of what keys are being referenced.</p>--<p>It could use a post-commit hook and examine files changed by commits, etc.-But then staged files would be left out. It might be sufficient to -make --fast trust the database... except unused will suggest <em>deleting</em>-data if nothing references it. Or maybe it could be required to have a-clean tree with nothing staged before running git-annex unused.</p>--<p>Anyway, this is a semi-longterm item for me. --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-25ca214a488580eb5e23c75a6e373d10">--<div class="comment-subject">--<a href="/todo/cache_key_info.html#comment-25ca214a488580eb5e23c75a6e373d10">comment 1</a>--</div>--<div class="inlinecontent">-<p>Sounds like a good idea.</p>--<ul>-<li>git annex fsck (or similar) should check/rebuild the caches</li>-<li>I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue May 17 03:27:02 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/checkout.html
@@ -1,125 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>checkout</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-checkout--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The checkout subcommand replaces the symlink that normally points at a-file's content, with a copy of the file. Once you've checked a file out,-you can edit it, and <code>git commit</code> it. On commit, git-annex will detect-if the file has been changed, and if it has, <code>add</code> its content to the-annex.</p>--<blockquote>-  <p>Internally, this will need to store the original symlink to the file, in -  <code>.git/annex/checkedout/&#036;filename</code>.</p>-  -  <ul>-  <li>git-annex uncheckout moves that back</li>-  <li>git-annex pre-commit hook checks each file being committed to see if-  it has a symlink there, and if so, removes the symlink and adds the new-  content to the annex. </li>-  </ul>-  -  <p>And it seems the file content should be copied, not moved or hard linked:</p>-  -  <ul>-  <li>Makes sure other annexes can find it if transferring it from-  this annex.</li>-  <li>Ensures it's always available for uncheckout.</li>-  <li>Avoids the last copy of a file's content being lost when-  the checked out file is modified.</li>-  </ul>-</blockquote>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/done.html
@@ -1,251 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>done</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-done--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>recently fixed <a href="../todo.html">todo</a> items.</p>--<div id="feedlink">---</div>-<p>--<a href="./git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.html">git annex init : include repo description and&#47;or UUID in commit message</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:24:24 2011</span>--</i>-</p>-<p>--<a href="./git-annex-shell.html">git-annex-shell</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./checkout.html">checkout</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./object_dir_reorg_v2.html">object dir reorg v2</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./backendSHA1.html">backendSHA1</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./gitrm.html">gitrm</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./wishlist:_support_for_more_ssh_urls_.html">wishlist: support for more ssh urls </a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./speed_up_fsck.html">speed up fsck</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./immutable_annexed_files.html">immutable annexed files</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>-<p>--<a href="./S3.html">S3</a><br />--<i>-Posted <span class="date">Sat Sep 17 09:10:11 2011</span>--</i>-</p>---</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./S3.html">S3</a>--<a href="./add_--exclude_option_to_git_annex_find.html">add --exclude option to git annex find</a>--<a href="./add_a_git_backend.html">add a git backend</a>--<a href="./backendSHA1.html">backendSHA1</a>--<a href="./branching.html">branching</a>--<a href="./checkout.html">checkout</a>--<a href="./file_copy_progress_bar.html">file copy progress bar</a>--<a href="./fsck.html">fsck</a>--<a href="./git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.html">git annex init : include repo description and&#47;or UUID in commit message</a>--<a href="./git-annex-shell.html">git-annex-shell</a>---<span class="popup">...-<span class="balloon">--<a href="./gitrm.html">gitrm</a>--<a href="./immutable_annexed_files.html">immutable annexed files</a>--<a href="./network_remotes.html">network remotes</a>--<a href="./object_dir_reorg_v2.html">object dir reorg v2</a>--<a href="./pushpull.html">pushpull</a>--<a href="./rsync.html">rsync</a>--<a href="./speed_up_fsck.html">speed up fsck</a>--<a href="./support-non-utf8-locales.html">support-non-utf8-locales</a>--<a href="./symlink_farming_commit_hook.html">symlink farming commit hook</a>--<a href="../todo.html">todo</a>--<a href="./use_cp_reflink.html">use cp reflink</a>--<a href="./using_url_backend.html">using url backend</a>--<a href="./wishlist:_support_for_more_ssh_urls_.html">wishlist: support for more ssh urls </a>--</span>-</span>--</div>-------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/file_copy_progress_bar.html
@@ -1,101 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>file copy progress bar</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-file copy progress bar--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Find a way to copy a file with a progress bar, while still preserving-stat. Easiest way might be to use pv and fix up the permissions etc-after?</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/fsck.html
@@ -1,108 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fsck</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-fsck--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>add a git annex fsck that finds keys that have no referring file</p>--<p>(done)</p>--<ul>-<li><p>Need per-backend fsck support. sha1 can checksum all files in the annex.-WORM can check filesize.</p></li>-<li><p>Both can check that annex.numcopies is satisfied. Probably only-querying the locationlog, not doing an online verification.</p></li>-</ul>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/git-annex-shell.html
@@ -1,123 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex-shell</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-git-annex-shell--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="./done.html">done</a></p>--<p>I've been considering adding a <code>git-annex-shell</code> command. This would-be similar to <code>git-shell</code> (and in fact would pass unknown commands off to-<code>git-shell</code>).</p>--<h2>Reasons</h2>--<ul>-<li>Allows locking down an account to only be able to use git-annex (and-git).</li>-<li>Avoids needing to construct complex shell commands to run on the remote-system. (Mostly already avoided by the plumbing level commands.)</li>-<li>Could possibly allow multiple things to be done with one ssh connection-in future.</li>-<li>Allows expanding <code>~</code> and <code>~user</code> in repopath on the remote system.</li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./wishlist:_Prevent_repeated_password_prompts_for_one_command.html">wishlist: Prevent repeated password prompts for one command</a>--<a href="./wishlist:_support_for_more_ssh_urls_.html">wishlist: support for more ssh urls </a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/git-annex_unused_eats_memory.html
@@ -1,115 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>git-annex unused eats memory</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-git-annex unused eats memory--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><code>git-annex unused</code> has to compare large sets of data-(all keys with content present in the repository,-with all keys used by files in the repository), and so-uses more memory than git-annex typically needs; around-60-80 mb when run in a repository with 80 thousand files.</p>--<p>I would like to reduce this. One idea is to use a bloom filter. -For example, construct a bloom filter of all keys used by files in-the repository. Then for each key with content present, check if it's-in the bloom filter. Since there can be false negatives, this might-miss finding some unused keys. The probability/size of filter-could be tunable.</p>--<p>Another way might be to scan the git log for files that got removed-or changed what key they pointed to. Correlate with keys with content-currently present in the repository (possibly using a bloom filter again),-and that would yield a shortlist of keys that are probably not used. -Then scan thru all files in the repo to make sure that none point to keys-on the shortlist.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/gitrm.html
@@ -1,101 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>gitrm</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-gitrm--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>how to handle git rm file? (should try to drop keys that have no-referring file, if it seems safe..)</p>--<p><a href="./done.html">done</a> -- I think that git annex unused and dropunused are the best-solution to this.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/hidden_files.html
@@ -1,141 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>hidden files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-hidden files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Add a <code>git annex hide &#036;file</code> that behaves like drop, checking counter info-and updating location log to say the current repo no longer has a file ---but does not actually remove the content.</p>--<p>Then <code>git annex unused</code> can be used to clean it up later. And in the-meantime, it's still locally accessible. This can be useful if you're-planning to need to free up space later, but want to hold onto the content-for a while. Possibly you'll be disconnected later, so it's easier to push-out that intent now.</p>--<p>--</p>--<p>TODO:</p>--<ul>-<li><p>Make 100% sure this is safe. Drop, etc should never check content files-are present on other repos if the location log doesn't say the repo-has the content.</p></li>-<li><p>What will <code>git annex get</code> do if it's asked to get a file that has been-hidden?</p></li>-</ul>--<blockquote>-  <p>Unless I am missing something: Make sure the data is correct (for SHA1 or other tracking) and restore locally. If that's not the case, delete and restore from remote. -- RichiH</p>-</blockquote>--<hr />--<p>Is 'unused' a good name? 'clean' and 'autoclean' would make more sense, imo. 'clean' deletes everything, whereas an optional 'autoclean' could try to be smart based on disk usage and/or SHA1, etc. -- RichiH</p>--<blockquote>-  <p>Nah, <code>git annex unused/dropunused</code> already exist.  --<span class="createlink">Joey</span> </p>-  -  <blockquote>-    <p>OK, in that case forget what I said. No idea about your internal policy, but feel free to delete this part of the page, then. -- RichiH</p>-  </blockquote>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../forum/relying_on_git_for_numcopies.html">forum/relying on git for numcopies</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/immutable_annexed_files.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>immutable annexed files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-immutable annexed files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<blockquote>-  <p>josh: Do you do anything in git-annex to try to make the files immutable?-  For instance, removing write permission, or even chattr?-  joey: I don't, but that's a very good idea-  josh: Oh, I just thought of another slightly crazy but handy idea.-  josh: I'd hate to run into a program which somehow followed the symlink and then did an unlink to replace the file.-  josh: To break that, you could create a new directory under annex's internal directory for each file, and make the directory have no write permission.</p>-</blockquote>--<p><a href="./done.html">done</a> and done --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/network_remotes.html
@@ -1,101 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>network remotes</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-network remotes--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Support for remote git repositories (ssh:// specifically can be made to-work, although the other end probably needs to have git-annex-installed..)</p>--<p><a href="./done.html">done</a>, at least get and put work..</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/object_dir_reorg_v2.html
@@ -1,343 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>object dir reorg v2</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-object dir reorg v2--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Several things suggest now would be a good time to reorgaize the object-directory. This would be annex.version=2. It will be slightly painful for-all users, so this should be the <em>last</em> reorg in the forseeable future.</p>--<ol>-<li><p>Remove colons from filenames, for <a href="../bugs/fat_support.html">fat support</a></p></li>-<li><p>Add hashing, since some filesystems do suck (like er, fat at least :)-<a href="../forum/hashing_objects_directories.html">hashing objects directories</a>-(Also, may as well hash .git-annex/* while at it -- that's what-really gets big.)</p></li>-<li><p>Add filesize metadata for <a href="../bugs/free_space_checking.html">free space checking</a>. (Currently only-present in WORM, and in an ad-hoc way.)</p></li>-<li><p>Perhaps use a generic format that will allow further metadata to be-added later. For example,-"bSHA1,s101111,kf3101c30bb23467deaec5d78c6daa71d395d1879"</p>--<p>(Probably everything after ",k" should be part of the key, even if it-contains the "," separator character. Otherwise an escaping mechanism-would be needed.)</p></li>-</ol>--<p><a href="./done.html">done</a> now! </p>--<p>Although <a href="../bugs/free_space_checking.html">free space checking</a> is not quite there --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-66db8c76b0db27cf1419ebe3dbf7ec4b">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-66db8c76b0db27cf1419ebe3dbf7ec4b">comment 1</a>--</div>--<div class="inlinecontent">-<p>What is the potential time-frame for this change? As I am not using git-annex for production yet, I can see myself waiting to avoid any potential hassle.</p>--<p>Supporting generic metadata seems like a great idea. Though if you are going this path, wouldn't it make sense to avoid metastore for mtime etc and support this natively without outside dependencies?</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 10:08:41 2011</span>-</div>----</div>-<div class="comment" id="comment-dee8e8d22410b001cdf2cf76d4de6c2f">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-dee8e8d22410b001cdf2cf76d4de6c2f">comment 1</a>--</div>--<div class="inlinecontent">-If you support generic meta-data, keep in mind that you will need to do conflict resolution. Timestamps may not be synched across all systems, so keeping a log of old metadata could be used, sorting by history and using the latest. Which leaves the situation of two incompatible changes. This would probably mean manual conflict resolution. You will probably have thought of this already, but I still wanted to make sure this is recorded. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 21:16:48 2011</span>-</div>----</div>-<div class="comment" id="comment-b0ec5418d8cf6c4d400253d4a4ff2924">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-b0ec5418d8cf6c4d400253d4a4ff2924">comment 2</a>--</div>--<div class="inlinecontent">-Hmm, I added quite a few comments at work, but they are stuck in moderation. Maybe I forgot to log in before adding them. I am surprised this one appeared immediately. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 15 21:19:25 2011</span>-</div>----</div>-<div class="comment" id="comment-e19e9a742f671f07cadaf7ab81033fdb">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-e19e9a742f671f07cadaf7ab81033fdb">comment 4</a>--</div>--<div class="inlinecontent">-<p>Well, I spent a few hours playing this evening in the 'reorg' branch in git. It seems to be shaping up pretty well; type-based refactoring in haskell makes these kind of big systematic changes a matter of editing until it compiles. And it compiles and test suite passes. But, so far I've only covered 1. 3. and 4. on the list, and have yet to deal with upgrades.</p>--<p>I'd recommend you not wait before using git-annex. I am committed to provide upgradability between annexes created with all versions of git-annex, going forward. This is important because we can have offline archival drives that sit unused for years. Git-annex will upgrade a repository to current standard the first time it sees it, and I hope the upgrade will be pretty smooth. It was not bad for the annex.version 0 to 1 upgrade earlier. The only annoyance with upgrades is that it will result in some big commits to git, as every symlink in the repo gets changed, and log files get moved to new names.</p>--<p>(The metadata being stored with keys is data that a particular backend can use, and is static to a given key, so there are no merge issues (and it won't be used to preserve mtimes, etc).)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 15 23:22:45 2011</span>-</div>----</div>-<div class="comment" id="comment-2128601c5d4fec5b1379fd3cdf866031">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-2128601c5d4fec5b1379fd3cdf866031">comment 5</a>--</div>--<div class="inlinecontent">-<p>Hashing &amp; segmenting seems to be around the corner, which is nice :)</p>--<p>Is there a chance that you will optionally add mtime to your native metadata store? If yes, I'd rather wait for v2 to start with the native system from the start. If not, I will probably set it up tonight.</p>--<p>PS: While posting from work, my comments are held for moderation once again. I am somewhat confused as to why this happens when I can just submit directly from home. And yes, I am using the same auth provider and user in both cases.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 11:51:30 2011</span>-</div>----</div>-<div class="comment" id="comment-887b37c183ed558af239012a80be2c53">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-887b37c183ed558af239012a80be2c53">comment 6</a>--</div>--<div class="inlinecontent">-<p>The mtime cannot be stored for all keys. Consider a SHA1 key. The mtime is irrelevant; 2 files with different mtimes, when added to the SHA1 backend, should get the same key.</p>--<p>Probably our spam filter doesn't like your work IP.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 16 12:32:52 2011</span>-</div>----</div>-<div class="comment" id="comment-d040bf59238731a2545f4c2394dc87f4">--<div class="comment-subject">--<a href="/todo/object_dir_reorg_v2.html#comment-d040bf59238731a2545f4c2394dc87f4">comment 7</a>--</div>--<div class="inlinecontent">-<p>Ah, OK. I assumed the metadata would be attached to a key, not part of the key. This seems to make upgrades/extensions down the line harder than they need to be, but you are right that this way, merges are not, and never will be, an issue.</p>--<p>Though with the SHA1 backend, changing files can be tracked. This means that tracking changes in mtime or other is possible. It also means that there are potential merge issues. But I won't argue the point endlessly. I can accept design decisions :)</p>--<p>The prefix at work is from a university netblock so yes, it might be on a few hundred proxy lists etc.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Wed Mar 16 17:05:38 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/parallel_possibilities.html
@@ -1,174 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>parallel possibilities</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-parallel possibilities--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>One of my reasons for using haskell was that it provides the possibility of-some parallell processing. Although since git-annex hits the filesystem-heavily and mostly runs other git commands, maybe not a whole lot.</p>--<p>Anyway, each git-annex command is broken down into a series of independant -actions, which has some potential for parallelism.</p>--<p>Each action has 3 distinct phases, basically "check", "perform", and-"cleanup". The perform actions are probably parellizable; the cleanup may be-(but not if it has to run git commands to stage state; it can queue-commands though); the check should be easily parallelizable, although they-may access the disk or run minor git query commands, so would probably not-want to run too many of them at once.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-0a2d75a94903d9b181b78bb3d937aba9">--<div class="comment-subject">--<a href="/todo/parallel_possibilities.html#comment-0a2d75a94903d9b181b78bb3d937aba9">comment 1</a>--</div>--<div class="inlinecontent">-I also think, that fetching keys via rsync can be done by one rsync process, when the keys are fetched from one host. This would avoid establishing a new TCP connection for every file.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkptNW1PzrVjYlJWP_9e499uH0mjnBV6GQ">Christian</a>-</span>---&mdash; <span class="date">Fri Apr  8 08:41:43 2011</span>-</div>----</div>-<div class="comment" id="comment-862776d34395c7c94d3d010b0a70566f">--<div class="comment-subject">--<a href="/todo/parallel_possibilities.html#comment-862776d34395c7c94d3d010b0a70566f">comment 2</a>--</div>--<div class="inlinecontent">-<p>I agree with Christian.</p>--<p>One should first make a better use of connections to remotes before exploring parallel possibilities. One should pipeline the requests and answers.</p>--<p>Of course this could be implemented using parallel&amp;concurrency features of Haskell to do this.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://ertai.myopenid.com/">npouillard</a>-</span>---&mdash; <span class="date">Fri May 20 16:14:15 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/pushpull.html
@@ -1,100 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>pushpull</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-pushpull--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>--push/--pull should take a reponame and files, and push those files-  to that repo; dropping them from the current repo</p>--<p><a href="./done.html">done</a> (move --from/--to)</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/rsync.html
@@ -1,100 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>rsync</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-rsync--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Transferring a file from a ssh:// remote should use rsync to allow resuming-of a prior transfer.</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/smudge.html
@@ -1,330 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>smudge</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-smudge--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex should use smudge/clean filters.</p>--<hr />--<p>Update: Currently, this does not look likely to work. In particular,-the clean filter needs to consume all stdin from git, which consists of the-entire content of the file. It cannot optimise by directly accessing-the file in the repository, because git may be cleaning a different-version of the file during a merge. </p>--<p>So every <code>git status</code> would need to read the entire content of all-available files, and checksum them, which is too expensive.</p>--<hr />--<p>The clean filter is run when files are staged for commit. So a user could copy-any file into the annex, git add it, and git-annex's clean filter causes-the file's key to be staged, while its value is added to the annex.</p>--<p>The smudge filter is run when files are checked out. Since git annex-repos have partial content, this would not git annex get the file content.-Instead, if the content is not currently available, it would need to do-something like return empty file content. (Sadly, it cannot create a-symlink, as git still wants to write the file afterwards.)</p>--<p>So the nice current behavior of unavailable files being clearly missing due-to dangling symlinks, would be lost when using smudge/clean filters.-(Contact git developers to get an interface to do this?)</p>--<p>Instead, we get the nice behavior of not having to remeber to <code>git annex-add</code> files, and just being able to use <code>git add</code> or <code>git commit -a</code>,-and have it use git-annex when .gitattributes says to. Also, annexed-files can be directly modified without having to <code>git annex unlock</code>.</p>--<h3>design</h3>--<p>In .gitattributes, the user would put something like "* filter=git-annex".-This way they could control which files are annexed vs added normally.</p>--<p>(git-annex could have further controls to allow eg, passing small files-through to regular processing. At least .gitattributes is a special case,-it should never be annexed...)</p>--<p>For files not configured this way, git-annex could continue to use-its symlink method -- this would preserve backwards compatability,-and even allow mixing the two methods in a repo as desired.</p>--<p>To find files in the repository that are annexed, git-annex would do-<code>ls-files</code> as now, but would check if found files have the appropriate-filter, rather than the current symlink checks. To determine the key-of a file, rather than reading its symlink, git-annex would need to-look up the git blob associated with the file -- this can be done-efficiently using the existing code in <code>Branch.catFile</code>.</p>--<p>The clean filter would inject the file's content into the annex, and hard-link from the annex to the file. Avoiding duplication of data.</p>--<p>The smudge filter can't do that, so to avoid duplication of data, it-might always create an empty file. To get the content, <code>git annex get</code>-could be used (which would hard link it). A <code>post-checkout</code> hook might-be used to set up hard links for all currently available content.</p>--<h4>clean</h4>--<p>The trick is doing it efficiently. Since git a2b665d, v1.7.4.1,-something like this works to provide a filename to the clean script:</p>--<pre><code>git config --global filter.huge.clean huge-clean %f-</code></pre>--<p>This could avoid it needing to read all the current file content from stdin-when doing eg, a git status or git commit. Instead it is passed the-filename that git is operating on, in the working directory.-(Update: No, doesn't work; git may be cleaning a different file content-than is currently on disk, and git requires all stdin be consumed too.)</p>--<p>So, WORM could just look at that file and easily tell if it is one-it already knows (same mtime and size). If so, it can short-circuit and-do nothing, file content is already cached.</p>--<p>SHA1 has a harder job. Would not want to re-sha1 the file every time,-probably. So it'd need a local cache of file stat info, mapped to known-objects.</p>--<p>But: Even with %f, git actually passes the full file content to the clean-filter, and if it fails to consume it all, it will crash (may only happen-if the file is larger than some chunk size; tried with 500 mb file and -saw a SIGPIPE.) This means unnecessary works needs to be done, -and it slows down <em>everything</em>, from <code>git status</code> to <code>git commit</code>.-<strong>showstopper</strong> I have sent a patch to the git mailing list to address-this. <a href="http://marc.info/?l=git&amp;m=131465033512157&amp;w=2">http://marc.info/?l=git&amp;m=131465033512157&amp;w=2</a> (Update: apparently-can't be fixed.)</p>--<h4>smudge</h4>--<p>The smudge script can also be provided a filename with %f, but it-cannot directly write to the file or git gets unhappy.</p>--<h3>dealing with partial content availability</h3>--<p>The smudge filter cannot be allowed to fail, that leaves the tree and-index in a weird state. So if a file's content is requested by calling-the smudge filter, the trick is to instead provide dummy content,-indicating it is not available (and perhaps saying to run "git-annex get").</p>--<p>Then, in the clean filter, it has to detect that it's cleaning a file-with that dummy content, and make sure to provide the same identifier as-it would if the file content was there. </p>--<p>I've a demo implementation of this technique in the scripts below.</p>--<hr />--<h3>test files</h3>--<p>huge-smudge:</p>--<pre>-#!/bin/sh-read f-file="$1"-echo "smudging $f" &gt;&2-if [ -e ~/$f ]; then-    cat ~/$f # possibly expensive copy here-else-    echo "$f not available"-fi-</pre>--<p>huge-clean:</p>--<pre>-#!/bin/sh-file="$1"-cat &gt;/tmp/file-# in real life, this should be done more efficiently, not trying to read-# the whole file content!-if grep -q 'not available' /tmp/file; then-    awk '{print $1}' /tmp/file # provide what we would if the content were avail!-    exit 0-fi-echo "cleaning $file" &gt;&2-# XXX store file content here-echo $file-</pre>--<p>.gitattributes:</p>--<pre>-*.huge filter=huge-</pre>--<p>in .git/config:</p>--<p><pre>-[filter "huge"]-        clean = huge-clean %f-        smudge = huge-smudge %f-<pre></p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-d96ce84b420e7aeb7e16065842116935">--<div class="comment-subject">--<a href="/todo/smudge.html#comment-d96ce84b420e7aeb7e16065842116935">git-add instead of git-annex-add</a>--</div>--<div class="inlinecontent">-would, with these modifications in place, there still be a way to <em>really</em> git-add a file? (my main repository contains both normal git and git-annex files.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://christian.amsuess.com/chrysn">chrysn</a>-</span>---&mdash; <span class="date">Sat Feb 26 17:43:21 2011</span>-</div>----</div>-<div class="comment" id="comment-a64773cbca5f3e378017ebf4ef56e4d3">--<div class="comment-subject">--<a href="/todo/smudge.html#comment-a64773cbca5f3e378017ebf4ef56e4d3">symlinks</a>--</div>--<div class="inlinecontent">-<blockquote>-  <p>(Sadly, it cannot create a symlink, as git still wants to write the file afterwards.-  So the nice current behavior of unavailable files being clearly missing due to dangling symlinks, would be lost when using smudge/clean filters. (Contact git developers to get an interface to do this?)</p>-</blockquote>--<p>Have you checked what the smudge filter sees when the input is a symlink? Because git supports tracking symlinks, so it should also support pushing symlinks through a smudge filter, right?-Either way: yes, contact the git devs, one can only ask and hope.  And if you can demonstrate the awesomeness of git-annex they might get more 1interested :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Sun Apr  3 16:30:21 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/git_rename_detection_on_file_move.html">bugs/git rename detection on file move</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/speed_up_fsck.html
@@ -1,138 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>speed up fsck</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-speed up fsck--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>moving to the git-annex branch has slowed down fsck worse than most-commands. Actually, some commands have sped up, while others like get-are slightly slower but are swamped by the normal runtime. </p>--<p>For fsck though, it has to pull each file's location log info out of git.-And, it's typically run on the entire tree.</p>--<p>Another slow one in <code>git annex copy --from</code>.</p>--<p>It would be possible to run a single <code>git cat-file --batch</code> and pass it-sha1s of location logs for file that is going to be fsked (gotten via-<code>read-tree</code>). Then just read its output until the next requested sha1 to-chunk it, and pass this in to fsck in a closure.</p>--<p>The difficulty, besides writing that is that everything that works with-location logs now reads them out of git, would need to find a way to-provide the info on a side channel of some sort.</p>--<p>If this is implemented, the same infrastructure could be used for other-commands like whereis and add. --<span class="createlink">Joey</span></p>--<blockquote>-  <p>Updated plan:</p>-  -  <p>Run <code>git ls-file --batch</code>, and cache its stdin and out handles in Branch-  state.</p>-  -  <p>To see a git-annex branch file, send it something like-  "git-annex:uuid.log", and read the content fron stdout handle.</p>-  -  <p>To detect the end of content, send "TOKEN\n", and look for -  "TOKEN missing" in its output. A good choice for TOKEN is anything-  that will never exist in the repo; 40 0's would be a fairly good choice,-  but even better seems to be something completely invalid and impossible-  to have as a sha1 or filename or ref: "".</p>-  -  <p>Hmm, except that's actually an error message sent to stderr. Unless-  stderr is connected to stdout, it might be better to look for a known,-  empty object. Could just add a git-annex:empty file to that end.</p>-</blockquote>--<p><a href="./done.html">done</a> --<span class="createlink">Joey</span> </p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/support-non-utf8-locales.html
@@ -1,126 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>support-non-utf8-locales</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-support-non-utf8-locales--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Currenty, git-annex forces output, particularly of filenames, in a utf-8-locale.</p>--<p>Note that this does not mean it cannot be used with filenames in other-encodings. git-annex is entirely encoding agnostic when it comes to -manipulating filenames. It just <em>displays</em> their names always converted to-utf-8, which  may not look right when you have a non-utf8 locale.</p>--<p>This had to be done to work around some bugs with haskell's handling-of filename encodings. In particular,</p>--<ul>-<li><a href="../bugs/unhappy_without_UTF8_locale.html">unhappy without UTF8 locale</a>: haskell crashes when told to output -a string with characters &gt; 255 in a non-utf8 locale.</li>-<li><a href="../bugs/problems_with_utf8_names.html">problems with utf8 names</a>: On many OSs, haskell expects-non-decoded raw char8 in FilePaths. In order to display a filename,-though, it needs to first be decoded, and git-annex currently assumes-it was encoded as utf8.</li>-</ul>--<p>git-annex's behavior is unlikely to improve much until haskell's-support for utf8 filenames improves. --<span class="createlink">Joey</span></p>--<blockquote>-  <p><a href="./done.html">done</a> -- I just turned off all encoding handling on stdout and stderr,-  which avoids these problems nicely. Git-annex now displays just what it-  input, at least on platforms where haskell does not decode unicode in-  FilePaths. This will later be a problem when it gets localized, but for-  now works great. --<span class="createlink">Joey</span></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/support_S3_multipart_uploads.html
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>support S3 multipart uploads</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-support S3 multipart uploads--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Did not know of this when I wrote S3 support. Ability to resume large-uploads would be good.</p>--<p><a href="http://aws.typepad.com/aws/2010/11/amazon-s3-multipart-upload.html">http://aws.typepad.com/aws/2010/11/amazon-s3-multipart-upload.html</a></p>--<p>Also allows supporting files &gt; 5 gb, a S3 limit I was not aware of.</p>--<p>NB: It would work just as well to split the object and upload the N parts-to S3, but not bother with S3's paperwork to rejoin them into one object. -Only reasons not to do that are a) backwards compatability with -the existing S3 remote and b) this would not allow accessing the content-in S3 w/o using git-annex, which could be useful in some scenarios.</p>--<p>--<span class="createlink">Joey</span></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>symlink farming commit hook</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-symlink farming commit hook--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>TODO: implement below</p>--<p>git-annex does use a lot of symlinks. Specicially, relative symlinks,-that are checked into git. To allow you to move those around without-annoyance, git-annex can run as a post-commit hook. This way, you can <code>git mv</code>-a symlink to an annexed file, and as soon as you commit, it will be fixed-up.</p>--<p><code>git annex init</code> tries to set up a post-commit hook that is itself a symlink-back to git-annex. If you want to have your own shell script in the post-commit-hook, just make it call <code>git annex</code> with no parameters. git-annex will detect-when it's run from a git hook and do the necessary fixups.</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/tahoe_lfs_for_reals.html
@@ -1,189 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>tahoe lfs for reals</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-tahoe lfs for reals--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="../forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.html">tips: special&#95;remotes&#47;hook with tahoe-lafs</a> is a good-start, but Zooko points out that using Tahoe's directory translation layer-incurs O(N^2) overhead as the number of objects grows. Also, making-hash subdirectories in Tahoe is expensive. Instead it would be good to use-it as a key/value store directly. The catch is that doing so involves-sending the content to Tahoe, and getting back a key identifier.</p>--<p>This would be fairly easy to do as a <a href="../backends.html">backend</a>, which can assign its-own key names (although typically done before data is stored in it),-but a tahoe-lafs special remote would be more flexible.</p>--<p>To support a special remote, a mapping is needed from git-annex keys to-Tahoe keys.</p>--<p>The best place to store this mapping is perhaps as a new field in the-location log:</p>--<pre><code>date present repo-uuid newfields-</code></pre>--<p>This way, each remote can store its own key-specfic data in the same place-as other key-specific data, with minimal overhead.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-623625dc982d67c929729ac22b7e02b0">--<div class="comment-subject">--<a href="/todo/tahoe_lfs_for_reals.html#comment-623625dc982d67c929729ac22b7e02b0">performance</a>--</div>--<div class="inlinecontent">-<p>Hm... O(N^2)? I think it just takes O(N). To read an entry out of a directory you have to download the entire directory (and store it in RAM and parse it). The constants are basically "too big to be good but not big enough to be prohibitive", I think. jctang has reported that his special remote hook performs well enough to use, but it would be nice if it were faster.</p>--<p>The Tahoe-LAFS folks are working on speeding up mutable files, by the way, after which we would be able to speed up directories.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=zooko&amp;do=goto">zooko</a>--</span>---&mdash; <span class="date">Tue May 17 15:20:39 2011</span>-</div>----</div>-<div class="comment" id="comment-f7d655c03881ee5a00fe6c840d3cbac7">--<div class="comment-subject">--<a href="/todo/tahoe_lfs_for_reals.html#comment-f7d655c03881ee5a00fe6c840d3cbac7">comment 2</a>--</div>--<div class="inlinecontent">-<p>Whoops! You'd only told me O(N) twice before..</p>--<p>So this is not too high priority. I think I would like to get the per-remote storage sorted out anyway, since probably it will be the thing needed to convert the URL backend into a special remote, which would then allow ripping out the otherwise unused pluggable backend infrastructure.</p>--<p>Update: Per-remote storage is now sorted out, so this could be implemented-if it actually made sense to do so.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue May 17 15:57:33 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/union_mounting.html
@@ -1,106 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>union mounting</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-union mounting--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>It should be possible to union mount annexes. So if multiple drives have-content, an annex mounting them both would have available all the -content from all the drives.</p>--<p>This could be done by just making .git/annex/KEY link to the actual content-on the mounted annex.</p>--<p>(Need to make sure the <a href="../copies.html">copy tracking</a> code does not-confused and think the symlink is a copy of the content.. Also need to make-sure that code that writes to .git/annex does not follow symlinks.))</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Wed Apr 13 16:18:01 2011</span>-<!-- Created <span class="date">Wed Apr 13 16:18:01 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/use_cp_reflink.html
@@ -1,103 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>use cp reflink</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-use cp reflink--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The unlock command needs to copy a file, and it would be great to use this:-    cp --reflink=auto src dst</p>--<p>O(1) overhead on BTRFS. Needs coreutils 7.6; and remember that git-annex-may be used on systems without coreutils..</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/using_url_backend.html
@@ -1,108 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using url backend</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-using url backend--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>There is no way to <code>git annex add</code> a file using the URL <a href="../backends.html">backend</a>.</p>--<p>For now, we have to manually make the symlink. Something like this:</p>--<pre><code>ln -s .git/annex/URL:http:%%www.example.com%foo.tar.gz-</code></pre>--<p>Note the escaping of slashes.</p>--<p>A <code>git annex register &lt;url&gt;</code> command could do this..</p>--<p><a href="./done.html">done</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Tue Mar  1 17:21:32 2011</span>-<!-- Created <span class="date">Tue Mar  1 17:21:32 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/wishlist:_support_for_more_ssh_urls_.html
@@ -1,121 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: support for more ssh urls </title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-wishlist: support for more ssh urls --</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex does not seem to support all kinds of urls that git does.</p>--<p>Specifically, if I have ~/bar set up on host foo:</p>--<pre><code>[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-</code></pre>--<blockquote>-  <p>scp-style is now supported.</p>-  -  <p><code>~</code> 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-  <code>git annex shell</code> that is run on the remote side-  (something I am <a href="./git-annex-shell.html">considering</a> for other reasons), it-  could handle the expansions there. --<span class="createlink">Joey</span></p>-  -  <p>Update: Now <code>~</code> expansions are supported. <a href="./done.html">done</a></p>-</blockquote>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/todo/wishlist:_swift_backend.html
@@ -1,161 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>wishlist: swift backend</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../todo.html">todo</a>/ --</span>-<span class="title">-wishlist: swift backend--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="http://swift.openstack.org/">swift</a> 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.</p>--<p>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</p>--<p>Richard</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-39fca9dbb05fba6d60113ab6f368510f">--<div class="comment-subject">--<a href="/todo/wishlist:_swift_backend.html#comment-39fca9dbb05fba6d60113ab6f368510f">comment 1</a>--</div>--<div class="inlinecontent">-I don't suppose this SWIFT api is compatible with the eucalytpus walrus api ?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>-</span>---&mdash; <span class="date">Sat May 14 06:04:36 2011</span>-</div>----</div>-<div class="comment" id="comment-278ec9e9bb4265fcc0ba54ed26454136">--<div class="comment-subject">--<a href="/todo/wishlist:_swift_backend.html#comment-278ec9e9bb4265fcc0ba54ed26454136">comment 2</a>--</div>--<div class="inlinecontent">-It does offer a S3 compability layer, but that is de facto non-functioning as of right now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Sat May 14 11:00:51 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/transferring_data.html
@@ -1,121 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>transferring data</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-transferring data--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex can transfer data to or from any of a repository's git remotes.-Depending on where the remote is, the data transfer is done using rsync-(over ssh or locally), or plain cp (with copy-on-write-optimisations on supported filesystems), or using curl (for repositories-on the web). Some <a href="./special_remotes.html">special remotes</a> are also supported that are not-traditional git remotes.</p>--<p>If a data transfer is interrupted, git-annex retains the partial transfer-to allow it to be automatically resumed later.</p>--<p>It's equally easy to transfer a single file to or from a repository,-or to launch a retrievel of a massive pile of files from whatever-repositories they are scattered amoung.</p>--<p>git-annex automatically uses whatever remotes are currently accessible,-preferring ones that are less expensive to talk to.</p>--<table class="img"><caption>A real-world repository interconnection map-(generated by git-annex map)</caption><tr><td><a href="./repomap.png"><img src="./repomap.png" width="640" height="533" class="img" /></a></td></tr></table>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./use_case/Alice.html">use case/Alice</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/trust.html
@@ -1,167 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>trust</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-trust--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Git-annex supports three levels of trust of a repository:</p>--<ul>-<li>semitrusted (default)</li>-<li>untrusted</li>-<li>trusted</li>-</ul>--<h2>semitrusted</h2>--<p>Normally, git-annex does not fully trust its stored <a href="./location_tracking.html">location tracking</a>-information. When removing content, it will directly check-that other repositories have enough <a href="./copies.html">copies</a>.</p>--<p>Generally that explicit checking is a good idea. Consider that the current-<a href="./location_tracking.html">location tracking</a> information for a remote may not yet have propagated-out. Or, a remote may have suffered a catastrophic loss of data, or itself-been lost.</p>--<p>There is still some trust involved here. A semitrusted repository is-depended on to retain a copy of the file content; possibly the only-<a href="./copies.html">copy</a>.</p>--<p>(Being semitrusted is the default. The <code>git annex semitrust</code> command-restores a repository to this default, when it has been overridden.-The <code>--semitrust</code> option can temporarily restore a repository to this-default.)</p>--<h2>untrusted</h2>--<p>An untrusted repository is not trusted to retain data at all. Git-annex-will retain sufficient <a href="./copies.html">copies</a> of data elsewhere.</p>--<p>This is a good choice for eg, portable drives that could get lost. Or,-if a disk is known to be dying, you can set it to untrusted and let-<code>git annex fsck</code> warn about data that needs to be copied off it.</p>--<p>To configure a repository as untrusted, use the <code>git annex untrust</code>-command.</p>--<h2>trusted</h2>--<p>Sometimes, you may have reasons to fully trust the location tracking-information for a repository. For example, it may be an offline-archival drive, from which you rarely or never remove content. Deciding-when it makes sense to trust the tracking info is up to you.</p>--<p>One way to handle this is just to use <code>--force</code> when a command cannot-access a remote you trust. Or to use <code>--trust</code> to specify a repisitory to-trust temporarily.</p>--<p>To configure a repository as fully and permanently trusted,-use the <code>git annex trust</code> command.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./copies.html">copies</a>--<a href="./forum/relying_on_git_for_numcopies.html">forum/relying on git for numcopies</a>--<a href="./internals.html">internals</a>--<a href="./location_tracking.html">location tracking</a>--<a href="./walkthrough/removing_files:_When_things_go_wrong.html">walkthrough/removing files: When things go wrong</a>--<a href="./walkthrough/untrusted_repositories.html">walkthrough/untrusted repositories</a>--<a href="./walkthrough/using_the_web.html">walkthrough/using the web</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/upgrades.html
@@ -1,198 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>upgrades</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-upgrades--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Occasionally improvments are made to how git-annex stores its data,-that require an upgrade process to convert repositories made with an older-version to be used by a newer version. It's annoying, it should happen-rarely, but sometimes, it's worth it.</p>--<p>There's a committment that git-annex will always support upgrades from all-past versions. After all, you may have offline drives from an earlier-git-annex, and might want to use them with a newer git-annex.</p>--<p>git-annex will notice if it is run in a repository that-needs an upgrade, and refuse to do anything. To upgrade,-use the "git annex upgrade" command.</p>--<p>The upgrade process is guaranteed to be conflict-free. Unless you-already have git conflicts in your repository or between repositories.-Upgrading a repository with conflicts is not recommended; resolve the-conflicts first before upgrading git-annex.</p>--<h2>Upgrade events, so far</h2>--<h3>v2 -&gt; v3 (git-annex version 3.x)</h3>--<p>Involved moving the .git-annex/ directory into a separate git-annex branch.</p>--<p>After this upgrade, you should make sure you include the git-annex branch-when git pushing and pulling.</p>--<h3>tips for this upgrade</h3>--<p>This upgrade is easier (and faster!) than the previous upgrades.-You don't need to upgrade every repository at once; it's sufficient-to upgrade each repository only when you next use it.</p>--<p>Example upgrade process:</p>--<pre><code>cd localrepo-git pull-git annex upgrade-git commit -m "upgrade v2 to v3"-git gc-</code></pre>--<h3>v1 -&gt; v2 (git-annex version 0.20110316)</h3>--<p>Involved adding hashing to .git/annex/ and changing the names of all keys.-Symlinks changed.</p>--<p>Also, hashing was added to location log files in .git-annex/.-And .gitattributes needed to have another line added to it.</p>--<p>Previously, files added to the SHA <a href="./backends.html">backends</a> did not have their file-size tracked, while files added to the WORM backend did. Files added to-the SHA backends after the conversion will have their file size tracked,-and that information will be used by git-annex for disk free space checking.-To ensure that information is available for all your annexed files, see-<a href="./upgrades/SHA_size.html">SHA size</a>.</p>--<h3>tips for this upgrade</h3>--<p>This upgrade can tend to take a while, if you have a lot of files.</p>--<p>Each clone of a repository should be individually upgraded.-Until a repository's remotes have been upgraded, git-annex-will refuse to communicate with them.</p>--<p>Start by upgrading one repository, and then you can commit-the changes git-annex staged during upgrade, and push them out to other-repositories. And then upgrade those other repositories. Doing it this-way avoids git-annex doing some duplicate work during the upgrade.</p>--<p>Example upgrade process:</p>--<pre><code>cd localrepo-git pull-git annex upgrade-git commit -m "upgrade v1 to v2"-git push--ssh remote-cd remoterepo-git pull-git annex upgrade-...-</code></pre>--<h3>v0 -&gt; v1 (git-annex version 0.04)</h3>--<p>Involved a reorganisation of the layout of .git/annex/. Symlinks changed.</p>--<p>Handled more or less transparently, although git-annex was just 2 weeks-old at the time, and had few users other than Joey.</p>--<p>Before doing this upgrade, set annex.version:</p>--<pre><code>git config annex.version 0-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./upgrades/SHA_size.html">upgrades/SHA size</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/upgrades/SHA_size.html
@@ -1,125 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>SHA size</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../upgrades.html">upgrades</a>/ --</span>-<span class="title">-SHA size--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Before version 2 of the git-annex repository, files added to the SHA-<a href="../backends.html">backends</a> did not have their file size tracked, while files added to the-WORM backend did. The file size information is used for disk free space-checking.</p>--<p>Files added to the SHA backends after the conversion will have their file-size tracked automatically. This disk free space checking is an optional-feature and since you're more likely to be using more recently added files,-you're unlikely to see any bad effect if you do nothing.</p>--<p>That said, if you have old files added to SHA backends that lack file size-tracking info, here's how you can add that info. After <a href="../upgrades.html">upgrading</a>-to repository version 2, in each repository run:</p>--<pre><code>git annex migrate-git commit -m 'migrated keys for v2'-</code></pre>--<p>The usual caveats about <a href="../walkthrough/migrating_data_to_a_new_backend.html">migrating data to a new backend</a>-apply; you will end up with unused keys that you can later clean up with-<code>git annex unused</code>.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../upgrades.html">upgrades</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/use_case/Alice.html
@@ -1,120 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Alice</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../index.html">use case</a>/ --</span>-<span class="title">-Alice--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h3>use case: The Nomad</h3>--<p>Alice is always on the move, often with her trusty netbook and a small-handheld terabyte USB drive, or a smaller USB keydrive. She has a server-out there on the net. She stores data, encrypted in the Cloud.</p>--<p>All these things can have different files on them, but Alice no longer-has to deal with the tedious process of keeping them manually in sync,-or remembering where she put a file. git-annex manages all these data-sources as if they were git remotes. <br />-<small><a href="../special_remotes.html">more about special remotes</a></small></p>--<p>When she has 1 bar on her cell, Alice queues up interesting files on her-server for later. At a coffee shop, she has git-annex download them to her-USB drive. High in the sky or in a remote cabin, she catches up on-podcasts, videos, and games, first letting git-annex copy them from-her USB drive to the netbook (this saves battery power). <br />-<small><a href="../transferring_data.html">more about transferring data</a></small></p>--<p>When she's done, she tells git-annex which to keep and which to remove.-They're all removed from her netbook to save space, and Alice knows-that next time she syncs up to the net, her changes will be synced back -to her server. <br />-<small><a href="../distributed_version_control.html">more about distributed version control</a></small></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/use_case/Bob.html
@@ -1,129 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Bob</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../index.html">use case</a>/ --</span>-<span class="title">-Bob--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h3>use case: The Archivist</h3>--<p>Bob has many drives to archive his data, most of them kept offline, in a-safe place.</p>--<p>With git-annex, Bob has a single directory tree that includes all-his files, even if their content is being stored offline. He can-reorganize his files using that tree, committing new versions to git,-without worry about accidentally deleting anything. </p>--<p>When Bob needs access to some files, git-annex can tell him which drive(s)-they're on, and easily make them available. Indeed, every drive knows what-is on every other drive. <br />-<small><a href="../location_tracking.html">more about location tracking</a></small></p>--<p>Bob thinks long-term, and so he appreciates that git-annex uses a simple-repository format. He knows his files will be accessible in the future-even if the world has forgotten about git-annex and git. <br />-<small><a href="../future_proofing.html">more about future-proofing</a></small></p>--<p>Run in a cron job, git-annex adds new files to archival drives at night. It-also helps Bob keep track of intentional, and unintentional copies of-files, and logs information he can use to decide when it's time to duplicate-the content of old drives. <br />-<small><a href="../copies.html">more about backup copies</a></small></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../not.html">not</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users.html
@@ -1,116 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>users</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-users--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Users of this wiki, feel free to create a subpage of this one and talk-about yourself on it, within reason. You can link to it to sign your-comments.</p>--<h1>List of users</h1>--<p>--<a href="./users/chrysn.html">chrysn</a>--</p>-<p>--<a href="./users/fmarier.html">fmarier</a>--</p>-<p>--<a href="./users/joey.html">joey</a>--</p>---</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/chrysn.html
@@ -1,103 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>chrysn</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../users.html">users</a>/ --</span>-<span class="title">-chrysn--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<ul>-<li><strong>name</strong>: chrysn</li>-<li><strong>website</strong>: <a href="http://christian.amsuess.com/">http://christian.amsuess.com/</a></li>-<li><strong>uses git-annex for</strong>: managing the family's photos (and possibly videos and music in the future)</li>-<li><strong>likes git-annex because</strong>: it adds a layer of commit semantics over a regular file system without keeping everything in duplicate locally</li>-<li><strong>would like git-annex to</strong>: not be required any more as git itself learns to use cow filesystems to avoid abundant disk usage and gets better with sparser checkouts (git-annex might then still be a simpler tool that watches over what can be safely dropped for a sparser checkout)</li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/fmarier.html
@@ -1,104 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fmarier</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../users.html">users</a>/ --</span>-<span class="title">-fmarier--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<h1>François Marier</h1>--<p>Free Software and Debian Developer. Lead developer of <a href="http://www.libravatar.org">Libravatar</a></p>--<ul>-<li><a href="http://feeding.cloud.geek.nz">Blog</a></li>-<li><a href="http://identi.ca/fmarier">Identica</a> / <a href="http://twitter.com/fmarier">Twitter</a></li>-</ul>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/joey.html
@@ -1,98 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>joey</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../users.html">users</a>/ --</span>-<span class="title">-joey--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Joey Hess <a href="mailto:joey@kitenet.net">&#x6A;&#111;&#x65;&#121;&#64;&#107;&#105;&#x74;&#x65;n&#x65;t&#46;&#110;e&#116;</a> <br />-<a href="http://kitenet.net/~joey/">http://kitenet.net/~joey/</a></p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough.html
@@ -1,806 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>walkthrough</title>--<link rel="stylesheet" href="style.css" type="text/css" />--<link rel="stylesheet" href="local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="./index.html">git-annex</a>/ --</span>-<span class="title">-walkthrough--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>A walkthrough of the basic features of git-annex.</p>--<div class="toc">-	<ol>-		<li class="L2"><a href="#index1h2">creating a repository</a>-		</li>-		<li class="L2"><a href="#index2h2">adding a remote</a>-		</li>-		<li class="L2"><a href="#index3h2">adding files</a>-		</li>-		<li class="L2"><a href="#index4h2">renaming files</a>-		</li>-		<li class="L2"><a href="#index5h2">getting file content</a>-		</li>-		<li class="L2"><a href="#index6h2">transferring files: When things go wrong</a>-		</li>-		<li class="L2"><a href="#index7h2">removing files</a>-		</li>-		<li class="L2"><a href="#index8h2">removing files: When things go wrong</a>-		</li>-		<li class="L2"><a href="#index9h2">modifying annexed files</a>-		</li>-		<li class="L2"><a href="#index10h2">using ssh remotes</a>-		</li>-		<li class="L2"><a href="#index11h2">moving file content between repositories</a>-		</li>-		<li class="L2"><a href="#index12h2">unused data</a>-		</li>-		<li class="L2"><a href="#index13h2">fsck: verifying your data</a>-		</li>-		<li class="L2"><a href="#index14h2">fsck: when things go wrong</a>-		</li>-		<li class="L2"><a href="#index15h2">backups</a>-		</li>-		<li class="L2"><a href="#index16h2">more</a>-		</li>-	</ol>-</div>--<h2><a name="index1h2"></a><a href="./walkthrough/creating_a_repository.html">creating a repository</a></h2>-<p>This is very straightforward. Just tell it a description of the repository.</p>--<pre><code># mkdir ~/annex-# cd ~/annex-# git init-# git annex init "my laptop"-</code></pre>--<h2><a name="index2h2"></a><a href="./walkthrough/adding_a_remote.html">adding a remote</a></h2>-<p>Like any other git repository, git-annex repositories have remotes.-Let's start by adding a USB drive as a remote.</p>--<pre><code># sudo mount /media/usb-# cd /media/usb-# git clone ~/annex-# cd annex-# git annex init "portable USB drive"-# git remote add laptop ~/annex-# cd ~/annex-# git remote add usbdrive /media/usb/annex-</code></pre>--<p>This is all standard ad-hoc distributed git repository setup.-The only git-annex specific part is telling it the name-of the new repository created on the USB drive.</p>--<p>Notice that both repos are set up as remotes of one another. This lets-either get annexed files from the other. You'll want to do that even-if you are using git in a more centralized fashion.</p>--<h2><a name="index3h2"></a><a href="./walkthrough/adding_files.html">adding files</a></h2>-<pre><code># cd ~/annex-# cp /tmp/big_file .-# cp /tmp/debian.iso .-# git annex add .-add big_file ok-add debian.iso ok-# git commit -a -m added-</code></pre>--<p>When you add a file to the annex and commit it, only a symlink to-the annexed content is committed. The content itself is stored in-git-annex's backend.</p>--<h2><a name="index4h2"></a><a href="./walkthrough/renaming_files.html">renaming files</a></h2>-<pre><code># cd ~/annex-# git mv big_file my_cool_big_file-# mkdir iso-# git mv debian.iso iso/-# git commit -m moved-</code></pre>--<p>You can use any normal git operations to move files around, or even-make copies or delete them.</p>--<p>Notice that, since annexed files are represented by symlinks,-the symlink will break when the file is moved into a subdirectory.-But, git-annex will fix this up for you when you commit ---it has a pre-commit hook that watches for and corrects broken symlinks.</p>--<h2><a name="index5h2"></a><a href="./walkthrough/getting_file_content.html">getting file content</a></h2>-<p>A repository does not always have all annexed file contents available.-When you need the content of a file, you can use "git annex get" to-make it available.</p>--<p>We can use this to copy everything in the laptop's annex to the-USB drive.</p>--<pre><code># cd /media/usb/annex-# git pull laptop-# git annex get .-get my_cool_big_file (from laptop...) ok-get iso/debian.iso (from laptop...) ok-</code></pre>--<p>Notice that you had to git pull from laptop first, this lets git-annex know-what has changed in laptop, and so it knows about the files present there and-can get them. The alternate approach is to set up a central bare repository,-and always push changes to it after committing them, then in the above,-you can just pull from the central repository to get synced up to all-repositories.</p>--<h2><a name="index6h2"></a><a href="./walkthrough/transferring_files:_When_things_go_wrong.html">transferring files: When things go wrong</a></h2>-<p>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 -<a href="./location_tracking.html">location tracking</a> 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:</p>--<pre><code># 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-</code></pre>--<h2><a name="index7h2"></a><a href="./walkthrough/removing_files.html">removing files</a></h2>-<p>You can always drop files safely. Git-annex checks that some other annex-has the file before removing it.</p>--<pre><code># git annex drop iso/debian.iso-drop iso/Debian_5.0.iso ok-</code></pre>--<h2><a name="index8h2"></a><a href="./walkthrough/removing_files:_When_things_go_wrong.html">removing files: When things go wrong</a></h2>-<p>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.</p>--<pre><code># 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 annex.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 annex.numcopies.)-failed-</code></pre>--<p>Here you might --force it to drop <code>important_file</code> if you <a href="./trust.html">trust</a> your backup.-But <code>other.iso</code> 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.</p>--<h2><a name="index9h2"></a><a href="./walkthrough/modifying_annexed_files.html">modifying annexed files</a></h2>-<p>Normally, the content of files in the annex is prevented from being modified.-That's a good thing, because it might be the only copy, you wouldn't-want to lose it in a fumblefingered mistake.</p>--<pre><code># echo oops &gt; my_cool_big_file-bash: my_cool_big_file: Permission denied-</code></pre>--<p>In order to modify a file, it should first be unlocked.</p>--<pre><code># git annex unlock my_cool_big_file-unlock my_cool_big_file (copying...) ok-</code></pre>--<p>That replaces the symlink that normally points at its content with a copy-of the content. You can then modify the file like any regular file. Because-it is a regular file.</p>--<p>(If you decide you don't need to modify the file after all, or want to discard-modifications, just use <code>git annex lock</code>.)</p>--<p>When you <code>git commit</code>, git-annex's pre-commit hook will automatically-notice that you are committing an unlocked file, and add its new content-to the annex. The file will be replaced with a symlink to the new content,-and this symlink is what gets committed to git in the end.</p>--<pre><code># echo "now smaller, but even cooler" &gt; my_cool_big_file-# git commit my_cool_big_file -m "changed an annexed file"-add my_cool_big_file ok-[master 64cda67] changed an annexed file- 1 files changed, 1 insertions(+), 1 deletions(-)-</code></pre>--<p>There is one problem with using <code>git commit</code> like this: Git wants to first-stage the entire contents of the file in its index. That can be slow for-big files (sorta why git-annex exists in the first place). So, the-automatic handling on commit is a nice safety feature, since it prevents-the file content being accidentally committed into git. But when working with-big files, it's faster to explicitly add them to the annex yourself-before committing.</p>--<pre><code># echo "now smaller, but even cooler yet" &gt; my_cool_big_file-# git annex add my_cool_big_file-add my_cool_big_file ok-# git commit my_cool_big_file -m "changed an annexed file"-</code></pre>--<h2><a name="index10h2"></a><a href="./walkthrough/using_ssh_remotes.html">using ssh remotes</a></h2>-<p>So far in this walkthrough, git-annex has been used with a remote-repository on a USB drive. But it can also be used with a git remote-that is truely remote, a host accessed by ssh.</p>--<p>Say you have a desktop on the same network as your laptop and want-to clone the laptop's annex to it:</p>--<pre><code># git clone ssh://mylaptop/home/me/annex ~/annex-# cd ~/annex-# git annex init "my desktop"-</code></pre>--<p>Now you can get files and they will be transferred (using <code>rsync</code> via <code>ssh</code>):</p>--<pre><code># git annex get my_cool_big_file-get my_cool_big_file (getting UUID for origin...) (from origin...)-WORM-s2159-m1285650548--my_cool_big_file       100% 2159     2.1KB/s   00:00-ok-</code></pre>--<p>When you drop files, git-annex will ssh over to the remote and make-sure the file's content is still there before removing it locally:</p>--<pre><code># git annex drop my_cool_big_file-drop my_cool_big_file (checking origin..) ok-</code></pre>--<p>Note that normally git-annex prefers to use non-ssh remotes, like-a USB drive, before ssh remotes. They are assumed to be faster/cheaper to-access, if available. There is a annex-cost setting you can configure in-<code>.git/config</code> to adjust which repositories it prefers. See-<a href="./git-annex.html">the man page</a> for details.</p>--<p>Also, note that you need full shell access for this to work -- -git-annex needs to be able to ssh in and run commands. Or at least,-your shell needs to be able to run the <a href="./git-annex-shell.html">git-annex-shell</a> command.</p>--<h2><a name="index11h2"></a><a href="./walkthrough/moving_file_content_between_repositories.html">moving file content between repositories</a></h2>-<p>Often you will want to move some file contents from a repository to some-other one. For example, your laptop's disk is getting full; time to move-some files to an external disk before moving another file from a file-server to your laptop. Doing that by hand (by using <code>git annex get</code> and-<code>git annex drop</code>) is possible, but a bit of a pain. <code>git annex move</code>-makes it very easy.</p>--<pre><code># git annex move my_cool_big_file --to usbdrive-move my_cool_big_file (to usbdrive...) ok-# git annex move video/hackity_hack_and_kaxxt.mov --from fileserver-move video/hackity_hack_and_kaxxt.mov (from fileserver...)-WORM-s86050597-m1274316523--hackity_hack_and_kax 100%   82MB 199.1KB/s   07:02-ok-</code></pre>--<h2><a name="index12h2"></a><a href="./walkthrough/unused_data.html">unused data</a></h2>-<p>It's possible for data to accumulate in the annex that no files point to-anymore. One way it can happen is if you <code>git rm</code> a file without -first calling <code>git annex drop</code>. And, when you modify an annexed file, the old-content of the file remains in the annex. Another way is when migrating-between key-value <span class="createlink">backends</span>.</p>--<p>This might be historical data you want to preserve, so git-annex defaults to-preserving it. So from time to time, you may want to check for such data and-eliminate it to save space.</p>--<pre><code># git annex unused-unused . (checking for unused data...) -  Some annexed data is no longer used by any files in the repository.-    NUMBER  KEY-    1       WORM-s3-m1289672605--file-    2       WORM-s14-m1289672605--file-  (To see where data was previously used, try: git log --stat -S'KEY')-  (To remove unwanted data: git-annex dropunused NUMBER)-ok-</code></pre>--<p>After running <code>git annex unused</code>, you can follow the instructions to examine-the history of files that used the data, and if you decide you don't need that-data anymore, you can easily remove it:</p>--<pre><code># git annex dropunused 1-dropunused 1 ok-</code></pre>--<p>Hint: To drop a lot of unused data, use a command like this:</p>--<pre><code># git annex dropunused `seq 1 1000`-</code></pre>--<h2><a name="index13h2"></a><a href="./walkthrough/fsck:_verifying_your_data.html">fsck: verifying your data</a></h2>-<p>You can use the fsck subcommand to check for problems in your data. What-can be checked depends on the key-value <a href="./backends.html">backend</a> 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-annex.numcopies setting is satisfied for all files.</p>--<pre><code># git annex fsck-fsck some_file (checksum...) ok-fsck my_cool_big_file (checksum...) ok-...-</code></pre>--<p>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.</p>--<pre><code># git annex fsck my_cool_big_file-fsck my_cool_big_file (checksum...) ok-</code></pre>--<h2><a name="index14h2"></a><a href="./walkthrough/fsck:_when_things_go_wrong.html">fsck: when things go wrong</a></h2>-<p>Fsck never deletes possibly bad data; instead it will be moved to-<code>.git/annex/bad/</code> for you to recover. Here is a sample of what fsck-might say about a badly messed up annex:</p>--<pre><code># 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-</code></pre>--<h2><a name="index15h2"></a><a href="./walkthrough/backups.html">backups</a></h2>-<p>git-annex can be configured to require more than one copy of a file exists,-as a simple backup for your data. This is controlled by the "annex.numcopies"-setting, which defaults to 1 copy. Let's change that to require 2 copies,-and send a copy of every file to a USB drive.</p>--<pre><code># echo "* annex.numcopies=2" &gt;&gt; .gitattributes-# git annex copy . --to usbdrive-</code></pre>--<p>Now when we try to <code>git annex drop</code> a file, it will verify that it-knows of 2 other repositories that have a copy before removing its-content from the current repository.</p>--<p>You can also vary the number of copies needed, depending on the file name.-So, if you want 3 copies of all your flac files, but only 1 copy of oggs:</p>--<pre><code># echo "*.ogg annex.numcopies=1" &gt;&gt; .gitattributes-# echo "*.flac annex.numcopies=3" &gt;&gt; .gitattributes-</code></pre>--<p>Or, you might want to make a directory for important stuff, and configure-it so anything put in there is backed up more thoroughly:</p>--<pre><code># mkdir important_stuff-# echo "* annex.numcopies=3" &gt; important_stuff/.gitattributes-</code></pre>--<p>For more details about the numcopies setting, see <a href="./copies.html">copies</a>.</p>--<h2><a name="index16h2"></a><a href="./walkthrough/more.html">more</a></h2>-<p>So ends the walkthrough. By now you should be able to use git-annex.</p>--<p>Want more? See the <a href="./cheatsheet.html">cheatsheet</a> for info about all of git-annex's hidden-features.</p>----</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-2eef00910b0345dd531f62162cb713c7">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-2eef00910b0345dd531f62162cb713c7">comment 1</a>--</div>--<div class="inlinecontent">-After doing the above with two required copy per file, <code>git annex fsck</code> complained that I had only one copy per file even though I had created my clone, already. Once I <code>git pull</code>ed from the second repo, not getting any changes for obvious reasons, <code>git annex fsck</code> was happy. So I am not sure how my addition was incorrect. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Mar 18 21:18:49 2011</span>-</div>----</div>-<div class="comment" id="comment-7153e4aed3f3a62684dd86149c45916c">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-7153e4aed3f3a62684dd86149c45916c">comment 2</a>--</div>--<div class="inlinecontent">-Yes, you have to pull down location tracking information in order for fsck to be satisfied in that situation. But since this is a walkthrough, and neither fsck or numcopies settings are mentioned until later, it's ok for this pull to be described a few steps along in <a href="./walkthrough/getting_file_content.html">getting file content</a>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Mar 19 11:35:38 2011</span>-</div>----</div>-<div class="comment" id="comment-b82f3a6a64b7a80325a93dda7ade5c8a">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-b82f3a6a64b7a80325a93dda7ade5c8a">comment 1</a>--</div>--<div class="inlinecontent">-<p>I may be missing something obvious, but when I copy to a remote repository, the object files are created, but no softlinks are created. When I pull everything from the remote, it pulls only files the local repo knows about already.</p>--<pre><code>    A-   / \-  B   C-</code></pre>--<p>Moving from B to A creates no symlinks in A but the object files are moved to A. Copying back from A to B restores the object files in B and keeps them in A.</p>--<p>Copying from A to an empty C does not create any object files nor symlinks. Copying from C to A creates no symlinks in A but the object files are copied to A.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 22 19:41:51 2011</span>-</div>----</div>-<div class="comment" id="comment-5831f9a47997b4e980b9001cb0428cbd">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-5831f9a47997b4e980b9001cb0428cbd">comment 2</a>--</div>--<div class="inlinecontent">-<p><code>git annex move</code> only moves content. All symlink management is handled by git, so you have to keep repositories in sync using git as you would any other repo. When you <code>git pull B</code> in A, it will get whatever symlinks were added to B.</p>--<p>(It can be useful to use a central bare repo and avoid needing to git pull from one repo to another, then you can just always push commits to the central repo, and pull down all changes from other repos.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Tue Mar 22 20:38:10 2011</span>-</div>----</div>-<div class="comment" id="comment-9de38d25ece14325b948ba2261705bb1">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-9de38d25ece14325b948ba2261705bb1">comment 3</a>--</div>--<div class="inlinecontent">-<p>Ah yes, I feel kinda stupid in hindsight.</p>--<p>As the central server is most likely a common use case, would you object if I added that to the walkthrough? If you have any best practices on how to automate a push with every copy to a bare remote? AFAIK, git does not store information about bare/non-bare remotes, but this could easily be put into .git/config by git annex.</p>--<p>-- RichiH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Tue Mar 22 22:07:49 2011</span>-</div>----</div>-<div class="comment" id="comment-1ca77527526103d883e0e7de15373194">--<div class="comment-subject">--<a href="/walkthrough/moving_file_content_between_repositories.html#comment-1ca77527526103d883e0e7de15373194">comment 4</a>--</div>--<div class="inlinecontent">-I would not mind if the walkthrough documented the central git repo case. But I don't want to complicate it unduely (it's long enough), and it's important that the fully distributed case be shown to work, and I assume that people already have basic git knowledge, so documenting the details of set up of a bare git repo is sorta out of scope. (There are also a lot of way to do it, using github, or gitosis, or raw git, etc.)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 23 11:28:00 2011</span>-</div>----</div>-<div class="comment" id="comment-3abb497859029b1fd8e93b441a6dbab0">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-3abb497859029b1fd8e93b441a6dbab0">comment 3</a>--</div>--<div class="inlinecontent">-<ul>-<li>why the <code>git remote add laptop ~/annex</code> ? this remote already exists under the name origin.</li>-<li>doesn't the last command need to be <code>git remote add usbdrive /media/usb/annex</code>? because the actual repo would be in /media/usb/annex, not /media/usb?</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Sat Apr  2 16:24:33 2011</span>-</div>----</div>-<div class="comment" id="comment-43ce4dd555f5bff7f4581458b74cccb9">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-43ce4dd555f5bff7f4581458b74cccb9">comment 4</a>--</div>--<div class="inlinecontent">-<p>Good spotting on the last line, fixed.</p>--<p>The laptop remote is indeed redundant, but it leads to clearer views of what is going on later in the walkthrough ("git pull laptop master", "(copying from laptop...)"). And if the original clone is made from a central bare repo, this reinforces that you'll want to set up remotes for other repos on the computer.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 22:32:17 2011</span>-</div>----</div>-<div class="comment" id="comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">Is it necessary to commit after the &#x27;drop&#x27;?</a>--</div>--<div class="inlinecontent">-In fact is it possible? Nothing changed as far as git is concerned.--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=DavidEdmondson&amp;do=goto">DavidEdmondson</a>--</span>---&mdash; <span class="date">Mon Sep  5 11:43:25 2011</span>-</div>----</div>-<div class="comment" id="comment-a854605ff0a6b92be7f3014da2e2c357">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-a854605ff0a6b92be7f3014da2e2c357">comment 2</a>--</div>--<div class="inlinecontent">-Good catch. It used to be necessary before there was a git-annex branch, but not now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Sep  5 11:59:27 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="./cheatsheet.html">cheatsheet</a>--<a href="./forum/migration_to_git-annex_and_rsync.html">forum/migration to git-annex and rsync</a>--<a href="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 16:53:33 2011</span>-<!-- Created <span class="date">Sat Sep 17 16:53:33 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/Internet_Archive_via_S3.html
@@ -1,152 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>Internet Archive via S3</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-Internet Archive via S3--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p><a href="http://www.archive.org/">The Internet Archive</a> allows members to upload-collections using an Amazon S3 -<a href="http://www.archive.org/help/abouts3.txt">compatible API</a>, and this can-be used with git-annex's <a href="../special_remotes/S3.html">S3</a> support. </p>--<p>So, you can locally archive things with git-annex, define remotes that-correspond to "items" at the Internet Archive, and use git-annex to upload-your files to there. Of course, your use of the Internet Archive must-comply with their <a href="http://www.archive.org/about/terms.php">terms of service</a>.</p>--<p>Sign up for an account, and get your access keys here:-<a href="http://www.archive.org/account/s3.php">http://www.archive.org/account/s3.php</a></p>--<pre><code># export AWS_ACCESS_KEY_ID=blahblah-# export AWS_SECRET_ACCESS_KEY=xxxxxxx-</code></pre>--<p>Specify <code>host=s3.us.archive.org</code> when doing <code>initremote</code> to set up-a remote at the Archive. This will enable a special Internet Archive mode:-Encryption is not allowed; you are required to specify a bucket name-rather than having git-annex pick a random one; and you can optionally-specify <code>x-archive-meta*</code> headers to add metadata as explained in their-<a href="http://www.archive.org/help/abouts3.txt">documentation</a>.</p>--<p>[[!template <span class="error">Error: <span class="createlink">note</span> not found</span>]]</p>--<pre><code># git annex initremote archive-panama type=S3 \-    host=s3.us.archive.org bucket=panama-canal-lock-blueprints \-    x-archive-meta-mediatype=texts x-archive-meta-language=eng \-    x-archive-meta-title="original Panama Canal lock design blueprints"-initremote archive-panama (Internet Archive mode) ok-# git annex describe archive-panama "a man, a plan, a canal: panama"-describe archive-panama ok-</code></pre>--<p>Then you can annex files and copy them to the remote as usual:</p>--<pre><code># git annex add photo1.jpeg --backend=SHA1E-add photo1.jpeg (checksum...) ok-# git annex copy photo1.jpeg --fast --to archive-panama-copy (to archive-panama...) ok-</code></pre>--<p>Note the use of the SHA1E <a href="../backends.html">backend</a>. It makes most sense -to use the WORM or SHA1E backend for files that will be stored in-the Internet Archive, since the key name will be exposed as the filename-there, and since the Archive does special processing of files based on-their extension.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../special_remotes/S3.html">special remotes/S3</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/adding_a_remote.html
@@ -1,239 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>adding a remote</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-adding a remote--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Like any other git repository, git-annex repositories have remotes.-Let's start by adding a USB drive as a remote.</p>--<pre><code># sudo mount /media/usb-# cd /media/usb-# git clone ~/annex-# cd annex-# git annex init "portable USB drive"-# git remote add laptop ~/annex-# cd ~/annex-# git remote add usbdrive /media/usb/annex-</code></pre>--<p>This is all standard ad-hoc distributed git repository setup.-The only git-annex specific part is telling it the name-of the new repository created on the USB drive.</p>--<p>Notice that both repos are set up as remotes of one another. This lets-either get annexed files from the other. You'll want to do that even-if you are using git in a more centralized fashion.</p>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-2eef00910b0345dd531f62162cb713c7">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-2eef00910b0345dd531f62162cb713c7">comment 1</a>--</div>--<div class="inlinecontent">-After doing the above with two required copy per file, <code>git annex fsck</code> complained that I had only one copy per file even though I had created my clone, already. Once I <code>git pull</code>ed from the second repo, not getting any changes for obvious reasons, <code>git annex fsck</code> was happy. So I am not sure how my addition was incorrect. -- RichiH--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>-</span>---&mdash; <span class="date">Fri Mar 18 21:18:49 2011</span>-</div>----</div>-<div class="comment" id="comment-7153e4aed3f3a62684dd86149c45916c">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-7153e4aed3f3a62684dd86149c45916c">comment 2</a>--</div>--<div class="inlinecontent">-Yes, you have to pull down location tracking information in order for fsck to be satisfied in that situation. But since this is a walkthrough, and neither fsck or numcopies settings are mentioned until later, it's ok for this pull to be described a few steps along in <a href="./getting_file_content.html">getting file content</a>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Mar 19 11:35:38 2011</span>-</div>----</div>-<div class="comment" id="comment-3abb497859029b1fd8e93b441a6dbab0">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-3abb497859029b1fd8e93b441a6dbab0">comment 3</a>--</div>--<div class="inlinecontent">-<ul>-<li>why the <code>git remote add laptop ~/annex</code> ? this remote already exists under the name origin.</li>-<li>doesn't the last command need to be <code>git remote add usbdrive /media/usb/annex</code>? because the actual repo would be in /media/usb/annex, not /media/usb?</li>-</ul>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://dieter-be.myopenid.com/">dieter</a>-</span>---&mdash; <span class="date">Sat Apr  2 16:24:33 2011</span>-</div>----</div>-<div class="comment" id="comment-43ce4dd555f5bff7f4581458b74cccb9">--<div class="comment-subject">--<a href="/walkthrough/adding_a_remote.html#comment-43ce4dd555f5bff7f4581458b74cccb9">comment 4</a>--</div>--<div class="inlinecontent">-<p>Good spotting on the last line, fixed.</p>--<p>The laptop remote is indeed redundant, but it leads to clearer views of what is going on later in the walkthrough ("git pull laptop master", "(copying from laptop...)"). And if the original clone is made from a central bare repo, this reinforces that you'll want to set up remotes for other repos on the computer.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Sat Apr  2 22:32:17 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/adding_files.html
@@ -1,108 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>adding files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-adding files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<pre><code># cd ~/annex-# cp /tmp/big_file .-# cp /tmp/debian.iso .-# git annex add .-add big_file ok-add debian.iso ok-# git commit -a -m added-</code></pre>--<p>When you add a file to the annex and commit it, only a symlink to-the annexed content is committed. The content itself is stored in-git-annex's backend.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/backups.html
@@ -1,124 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>backups</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-backups--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex can be configured to require more than one copy of a file exists,-as a simple backup for your data. This is controlled by the "annex.numcopies"-setting, which defaults to 1 copy. Let's change that to require 2 copies,-and send a copy of every file to a USB drive.</p>--<pre><code># echo "* annex.numcopies=2" &gt;&gt; .gitattributes-# git annex copy . --to usbdrive-</code></pre>--<p>Now when we try to <code>git annex drop</code> a file, it will verify that it-knows of 2 other repositories that have a copy before removing its-content from the current repository.</p>--<p>You can also vary the number of copies needed, depending on the file name.-So, if you want 3 copies of all your flac files, but only 1 copy of oggs:</p>--<pre><code># echo "*.ogg annex.numcopies=1" &gt;&gt; .gitattributes-# echo "*.flac annex.numcopies=3" &gt;&gt; .gitattributes-</code></pre>--<p>Or, you might want to make a directory for important stuff, and configure-it so anything put in there is backed up more thoroughly:</p>--<pre><code># mkdir important_stuff-# echo "* annex.numcopies=3" &gt; important_stuff/.gitattributes-</code></pre>--<p>For more details about the numcopies setting, see <a href="../copies.html">copies</a>.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/creating_a_repository.html
@@ -1,103 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>creating a repository</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-creating a repository--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>This is very straightforward. Just tell it a description of the repository.</p>--<pre><code># mkdir ~/annex-# cd ~/annex-# git init-# git annex init "my laptop"-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/fsck:_verifying_your_data.html
@@ -1,114 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fsck: verifying your data</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-fsck: verifying your data--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>You can use the fsck subcommand to check for problems in your data. What-can be checked depends on the key-value <a href="../backends.html">backend</a> 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-annex.numcopies setting is satisfied for all files.</p>--<pre><code># git annex fsck-fsck some_file (checksum...) ok-fsck my_cool_big_file (checksum...) ok-...-</code></pre>--<p>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.</p>--<pre><code># git annex fsck my_cool_big_file-fsck my_cool_big_file (checksum...) ok-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/fsck:_when_things_go_wrong.html
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>fsck: when things go wrong</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-fsck: when things go wrong--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Fsck never deletes possibly bad data; instead it will be moved to-<code>.git/annex/bad/</code> for you to recover. Here is a sample of what fsck-might say about a badly messed up annex:</p>--<pre><code># 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-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/getting_file_content.html
@@ -1,116 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>getting file content</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-getting file content--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>A repository does not always have all annexed file contents available.-When you need the content of a file, you can use "git annex get" to-make it available.</p>--<p>We can use this to copy everything in the laptop's annex to the-USB drive.</p>--<pre><code># cd /media/usb/annex-# git pull laptop-# git annex get .-get my_cool_big_file (from laptop...) ok-get iso/debian.iso (from laptop...) ok-</code></pre>--<p>Notice that you had to git pull from laptop first, this lets git-annex know-what has changed in laptop, and so it knows about the files present there and-can get them. The alternate approach is to set up a central bare repository,-and always push changes to it after committing them, then in the above,-you can just pull from the central repository to get synced up to all-repositories.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/migrating_data_to_a_new_backend.html
@@ -1,123 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>migrating data to a new backend</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-migrating data to a new backend--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Maybe you started out using the WORM backend, and have now configured-git-annex to use SHA1. But files you added to the annex before still-use the WORM backend. There is a simple command that can migrate that-data:</p>--<pre><code># git annex migrate my_cool_big_file-migrate my_cool_big_file (checksum...) ok-</code></pre>--<p>You can only migrate files whose content is currently available. Other-files will be skipped.</p>--<p>After migrating a file to a new backend, the old content in the old backend-will still be present. That is necessary because multiple files-can point to the same content. The <code>git annex unused</code> subcommand can be-used to clear up that detritus later. Note that hard links are used,-to avoid wasting disk space.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/git_annex_migrate_leaves_old_backend_versions_around.html">bugs/git annex migrate leaves old backend versions around</a>--<a href="../upgrades/SHA_size.html">upgrades/SHA size</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/modifying_annexed_files.html
@@ -1,142 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>modifying annexed files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-modifying annexed files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Normally, the content of files in the annex is prevented from being modified.-That's a good thing, because it might be the only copy, you wouldn't-want to lose it in a fumblefingered mistake.</p>--<pre><code># echo oops &gt; my_cool_big_file-bash: my_cool_big_file: Permission denied-</code></pre>--<p>In order to modify a file, it should first be unlocked.</p>--<pre><code># git annex unlock my_cool_big_file-unlock my_cool_big_file (copying...) ok-</code></pre>--<p>That replaces the symlink that normally points at its content with a copy-of the content. You can then modify the file like any regular file. Because-it is a regular file.</p>--<p>(If you decide you don't need to modify the file after all, or want to discard-modifications, just use <code>git annex lock</code>.)</p>--<p>When you <code>git commit</code>, git-annex's pre-commit hook will automatically-notice that you are committing an unlocked file, and add its new content-to the annex. The file will be replaced with a symlink to the new content,-and this symlink is what gets committed to git in the end.</p>--<pre><code># echo "now smaller, but even cooler" &gt; my_cool_big_file-# git commit my_cool_big_file -m "changed an annexed file"-add my_cool_big_file ok-[master 64cda67] changed an annexed file- 1 files changed, 1 insertions(+), 1 deletions(-)-</code></pre>--<p>There is one problem with using <code>git commit</code> like this: Git wants to first-stage the entire contents of the file in its index. That can be slow for-big files (sorta why git-annex exists in the first place). So, the-automatic handling on commit is a nice safety feature, since it prevents-the file content being accidentally committed into git. But when working with-big files, it's faster to explicitly add them to the annex yourself-before committing.</p>--<pre><code># echo "now smaller, but even cooler yet" &gt; my_cool_big_file-# git annex add my_cool_big_file-add my_cool_big_file ok-# git commit my_cool_big_file -m "changed an annexed file"-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/more.html
@@ -1,100 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>more</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-more--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>So ends the walkthrough. By now you should be able to use git-annex.</p>--<p>Want more? See the <a href="../cheatsheet.html">cheatsheet</a> for info about all of git-annex's hidden-features.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/recover_data_from_lost+found.html
@@ -1,126 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>recover data from lost+found</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-recover data from lost+found--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Suppose something goes wrong, and fsck puts all the files in lost+found.-It's actually very easy to recover from this disaster.</p>--<p>First, check out the git repository again. Then, in the new checkout:</p>--<pre><code>&#036; mkdir recovered-content-&#036; sudo mv ../lost+found/* recovered-content-&#036; sudo chown you:you recovered-content-&#036; chmod -R u+w recovered-content-&#036; git annex add recovered-content-&#036; git rm recovered-content-&#036; git commit -m "recovered some content"-&#036; git annex fsck-</code></pre>--<p>The way that works is that when git-annex adds the same content that was in-the repository before, all the old links to that content start working-again. This works particularly well if the SHA* backends are used, but even-with the default backend it will work pretty well, as long as fsck-preserved the modification time of the files.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/copy_fast_confusing_with_broken_locationlog.html">bugs/copy fast confusing with broken locationlog</a>--<a href="../future_proofing.html">future proofing</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/removing_files.html
@@ -1,164 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>removing files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-removing files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>You can always drop files safely. Git-annex checks that some other annex-has the file before removing it.</p>--<pre><code># git annex drop iso/debian.iso-drop iso/Debian_5.0.iso ok-</code></pre>--</div>----<div id="comments">-<div id="feedlink">---</div>-<div class="comment" id="comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-ae7fa4d5ad04b9d5fe5174d47d1b3d27">Is it necessary to commit after the &#x27;drop&#x27;?</a>--</div>--<div class="inlinecontent">-In fact is it possible? Nothing changed as far as git is concerned.--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=DavidEdmondson&amp;do=goto">DavidEdmondson</a>--</span>---&mdash; <span class="date">Mon Sep  5 11:43:25 2011</span>-</div>----</div>-<div class="comment" id="comment-a854605ff0a6b92be7f3014da2e2c357">--<div class="comment-subject">--<a href="/walkthrough/removing_files.html#comment-a854605ff0a6b92be7f3014da2e2c357">comment 2</a>--</div>--<div class="inlinecontent">-Good catch. It used to be necessary before there was a git-annex branch, but not now.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joey.kitenet.net/">joey</a>-</span>---&mdash; <span class="date">Mon Sep  5 11:59:27 2011</span>-</div>----</div>-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/renaming_files.html
@@ -1,110 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>renaming files</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-renaming files--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<pre><code># cd ~/annex-# git mv big_file my_cool_big_file-# mkdir iso-# git mv debian.iso iso/-# git commit -m moved-</code></pre>--<p>You can use any normal git operations to move files around, or even-make copies or delete them.</p>--<p>Notice that, since annexed files are represented by symlinks,-the symlink will break when the file is moved into a subdirectory.-But, git-annex will fix this up for you when you commit ---it has a pre-commit hook that watches for and corrects broken symlinks.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/untrusted_repositories.html
@@ -1,126 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>untrusted repositories</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-untrusted repositories--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Suppose you have a USB thumb drive and are using it as a git annex-repository. You don't trust the drive, because you could lose it, or-accidentally run it through the laundry. Or, maybe you have a drive that-you know is dying, and you'd like to be warned if there are any files-on it not backed up somewhere else. Maybe the drive has already died-or been lost.</p>--<p>You can let git-annex know that you don't trust a repository, and it will-adjust its behavior to avoid relying on that repositories's continued-availability.</p>--<pre><code># git annex untrust usbdrive-untrust usbdrive ok-</code></pre>--<p>Now when you do a fsck, you'll be warned appropriately:</p>--<pre><code># git annex fsck .-fsck my_big_file-  Only these untrusted locations may have copies of this file!-    05e296c4-2989-11e0-bf40-bad1535567fe  -- portable USB drive-  Back it up to trusted locations with git-annex copy.-failed-</code></pre>--<p>Also, git-annex will refuse to drop a file from elsewhere just because-it can see a copy on the untrusted repository.</p>--<p>It's also possible to tell git-annex that you have an unusually high-level of trust for a repository. See <a href="../trust.html">trust</a> for details.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/unused_data.html
@@ -1,137 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>unused data</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-unused data--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>It's possible for data to accumulate in the annex that no files point to-anymore. One way it can happen is if you <code>git rm</code> a file without -first calling <code>git annex drop</code>. And, when you modify an annexed file, the old-content of the file remains in the annex. Another way is when migrating-between key-value <span class="createlink">backends</span>.</p>--<p>This might be historical data you want to preserve, so git-annex defaults to-preserving it. So from time to time, you may want to check for such data and-eliminate it to save space.</p>--<pre><code># git annex unused-unused . (checking for unused data...) -  Some annexed data is no longer used by any files in the repository.-    NUMBER  KEY-    1       WORM-s3-m1289672605--file-    2       WORM-s14-m1289672605--file-  (To see where data was previously used, try: git log --stat -S'KEY')-  (To remove unwanted data: git-annex dropunused NUMBER)-ok-</code></pre>--<p>After running <code>git annex unused</code>, you can follow the instructions to examine-the history of files that used the data, and if you decide you don't need that-data anymore, you can easily remove it:</p>--<pre><code># git annex dropunused 1-dropunused 1 ok-</code></pre>--<p>Hint: To drop a lot of unused data, use a command like this:</p>--<pre><code># git annex dropunused `seq 1 1000`-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../bugs/add_range_argument_to___34__git_annex_dropunused__34___.html">bugs/add range argument to &#34;git annex dropunused&#34; </a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:24:24 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:24:24 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_Amazon_S3.html
@@ -1,147 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using Amazon S3</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-using Amazon S3--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>git-annex extends git's usual remotes with some <a href="../special_remotes.html">special remotes</a>, that-are not git repositories. This way you can set up a remote using say,-Amazon S3, and use git-annex to transfer files into the cloud.</p>--<p>First, export your S3 credentials:</p>--<pre><code># export ANNEX_S3_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"-# export ANNEX_S3_SECRET_ACCESS_KEY="s3kr1t"-</code></pre>--<p>Now, create a gpg key, if you don't already have one. This will be used-to encrypt everything stored in S3, for your privacy. Once you have-a gpg key, run <code>gpg --list-secret-keys</code> to look up its key id, something-like "2512E3C7"</p>--<p>Next, create the S3 remote, and describe it. </p>--<pre><code># git annex initremote cloud type=S3 encryption=2512E3C7-initremote cloud (encryption setup with gpg key C910D9222512E3C7) (checking bucket) (creating bucket in US) (gpg) ok-# git annex describe cloud "at Amazon's US datacenter"-describe cloud ok-</code></pre>--<p>The configuration for the S3 remote is stored in git. So to make another-repository use the same S3 remote is easy:</p>--<pre><code># cd /media/usb/annex-# git pull laptop-# git annex initremote cloud-initremote cloud (gpg) (checking bucket) ok-</code></pre>--<p>Now the remote can be used like any other remote.</p>--<pre><code># git annex copy my_cool_big_file --to cloud-copy my_cool_big_file (gpg) (checking cloud...) (to cloud...) ok-# git annex move video/hackity_hack_and_kaxxt.mov --to cloud-move video/hackity_hack_and_kaxxt.mov (checking cloud...) (to cloud...) ok-</code></pre>--<p>See <a href="../special_remotes/S3.html">S3</a> for details.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../design/encryption.html">design/encryption</a>--<a href="../special_remotes/S3.html">special remotes/S3</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_bup.html
@@ -1,140 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using bup</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-using bup--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>Another <a href="../special_remotes.html">special remote</a> that git-annex can use is-a <a href="../special_remotes/bup.html">bup</a> repository. Bup stores large file contents-in a git repository of its own, with deduplication. Combined with-git-annex, you can have git on both the frontend and the backend.</p>--<p>Here's how to create a bup remote, and describe it.</p>--<p>[[!template <span class="error">Error: <span class="createlink">note</span> not found</span>]]</p>--<pre><code># git annex initremote mybup type=bup encryption=none buprepo=example.com:/big/mybup-initremote bup (bup init)-Initialized empty Git repository in /big/mybup/-ok-# git annex describe mybup "my bup repository at example.com"-describe mybup ok-</code></pre>--<p>Now the remote can be used like any other remote.</p>--<pre><code># git annex move my_cool_big_file --to mybup-move my_cool_big_file (to mybup...)-Receiving index from server: 1100/1100, done.-ok-</code></pre>--<p>Note that, unlike other remotes, bup does not really support removing-content from its git repositories. This is a feature. :)</p>--<pre><code># git annex move my_cool_big_file --from mybup-move my_cool_big_file (from mybup...)-  content cannot be removed from bup remote-failed-git-annex: 1 failed-</code></pre>--<p>See <a href="../special_remotes/bup.html">bup</a> for details.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../special_remotes/bup.html">special remotes/bup</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_ssh_remotes.html
@@ -1,132 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using ssh remotes</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-using ssh remotes--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>So far in this walkthrough, git-annex has been used with a remote-repository on a USB drive. But it can also be used with a git remote-that is truely remote, a host accessed by ssh.</p>--<p>Say you have a desktop on the same network as your laptop and want-to clone the laptop's annex to it:</p>--<pre><code># git clone ssh://mylaptop/home/me/annex ~/annex-# cd ~/annex-# git annex init "my desktop"-</code></pre>--<p>Now you can get files and they will be transferred (using <code>rsync</code> via <code>ssh</code>):</p>--<pre><code># git annex get my_cool_big_file-get my_cool_big_file (getting UUID for origin...) (from origin...)-WORM-s2159-m1285650548--my_cool_big_file       100% 2159     2.1KB/s   00:00-ok-</code></pre>--<p>When you drop files, git-annex will ssh over to the remote and make-sure the file's content is still there before removing it locally:</p>--<pre><code># git annex drop my_cool_big_file-drop my_cool_big_file (checking origin..) ok-</code></pre>--<p>Note that normally git-annex prefers to use non-ssh remotes, like-a USB drive, before ssh remotes. They are assumed to be faster/cheaper to-access, if available. There is a annex-cost setting you can configure in-<code>.git/config</code> to adjust which repositories it prefers. See-<a href="../git-annex.html">the man page</a> for details.</p>--<p>Also, note that you need full shell access for this to work -- -git-annex needs to be able to ssh in and run commands. Or at least,-your shell needs to be able to run the <a href="../git-annex-shell.html">git-annex-shell</a> command.</p>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_the_SHA1_backend.html
@@ -1,108 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using the SHA1 backend</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-using the SHA1 backend--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>A handy alternative to the default <a href="../backends.html">backend</a> is the-SHA1 backend. This backend provides more git-style assurance that your data-has not been damaged. And the checksum means that when you add the same-content to the annex twice, only one copy need be stored in the backend.</p>--<p>The only reason it's not the default is that it needs to checksum-files when they're added to the annex, and this can slow things down-significantly for really big files. To make SHA1 the default, just-add something like this to <code>.gitattributes</code>:</p>--<pre><code>* annex.backend=SHA1-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">----------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 09:10:11 2011</span>-<!-- Created <span class="date">Sat Sep 17 09:10:11 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_the_web.html
@@ -1,140 +0,0 @@-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-<html xmlns="http://www.w3.org/1999/xhtml">--<head>--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />-<title>using the web</title>--<link rel="stylesheet" href="../style.css" type="text/css" />--<link rel="stylesheet" href="../local.css" type="text/css" />------</head>-<body>--<div class="page">--<div class="pageheader">-<div class="header">-<span>-<span class="parentlinks">--<a href="../index.html">git-annex</a>/ --<a href="../walkthrough.html">walkthrough</a>/ --</span>-<span class="title">-using the web--</span>-</span>--</div>------</div>----<div id="pagebody">--<div id="content">-<p>The web can be used as a <a href="../special_remotes.html">special remote</a> too.</p>--<pre><code># git annex addurl http://example.com/video.mpeg-addurl video.mpeg (downloading http://example.com/video.mpeg)-########################################################## 100.0%-ok-</code></pre>--<p>Now the file is downloaded, and has been added to the annex like any other-file. So it can be copied to other repositories, and so on.</p>--<p>Note that git-annex assumes that, if the web site does not 404, the file is-still present on the web, and this counts as one <a href="../copies.html">copy</a> of the-file. So it will let you remove your last copy, trusting it can be-downloaded again:</p>--<pre><code># git annex drop video.mpeg-drop video.mpeg (checking http://example.com/video.mpeg) ok-</code></pre>--<p>If you don't <a href="../trust.html">trust</a> the web to this degree, just let git-annex know:</p>--<pre><code># git annex untrust web-untrust web ok-</code></pre>--<p>With the result that it will hang onto files:</p>--<pre><code># git annex drop video.mpeg-drop video.mpeg (unsafe) -  Could only verify the existence of 0 out of 1 necessary copies-  Also these untrusted repositories may contain the file:-    00000000-0000-0000-0000-000000000001  -- web-  (Use --force to override this check, or adjust annex.numcopies.)-failed-</code></pre>--</div>----<div id="comments">-----<div class="addcomment">Comments on this page are closed.</div>--</div>----</div>--<div id="footer" class="pagefooter">--<div id="pageinfo">-----<div id="backlinks">-Links:--<a href="../special_remotes/web.html">special remotes/web</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Sep 17 16:53:33 2011</span>-<!-- Created <span class="date">Sat Sep 17 16:53:33 2011</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/man/man1/git-annex-shell.1.gz

binary file changed (746 → absent bytes)

− debian/git-annex/usr/share/man/man1/git-annex.1.gz

binary file changed (6185 → absent bytes)

− debian/git-annex/usr/share/man/man1/git-union-merge.1.gz

binary file changed (502 → absent bytes)

doc/cheatsheet.mdwn view
@@ -12,4 +12,5 @@ 	walkthrough/what_to_do_when_you_lose_a_repository 	walkthrough/recover_data_from_lost+found 	walkthrough/Internet_Archive_via_S3+	walkthrough/powerful_file_matching """]]
doc/forum/new_microfeatures.mdwn view
@@ -33,9 +33,15 @@  > I've thought about such things before; does not seem really micro and I'm unsure how well it would work, but it would be worth a [[todo]]. --[[Joey]] +>> Update: Done as --auto. --[[Joey]] + ---  Along similar lines, it might be nice to have a mode where git-annex tries to fill up a disk up to the `annex.diskreserve` with files, preferring files that have relatively few copies. Then as storage prices continue to fall, new large drives could just be plopped in and git-annex used to fill it up in a way that improves the overall redundancy without needing to manually pick and choose.++> Update: git annex get --auto basically does this; you can tune+> --numcopies on the fly to make it get more files than needed by the+> current numcopies setting. --[[Joey]]   --- 
+ doc/forum/wishlist:_git-annex_replicate/comment_4_63f24abf086d644dced8b01e1a9948c9._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="http://joey.kitenet.net/"+ nickname="joey"+ subject="comment 4"+ date="2011-09-19T18:54:46Z"+ content="""+git annex get/copy/drop all now support a --auto flag, which makes them only act on files that have not enough or too many copies. This allows for some crude replication; it doesn't take into account which repositories should be filled up more (beyond honoring annex.diskreserve), nor does it try to optimally use bandwidth (beyond honoring configured annex-cost). You have to run it in every repository that you want to participate in the replication, too. But it's probably a Good Enough solution. See [[walkthrough/automatically_managing_content]].+"""]]
doc/git-annex.mdwn view
@@ -64,6 +64,7 @@    Adds files in the path to the annex. Files that are already checked into   git, or that git has been configured to ignore will be silently skipped.+  (Use --force to add ignored files.)  * get [path ...] @@ -182,12 +183,11 @@ * unused    Checks the annex for data that does not correspond to any files present-  in the currently checked out branch, and prints a numbered list of the data.+  in any tag or branch, and prints a numbered list of the data. -  To only show unused temp and bad files, specify --fast+  To only show unused temp and bad files, specify --fast. -  To check data on a remote that does not correspond to any files present-  on the locally checked out branch, specify --from.+  To check for annexed data on a remote, specify --from.  * dropunused [number ...] @@ -222,6 +222,8 @@ * find [path ...]    Outputs a list of annexed files whose content is currently present.+  Or, if a file matching option is specified, outputs a list of all+  matching files, whether or not their content is currently present.    With no parameters, defaults to finding all files in the current directory   and its subdirectories.@@ -236,11 +238,6 @@   Displays some statistics and other information, including how much data   is in the annex. -  Some of the statistics can take a while to generate, and those-  come last. You can ctrl-c this command once it's displayed the-  information you wanted to see. Or, use --fast to only display-  the first, fast(ish) statistics.- * map    Helps you keep track of your repositories, and the connections between them,@@ -379,13 +376,6 @@    It should be specified using the name of a configured remote. -* --exclude=glob--  Skips files matching the glob pattern. The glob is matched relative to-  the current directory.--  This option can be specified multiple times.- * --numcopies=n    Overrides the `annex.numcopies` setting, forcing git-annex to ensure the@@ -414,6 +404,60 @@ * -c name=value    Used to override git configuration settings. May be specified multiple times.++# FILE MATCHING OPTIONS++These options can all be specified multiple times, and can be combined to+limit which files git-annex acts on.++Arbitrarily complicated expressions can be built using these options.+For example:++	--exclude '*.mp3' --and --not -( --in usbdrive --or --in archive -)++The above example prevents git-annex from working on mp3 files whose+file contents are present at either of two repositories.++* --exclude=glob++  Skips files matching the glob pattern. The glob is matched relative to+  the current directory. For example: --exclude='*.mp3' --exclude='subdir/*'++* --in=repository++  Matches only files that git-annex believes have their contents present+  in a repository.++  The repository should be specified using the name of a configured remote,+  or the UUID or description of a repository. For the current repository,+  use "--in=."++* --copies=number++  Matches only files that git-annex believes to have the specified number+  of copies.++* --not++  Inverts the next file matching option. For example, to only act on+  mp3s, use: --not --exclude='*.mp3'++* --and++  Requires that both the previous and the next file matching option matches.+  The default.++* --or++  Requires that either the previous, or the next file matching option matches.++* -(++  Opens a group of file matching options.++* -)++  Closes a group of file matching options.  # CONFIGURATION 
doc/install.mdwn view
@@ -8,7 +8,7 @@  ## Using cabal -As a haskell package, git-annex can be built using cabal. For example:+As a haskell package, git-annex can be installed using cabal. For example:  	cabal install git-annex --bindir=$HOME/bin 
doc/install/Fedora.mdwn view
@@ -3,5 +3,5 @@ <pre> sudo yum install ghc cabal-install sudo cabal update-sudo cabal install git-annex+cabal install git-annex --bindir=$HOME/bin </pre>
doc/install/OSX.mdwn view
@@ -9,7 +9,7 @@ export PATH=$PATH:/opt/local/libexec/gnubin  sudo cabal update-sudo cabal install git-annex+cabal install git-annex --bindir=$HOME/bin </pre>  Originally posted by Jon at <https://gist.github.com/671785> --[[Joey]], modified by [[kristianrumberg]]
− doc/news/version_3.20110817.mdwn
@@ -1,6 +0,0 @@-git-annex 3.20110817 released with [[!toggle text="these changes"]]-[[!toggleable text="""-   * Fix shell escaping in rsync special remote.-   * addurl: --fast can be used to avoid immediately downloading the url.-   * Added support for getting content from git remotes using http (and https).-   * Added curl to Debian package dependencies."""]]
+ doc/news/version_3.20110928.mdwn view
@@ -0,0 +1,19 @@+git-annex 3.20110928 released with [[!toggle text="these changes"]]+[[!toggleable text="""+   * --in can be used to make git-annex only operate on files+     believed to be present in a given repository.+   * Arbitrarily complex expressions can be built to limit the files git-annex+     operates on, by combining the options --not --and --or -( and -)+     Example: git annex get --exclude '*.mp3' --and --not -( --in usbdrive --or --in archive -)+   * --copies=N can be used to make git-annex only operate on files with+     the specified number of copies. (And --not --copies=N for the inverse.)+   * find: Rather than only showing files whose contents are present,+     when used with --exclude --copies or --in, displays all files that+     match the specified conditions.+   * Note that this is a behavior change for git-annex find! Old behavior+     can be gotten by using: git-annex find --in .+   * status: Massively sped up; remove --fast mode.+   * unused: File contents used by branches and tags are no longer+     considered unused, even when not used by the current branch. This is+     the final piece of the puzzle needed for git-annex to to play nicely+     with branches."""]]
doc/special_remotes.mdwn view
@@ -29,11 +29,5 @@ 	    1       WORM-s3-m1301674316--foo 	  (To see where data was previously used, try: git log --stat -S'KEY') 	  (To remove unwanted data: git-annex dropunused --from mys3 NUMBER)-	  Please be cautious -- are you sure that the remote repository-	  does not use this data? 	$ git annex dropunused --from mys3 1 	dropunused 12948 (from mys3...) ok--Do be cautious when using this; it cannot detect if content in a remote-is used by that remote, or is the last copy of data that is used by-some *other* remote.
doc/todo/exclude_files_on_a_given_remote.mdwn view
@@ -14,3 +14,5 @@ 	git annex drop --only-on A  --[[Joey]] ++[[done]]
+ doc/walkthrough/powerful_file_matching.mdwn view
@@ -0,0 +1,36 @@+git-annex has a powerful syntax for making it act on only certian files.++The simplest thing is to exclude some files, using wild cards:++	git annex get --exclude '*.mp3' --exclude '*.ogg'++But you can also exclude files that git-annex's [[location_tracking]]+information indicates are present in a given repository. For example,+if you want to populate newarchive with files, but not those already+on oldarchive, you could do it like this:++	git annex copy --not --in oldarchive --to newarchive++Without the --not, --in makes it act on files that *are* in the specified+repository. So, to remove files that are on oldarchive:++	git annex drop --in oldarchive++Or maybe you're curious which files have a lot of copies, and then+also want to know which files have only one copy:++	git annex find --copies 7+	git annex find --not --copies 2++The above are the simple examples of specifying what files git-annex+should act on. But you can specify anything you can dream up by combining+the things above, with --and --or -( and -). Those last two strange-looking+options are parentheses, for grouping other options. You will probably+have to escape them from your shell.++Here are the mp3 files that are in either of two repositories, but have+less than 3 copies:++	git annex find --not --exclude '*.mp3' --and \+		-\( --in usbdrive --or --in archive -\) --and \+		--not --copies 3
git-annex.cabal view
@@ -1,5 +1,5 @@ Name: git-annex-Version: 3.20110915+Version: 3.20110928 Cabal-Version: >= 1.6 License: GPL Maintainer: Joey Hess <joey@kitenet.net>@@ -7,7 +7,7 @@ Stability: Stable Copyright: 2010-2011 Joey Hess License-File: GPL-Extra-Source-Files: ./debian/NEWS ./debian/files ./debian/git-annex.substvars ./debian/control ./debian/rules ./debian/manpages ./debian/git-annex/usr/bin/git-annex ./debian/git-annex/usr/bin/git-annex-shell ./debian/git-annex/usr/bin/git-union-merge ./debian/git-annex/usr/share/man/man1/git-union-merge.1.gz ./debian/git-annex/usr/share/man/man1/git-annex.1.gz ./debian/git-annex/usr/share/man/man1/git-annex-shell.1.gz ./debian/git-annex/usr/share/doc/git-annex/NEWS.Debian.gz ./debian/git-annex/usr/share/doc/git-annex/html/bare_repositories.html ./debian/git-annex/usr/share/doc/git-annex/html/summary.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_command_options_changes.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/working_without_git-annex_commits.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git_backend_for_git-annex.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/new_microfeatures.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/Behaviour_of_fsck.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git-annex_replicate.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/rsync_over_ssh__63__.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/git-annex_on_OSX.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/batch_check_on_remote_when_using_copy.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/git-annex_communication_channels.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/sparse_git_checkouts_with_annex.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/hashing_objects_directories.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/unannex_alternatives.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/relying_on_git_for_numcopies.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/Problems_with_large_numbers_of_files.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/migration_to_git-annex_and_rsync.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_git_annex_status.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/can_git-annex_replace_ddm__63__.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/incompatible_versions__63__.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:_support_for_more_ssh_urls_.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/version_3_upgrade.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/advantages_of_SHA__42___over_WORM.html ./debian/git-annex/usr/share/doc/git-annex/html/forum/wishlist:alias_system.html ./debian/git-annex/usr/share/doc/git-annex/html/backends.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/fat_support.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/problem_with_upgrade_v2_-__62___v3.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/add_script-friendly_output_options.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/free_space_checking.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/scp_interrupt_to_background.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Prevent_accidental_merges.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/S3_memory_leaks.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/softlink_mtime.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/test_suite_shouldn__39__t_fail_silently.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/git_rename_detection_on_file_move.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Makefile_is_missing_dependancies.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/building_on_lenny.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Cabal_dependency_monadIO_missing.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/WORM:_Handle_long_filenames_correctly.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/error_with_file_names_starting_with_dash.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/tmp_file_handling.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Problems_running_make_on_osx.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/unannex_vs_unlock_hook_confusion.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/minor_bug:_errors_are_not_verbose_enough.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/fsck_output.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Displayed_copy_speed_is_wrong.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/bare_git_repos.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/unhappy_without_UTF8_locale.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Unfortunate_interaction_with_Calibre.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/problems_with_utf8_names.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/annex_add_in_annex.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/Build_error_on_Mac_OSX_10.6.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/conflicting_haskell_packages.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/ordering.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/done.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/dotdot_problem.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/making_annex-merge_try_a_fast-forward.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/git_annex_unlock_is_not_atomic.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/encrypted_S3_stalls.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/--git-dir_and_--work-tree_options.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/unannex_command_doesn__39__t_all_files.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/problem_commit_normal_links.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/dropping_files_with_a_URL_backend_fails.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/check_for_curl_in_configure.hs.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/error_propigation.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/No_version_information_from_cli.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs/weird_local_clone_confuses.html ./debian/git-annex/usr/share/doc/git-annex/html/logo_small.png ./debian/git-annex/usr/share/doc/git-annex/html/index.html ./debian/git-annex/usr/share/doc/git-annex/html/news.html ./debian/git-annex/usr/share/doc/git-annex/html/use_case/Bob.html ./debian/git-annex/usr/share/doc/git-annex/html/use_case/Alice.html ./debian/git-annex/usr/share/doc/git-annex/html/cheatsheet.html ./debian/git-annex/usr/share/doc/git-annex/html/upgrades/SHA_size.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/bup.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/directory.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/S3.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/web.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/rsync.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes/hook.html ./debian/git-annex/usr/share/doc/git-annex/html/future_proofing.html ./debian/git-annex/usr/share/doc/git-annex/html/forum.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough.html ./debian/git-annex/usr/share/doc/git-annex/html/users/joey.html ./debian/git-annex/usr/share/doc/git-annex/html/users/fmarier.html ./debian/git-annex/usr/share/doc/git-annex/html/users/chrysn.html ./debian/git-annex/usr/share/doc/git-annex/html/git-union-merge.html ./debian/git-annex/usr/share/doc/git-annex/html/copies.html ./debian/git-annex/usr/share/doc/git-annex/html/templates/walkthrough.tmpl ./debian/git-annex/usr/share/doc/git-annex/html/templates/bare.tmpl ./debian/git-annex/usr/share/doc/git-annex/html/git-annex.html ./debian/git-annex/usr/share/doc/git-annex/html/internals.html ./debian/git-annex/usr/share/doc/git-annex/html/install.html ./debian/git-annex/usr/share/doc/git-annex/html/trust.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/auto_remotes/discussion.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/gitrm.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/checkout.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/use_cp_reflink.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/file_copy_progress_bar.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/object_dir_reorg_v2.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/immutable_annexed_files.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/S3.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/branching.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/add_a_git_backend.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/parallel_possibilities.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/tahoe_lfs_for_reals.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/wishlist:_swift_backend.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/support-non-utf8-locales.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/pushpull.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/add_--exclude_option_to_git_annex_find.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/cache_key_info.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/symlink_farming_commit_hook.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/rsync.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/network_remotes.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/using_url_backend.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/auto_remotes.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/smudge.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/git-annex_unused_eats_memory.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/done.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/fsck.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/union_mounting.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/speed_up_fsck.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/backendSHA1.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/git-annex-shell.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/hidden_files.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/support_S3_multipart_uploads.html ./debian/git-annex/usr/share/doc/git-annex/html/todo/wishlist:_support_for_more_ssh_urls_.html ./debian/git-annex/usr/share/doc/git-annex/html/download.html ./debian/git-annex/usr/share/doc/git-annex/html/distributed_version_control.html ./debian/git-annex/usr/share/doc/git-annex/html/contact.html ./debian/git-annex/usr/share/doc/git-annex/html/bugs.html ./debian/git-annex/usr/share/doc/git-annex/html/repomap.png ./debian/git-annex/usr/share/doc/git-annex/html/users.html ./debian/git-annex/usr/share/doc/git-annex/html/transferring_data.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_Amazon_S3.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/removing_files.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/Internet_Archive_via_S3.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/fsck:_verifying_your_data.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/adding_a_remote.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/migrating_data_to_a_new_backend.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/getting_file_content.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/creating_a_repository.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/modifying_annexed_files.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/more.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/renaming_files.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_the_web.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/unused_data.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_ssh_remotes.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/fsck:_when_things_go_wrong.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/untrusted_repositories.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/backups.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_the_SHA1_backend.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_bup.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/adding_files.html ./debian/git-annex/usr/share/doc/git-annex/html/walkthrough/recover_data_from_lost+found.html ./debian/git-annex/usr/share/doc/git-annex/html/design.html ./debian/git-annex/usr/share/doc/git-annex/html/feeds.html ./debian/git-annex/usr/share/doc/git-annex/html/logo.png ./debian/git-annex/usr/share/doc/git-annex/html/encryption.html ./debian/git-annex/usr/share/doc/git-annex/html/todo.html ./debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/toggle.js ./debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/relativedate.js ./debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/ikiwiki.js ./debian/git-annex/usr/share/doc/git-annex/html/comments.html ./debian/git-annex/usr/share/doc/git-annex/html/upgrades.html ./debian/git-annex/usr/share/doc/git-annex/html/special_remotes.html ./debian/git-annex/usr/share/doc/git-annex/html/not.html ./debian/git-annex/usr/share/doc/git-annex/html/design/encryption.html ./debian/git-annex/usr/share/doc/git-annex/html/GPL.gz ./debian/git-annex/usr/share/doc/git-annex/html/location_tracking.html ./debian/git-annex/usr/share/doc/git-annex/html/git-annex-shell.html ./debian/git-annex/usr/share/doc/git-annex/html/install/FreeBSD.html ./debian/git-annex/usr/share/doc/git-annex/html/install/Ubuntu.html ./debian/git-annex/usr/share/doc/git-annex/html/install/Debian.html ./debian/git-annex/usr/share/doc/git-annex/html/install/Fedora.html ./debian/git-annex/usr/share/doc/git-annex/html/install/OSX.html ./debian/git-annex/usr/share/doc/git-annex/changelog.gz ./debian/git-annex/usr/share/doc/git-annex/copyright ./debian/git-annex/usr/share/doc-base/git-annex ./debian/git-annex/DEBIAN/md5sums ./debian/git-annex/DEBIAN/control ./debian/changelog ./debian/doc-base ./debian/git-annex.debhelper.log ./debian/copyright ./debian/compat ./Messages/JSON.hs ./AnnexQueue.hs ./configure.hs ./Annex.hs ./PresenceLog.hs ./Version.hs ./Crypto.hs ./RemoteLog.hs ./README ./Command/Merge.hs ./Command/AddUrl.hs ./Command/Whereis.hs ./Command/Unlock.hs ./Command/Version.hs ./Command/FromKey.hs ./Command/PreCommit.hs ./Command/Map.hs ./Command/Unused.hs ./Command/Uninit.hs ./Command/Migrate.hs ./Command/Init.hs ./Command/ConfigList.hs ./Command/Trust.hs ./Command/Lock.hs ./Command/SendKey.hs ./Command/RecvKey.hs ./Command/Add.hs ./Command/Fix.hs ./Command/Untrust.hs ./Command/InitRemote.hs ./Command/Semitrust.hs ./Command/Fsck.hs ./Command/Move.hs ./Command/DropUnused.hs ./Command/Get.hs ./Command/Upgrade.hs ./Command/Describe.hs ./Command/Drop.hs ./Command/DropKey.hs ./Command/InAnnex.hs ./Command/Find.hs ./Command/Unannex.hs ./Command/Status.hs ./Command/Copy.hs ./Command/SetKey.hs ./Init.hs ./Types.hs ./Trust.hs ./Makefile ./git-annex.cabal ./Upgrade/V1.hs ./Upgrade/V2.hs ./Upgrade/V0.hs ./LocationLog.hs ./CHANGELOG ./Git/LsFiles.hs ./Git/UnionMerge.hs ./Git/Queue.hs ./Branch.hs ./doc/upgrades.mdwn ./doc/forum/wishlist:_define_remotes_that_must_have_all_files.mdwn ./doc/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.mdwn ./doc/forum/wishlist:_command_options_changes/comment_2_f6a637c78c989382e3c22d41b7fb4cc2._comment ./doc/forum/wishlist:_command_options_changes/comment_3_bf1114533d2895804e531e76eb6b8095._comment ./doc/forum/wishlist:_command_options_changes/comment_1_bfba72a696789bf21b2435dea15f967a._comment ./doc/forum/wishlist:_git-annex_replicate/comment_3_c13f4f9c3d5884fc6255fd04feadc2b1._comment ./doc/forum/wishlist:_git-annex_replicate/comment_1_9926132ec6052760cdf28518a24e2358._comment ./doc/forum/wishlist:_git-annex_replicate/comment_2_c43932f4194aba8fb2470b18e0817599._comment ./doc/forum/Behaviour_of_fsck/comment_4_e4911dc6793f98fb81151daacbe49968._comment ./doc/forum/Behaviour_of_fsck/comment_3_97848f9a3db89c0427cfb671ba13300e._comment ./doc/forum/Behaviour_of_fsck/comment_2_ead36a23c3e6efa1c41e4555f93e014e._comment ./doc/forum/Behaviour_of_fsck/comment_1_0e40f158b3f4ccdcaab1408d858b68b8._comment ./doc/forum/incompatible_versions__63__/comment_1_629f28258746d413e452cbd42a1a43f4._comment ./doc/forum/migration_to_git-annex_and_rsync.mdwn ./doc/forum/hashing_objects_directories.mdwn ./doc/forum/hashing_objects_directories/comment_5_ef6cfd49d24c180c2d0a062e5bd3a0be._comment ./doc/forum/hashing_objects_directories/comment_1_c55c56076be4f54251b0b7f79f28a607._comment ./doc/forum/hashing_objects_directories/comment_2_504c96959c779176f991f4125ea22009._comment ./doc/forum/hashing_objects_directories/comment_3_9134bde0a13aac0b6a4e5ebabd7f22e8._comment ./doc/forum/hashing_objects_directories/comment_4_0de9170e429cbfea66f5afa8980d45ac._comment ./doc/forum/wishlist:_support_for_more_ssh_urls_.mdwn ./doc/forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.mdwn ./doc/forum/git-annex_on_OSX.mdwn ./doc/forum/version_3_upgrade/comment_1_05fc9c9cad26c520bebb98c852c71e35._comment ./doc/forum/example_of_massively_disconnected_operation.mdwn ./doc/forum/git-annex_communication_channels/comment_2_c7aeefa6ef9a2e75d8667b479ade1b7f._comment ./doc/forum/git-annex_communication_channels/comment_5_404b723a681eb93fee015cea8024b6bc._comment ./doc/forum/git-annex_communication_channels/comment_1_198325d2e9337c90f026396de89eec0e._comment ./doc/forum/git-annex_communication_channels/comment_4_1ba6ddf54843c17c7d19a9996f2ab712._comment ./doc/forum/git-annex_communication_channels/comment_6_0d87d0e26461494b1d7f8a701a924729._comment ./doc/forum/git-annex_communication_channels/comment_3_1ff08a3e0e63fa0e560cbc9602245caa._comment ./doc/forum/git-annex_communication_channels/comment_7_2c87c7a0648fe87c2bf6b4391f1cc468._comment ./doc/forum/wishlist:_git-annex_replicate.mdwn ./doc/forum/advantages_of_SHA__42___over_WORM/comment_1_96c354cac4b5ce5cf6664943bc84db1d._comment ./doc/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.mdwn ./doc/forum/Behaviour_of_fsck.mdwn ./doc/forum/working_without_git-annex_commits.mdwn ./doc/forum/migrate_existing_git_repository_to_git-annex.mdwn ./doc/forum/__34__git_annex_lock__34___very_slow_for_big_repo.mdwn ./doc/forum/wishlist:_traffic_accounting_for_git-annex.mdwn ./doc/forum/rsync_over_ssh__63__.mdwn ./doc/forum/unannex_alternatives/comment_3_b1687fc8f9e7744327bbeb6f0635d1cd._comment ./doc/forum/unannex_alternatives/comment_1_dcd4cd41280b41512bbdffafaf307993._comment ./doc/forum/unannex_alternatives/comment_2_58a72a9fe0f58c7af0b4d7927a2dd21d._comment ./doc/forum/wishlist:_git_annex_status/comment_4_9aeeb83d202dc8fb33ff364b0705ad94._comment ./doc/forum/wishlist:_git_annex_status/comment_3_d1fd70c67243971c96d59e1ffb7ef6e7._comment ./doc/forum/wishlist:_git_annex_status/comment_2_c2b0ce025805b774dc77ce264a222824._comment ./doc/forum/wishlist:_git_annex_status/comment_1_994bfd12c5d82e08040d6116915c5090._comment ./doc/forum/wishlist:_command_options_changes.mdwn ./doc/forum/new_microfeatures/comment_2_41ad904c68e89c85e1fc49c9e9106969._comment ./doc/forum/new_microfeatures/comment_1_058bd517c6fffaf3446b1f5d5be63623._comment ./doc/forum/new_microfeatures/comment_3_a1a9347b5bc517f2a89a8b292c3f8517._comment ./doc/forum/new_microfeatures/comment_7_94045b9078b1fff877933b012d1b49e2._comment ./doc/forum/new_microfeatures/comment_5_3c627d275586ff499d928a8f8136babf._comment ./doc/forum/new_microfeatures/comment_4_5a6786dc52382fff5cc42fdb05770196._comment ./doc/forum/new_microfeatures/comment_6_31ea08c008500560c0b96c6601bc6362._comment ./doc/forum/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.mdwn ./doc/forum/advantages_of_SHA__42___over_WORM.mdwn ./doc/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.mdwn ./doc/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.mdwn ./doc/forum/bainstorming:_git_annex_push___38___pull.mdwn ./doc/forum/sparse_git_checkouts_with_annex.mdwn ./doc/forum/Need_new_build_instructions_for_Debian_stable.mdwn ./doc/forum/batch_check_on_remote_when_using_copy.mdwn ./doc/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.mdwn ./doc/forum/wishlist:alias_system.mdwn ./doc/forum/incompatible_versions__63__.mdwn ./doc/forum/wishlist:_git_backend_for_git-annex.mdwn ./doc/forum/seems_to_build_fine_on_haskell_platform_2011.mdwn ./doc/forum/rsync_over_ssh__63__/comment_1_ee21f32e90303e20339e0a568321bbbe._comment ./doc/forum/rsync_over_ssh__63__/comment_2_aa690da6ecfb2b30fc5080ad76dc77b1._comment ./doc/forum/wishlist:_special_remote_for_sftp_or_rsync.mdwn ./doc/forum/OSX__39__s_haskell-platform_statically_links_things.mdwn ./doc/forum/unannex_alternatives.mdwn ./doc/forum/can_git-annex_replace_ddm__63__.mdwn ./doc/forum/sparse_git_checkouts_with_annex/comment_2_e357db3ccc4079f07a291843975535eb._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_1_c7dc199c5740a0e7ba606dfb5e3e579a._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_3_fcfafca994194d57dccf5319c7c9e646._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_4_04dc14880f31eee2b6d767d4d4258c5a._comment ./doc/forum/git-annex_communication_channels.mdwn ./doc/forum/can_git-annex_replace_ddm__63__/comment_3_4c69097fe2ee81359655e59a03a9bb8d._comment ./doc/forum/can_git-annex_replace_ddm__63__/comment_2_008554306dd082d7f543baf283510e92._comment ./doc/forum/can_git-annex_replace_ddm__63__/comment_1_aa05008dfe800474ff76678a400099e1._comment ./doc/forum/version_3_upgrade.mdwn ./doc/forum/relying_on_git_for_numcopies/comment_3_43d8e1513eb9947f8a503f094c03f307._comment ./doc/forum/relying_on_git_for_numcopies/comment_2_be6acbc26008a9cb54e7b8f498f2c2a2._comment ./doc/forum/relying_on_git_for_numcopies/comment_1_8ad3cccd7f66f6423341d71241ba89fc._comment ./doc/forum/relying_on_git_for_numcopies.mdwn ./doc/forum/wishlist:_do_round_robin_downloading_of_data.mdwn ./doc/forum/wishlist:_git_annex_status.mdwn ./doc/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.mdwn ./doc/forum/Problems_with_large_numbers_of_files.mdwn ./doc/forum/Can_I_store_normal_files_in_the_git-annex_git_repository__63__.mdwn ./doc/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.mdwn ./doc/forum/wishlist:_push_to_cia.vc_from_the_website__39__s_repo__44___not_your_personal_one.mdwn ./doc/forum/new_microfeatures.mdwn ./doc/backends.mdwn ./doc/bugs/__39__annex_add__39___fails_to___39__git_add__39___for_parent_relative_path.mdwn ./doc/bugs/softlink_mtime.mdwn ./doc/bugs/ordering.mdwn ./doc/bugs/dropping_files_with_a_URL_backend_fails.mdwn ./doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn ./doc/bugs/add_script-friendly_output_options.mdwn ./doc/bugs/git_annex_get_choke_when_remote_is_an_ssh_url_with_a_port.mdwn ./doc/bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.mdwn ./doc/bugs/git_annex_migrate_leaves_old_backend_versions_around.mdwn ./doc/bugs/git_annex_unused_failes_on_empty_repository.mdwn ./doc/bugs/git_annex_add_eats_files_when_filename_is_too_long.mdwn ./doc/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.mdwn ./doc/bugs/problem_with_upgrade_v2_-__62___v3.mdwn ./doc/bugs/git_annex_copy_--fast_does_not_copy_files.mdwn ./doc/bugs/Cabal_dependency_monadIO_missing.mdwn ./doc/bugs/dotdot_problem.mdwn ./doc/bugs/Problems_running_make_on_osx.mdwn ./doc/bugs/free_space_checking/comment_2_8a65f6d3dcf5baa3f7f2dbe1346e2615._comment ./doc/bugs/free_space_checking/comment_3_0fc6ff79a357b1619d13018ccacc7c10._comment ./doc/bugs/free_space_checking/comment_1_a868e805be43c5a7c19c41f1af8e41e6._comment ./doc/bugs/done.mdwn ./doc/bugs/git_annex_copy_-f_REMOTE_._doesn__39__t_work_as_expected.mdwn ./doc/bugs/Displayed_copy_speed_is_wrong/comment_2_8b240de1d5ae9229fa2d77d1cc15a552._comment ./doc/bugs/Displayed_copy_speed_is_wrong/comment_1_74de3091e8bfd7acd6795e61f39f07c6._comment ./doc/bugs/Build_error_on_Mac_OSX_10.6.mdwn ./doc/bugs/bare_git_repos.mdwn ./doc/bugs/fat_support.mdwn ./doc/bugs/problems_with_utf8_names.mdwn ./doc/bugs/error_with_file_names_starting_with_dash.mdwn ./doc/bugs/unhappy_without_UTF8_locale.mdwn ./doc/bugs/S3_memory_leaks.mdwn ./doc/bugs/upgrade_left_untracked_.git-annex__47____42___directories.mdwn ./doc/bugs/--git-dir_and_--work-tree_options.mdwn ./doc/bugs/Problems_running_make_on_osx/comment_9_cc283b485b3c95ba7eebc8f0c96969b3._comment ./doc/bugs/Problems_running_make_on_osx/comment_4_c52be386f79f14c8570a8f1397c68581._comment ./doc/bugs/Problems_running_make_on_osx/comment_18_64fab50d95de619eb2e8f08f90237de1._comment ./doc/bugs/Problems_running_make_on_osx/comment_16_5c2dd6002aadaab30841b77a5f5aed34._comment ./doc/bugs/Problems_running_make_on_osx/comment_10_94e4ac430140042a2d0fb5a16d86b4e5._comment ./doc/bugs/Problems_running_make_on_osx/comment_15_6b8867b8e48bf807c955779c9f8f0909._comment ./doc/bugs/Problems_running_make_on_osx/comment_11_56f1143fa191361d63b441741699e17f._comment ./doc/bugs/Problems_running_make_on_osx/comment_20_7db27d1a22666c831848bc6c06d66a84._comment ./doc/bugs/Problems_running_make_on_osx/comment_12_ec5131624d0d2285d3b6880e47033f97._comment ./doc/bugs/Problems_running_make_on_osx/comment_3_68f0f8ae953589ae26d57310b40c878d._comment ./doc/bugs/Problems_running_make_on_osx/comment_14_89a960b6706ed703b390a81a8bc4e311._comment ./doc/bugs/Problems_running_make_on_osx/comment_17_62fccb04b0e4b695312f7a3f32fb96ee._comment ./doc/bugs/Problems_running_make_on_osx/comment_19_4253988ed178054c8b6400beeed68a29._comment ./doc/bugs/Problems_running_make_on_osx/comment_6_0c46f5165ceb5a7b9ea9689c33b3a4f8._comment ./doc/bugs/Problems_running_make_on_osx/comment_1_34120e82331ace01a6a4960862d38f2d._comment ./doc/bugs/Problems_running_make_on_osx/comment_7_237a137cce58a28abcc736cbf2c420b0._comment ./doc/bugs/Problems_running_make_on_osx/comment_5_7f1330a1e541b0f3e2192e596d7f7bee._comment ./doc/bugs/Problems_running_make_on_osx/comment_2_cc53d1681d576186dbc868dd9801d551._comment ./doc/bugs/Problems_running_make_on_osx/comment_13_88ed095a448096bf8a69015a04e64df1._comment ./doc/bugs/Problems_running_make_on_osx/comment_8_efafa203addf8fa79e33e21a87fb5a2b._comment ./doc/bugs/git-annex_directory_hashing_problems_on_osx.mdwn ./doc/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.mdwn ./doc/bugs/git_annex_unlock_is_not_atomic.mdwn ./doc/bugs/free_space_checking.mdwn ./doc/bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.mdwn ./doc/bugs/Displayed_copy_speed_is_wrong.mdwn ./doc/bugs/git_annex_should_use___39__git_add_-f__39___internally.mdwn ./doc/bugs/minor_bug:_errors_are_not_verbose_enough.mdwn ./doc/bugs/No_version_information_from_cli.mdwn ./doc/bugs/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.mdwn ./doc/bugs/tests_fail_when_there_is_no_global_.gitconfig_for_the_user.mdwn ./doc/bugs/git_annex_initremote_walks_.git-annex.mdwn ./doc/bugs/git-annex_incorrectly_parses_bare_IPv6_addresses.mdwn ./doc/bugs/conflicting_haskell_packages/comment_1_e552a6cc6d7d1882e14130edfc2d6b3b._comment ./doc/bugs/tmp_file_handling.mdwn ./doc/bugs/annex_add_in_annex.mdwn ./doc/bugs/making_annex-merge_try_a_fast-forward.mdwn ./doc/bugs/Makefile_is_missing_dependancies.mdwn ./doc/bugs/test_suite_shouldn__39__t_fail_silently.mdwn ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_4_91439d4dbbf1461e281b276eb0003691._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_6_f360f0006bc9115bc5a3e2eb9fe58abd._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_3_86d9e7244ae492bcbe62720b8c4fc4a9._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_2_cd0123392b16d89db41b45464165c247._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_1_5f60006c9bb095167d817f234a14d20b._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_5_ca33a9ca0df33f7c1b58353d7ffb943d._comment ./doc/bugs/git_rename_detection_on_file_move/comment_3_57010bcaca42089b451ad8659a1e018e._comment ./doc/bugs/git_rename_detection_on_file_move/comment_4_79d96599f757757f34d7b784e6c0e81c._comment ./doc/bugs/git_rename_detection_on_file_move/comment_5_d61f5693d947b9736b29fca1dbc7ad76._comment ./doc/bugs/git_rename_detection_on_file_move/comment_2_7101d07400ad5935f880dc00d89bf90e._comment ./doc/bugs/git_rename_detection_on_file_move/comment_1_0531dcfa833b0321a7009526efe3df33._comment ./doc/bugs/add_range_argument_to___34__git_annex_dropunused__34___.mdwn ./doc/bugs/git_rename_detection_on_file_move.mdwn ./doc/bugs/problem_commit_normal_links.mdwn ./doc/bugs/git_annex_unused_seems_to_check_for_current_path.mdwn ./doc/bugs/Makefile_is_missing_dependancies/comment_6_24119fc5d5963ce9dd669f7dcf006859._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_3_c38b6f4abc9b9ad413c3b83ca04386c3._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_8_a3555e3286cdc2bfeb9cde0ff727ba74._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_2_416f12dbd0c2b841fac8164645b81df5._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_5_0a1c52e2c96d19b9c3eb7e99b8c2434f._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_7_96fd4725df4b54e670077a18d3ac4943._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_1_5a3da5f79c8563c7a450aa29728abe7c._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_4_cc13873175edf191047282700315beee._comment ./doc/bugs/touch.hsc_has_problems_on_non-linux_based_systems.mdwn ./doc/bugs/build_issue_with_latest_release_0.20110522-1-gde817ba.mdwn ./doc/bugs/weird_local_clone_confuses.mdwn ./doc/bugs/fsck_output.mdwn ./doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn ./doc/bugs/git_annex_gets_confused_about_remotes_with_dots_in_their_names.mdwn ./doc/bugs/unannex_vs_unlock_hook_confusion.mdwn ./doc/bugs/Cabal_dependency_monadIO_missing/comment_2_4f4d8e1e00a2a4f7e8a8ab082e16adac._comment ./doc/bugs/Cabal_dependency_monadIO_missing/comment_1_14be660aa57fadec0d81b32a8b52c66f._comment ./doc/bugs/conflicting_haskell_packages.mdwn ./doc/bugs/git_command_line_constructed_by_unannex_command_has_tons_of_redundant_-a_paramters.mdwn ./doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn ./doc/bugs/fat_support/comment_3_df3b943bc1081a8f3f7434ae0c8e061e._comment ./doc/bugs/fat_support/comment_4_90a8a15bedd94480945a374f9d706b86._comment ./doc/bugs/fat_support/comment_5_64bbf89de0836673224b83fdefa0407b._comment ./doc/bugs/fat_support/comment_1_04bcc4795d431e8cb32293aab29bbfe2._comment ./doc/bugs/fat_support/comment_2_bb4a97ebadb5c53809fc78431eabd7c8._comment ./doc/bugs/unannex_command_doesn__39__t_all_files.mdwn ./doc/bugs/annex_unannex__47__uninit_should_handle_copies.mdwn ./doc/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.mdwn ./doc/bugs/Unfortunate_interaction_with_Calibre.mdwn ./doc/bugs/error_propigation.mdwn ./doc/bugs/scp_interrupt_to_background.mdwn ./doc/bugs/copy_fast_confusing_with_broken_locationlog.mdwn ./doc/bugs/configure_script_should_detect_uuidgen_instead_of_just_uuid.mdwn ./doc/bugs/check_for_curl_in_configure.hs.mdwn ./doc/bugs/Name_scheme_does_not_follow_git__39__s_rules.mdwn ./doc/bugs/Prevent_accidental_merges.mdwn ./doc/bugs/building_on_lenny.mdwn ./doc/bugs/encrypted_S3_stalls.mdwn ./doc/bugs/support_bare_git_repo__44___with_the_annex_directory_exposed_to_http.mdwn ./doc/bugs/WORM:_Handle_long_filenames_correctly.mdwn ./doc/logo_small.png ./doc/cheatsheet.mdwn ./doc/use_case/Bob.mdwn ./doc/use_case/Alice.mdwn ./doc/upgrades/SHA_size.mdwn ./doc/news/sharebox_a_FUSE_filesystem_for_git-annex.mdwn ./doc/news/version_3.20110902.mdwn ./doc/news/version_3.20110817.mdwn ./doc/news/version_3.20110906.mdwn ./doc/news/LWN_article.mdwn ./doc/news/version_3.20110915.mdwn ./doc/news/version_3.20110819.mdwn ./doc/git-union-merge.mdwn ./doc/special_remotes/S3.mdwn ./doc/special_remotes/web.mdwn ./doc/special_remotes/bup.mdwn ./doc/special_remotes/directory.mdwn ./doc/special_remotes/hook.mdwn ./doc/special_remotes/rsync.mdwn ./doc/users/joey.mdwn ./doc/users/fmarier.mdwn ./doc/users/chrysn.mdwn ./doc/templates/walkthrough.tmpl ./doc/templates/bare.tmpl ./doc/index.mdwn ./doc/summary.mdwn ./doc/forum.mdwn ./doc/encryption/comment_1_1afca8d7182075d46db41f6ad3dd5911._comment ./doc/transferring_data.mdwn ./doc/download.mdwn ./doc/future_proofing.mdwn ./doc/todo/auto_remotes/discussion.mdwn ./doc/todo/file_copy_progress_bar.mdwn ./doc/todo/use_cp_reflink.mdwn ./doc/todo/gitrm.mdwn ./doc/todo/exclude_files_on_a_given_remote.mdwn ./doc/todo/git-annex_unused_eats_memory.mdwn ./doc/todo/add_--exclude_option_to_git_annex_find.mdwn ./doc/todo/tahoe_lfs_for_reals/comment_2_80b9e848edfdc7be21baab7d0cef0e3a._comment ./doc/todo/tahoe_lfs_for_reals/comment_1_0a4793ce6a867638f6e510e71dd4bb44._comment ./doc/todo/object_dir_reorg_v2.mdwn ./doc/todo/S3.mdwn ./doc/todo/auto_remotes.mdwn ./doc/todo/wishlist:_support_for_more_ssh_urls_.mdwn ./doc/todo/support-non-utf8-locales.mdwn ./doc/todo/done.mdwn ./doc/todo/fsck.mdwn ./doc/todo/support_S3_multipart_uploads.mdwn ./doc/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.mdwn ./doc/todo/pushpull.mdwn ./doc/todo/smudge.mdwn ./doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment ./doc/todo/object_dir_reorg_v2/comment_3_79bdf9c51dec9f52372ce95b53233bb2._comment ./doc/todo/object_dir_reorg_v2/comment_7_42501404c82ca07147e2cce0cff59474._comment ./doc/todo/object_dir_reorg_v2/comment_5_821c382987f105da72a50e0a5ce61fdc._comment ./doc/todo/object_dir_reorg_v2/comment_1_ba03333dc76ff49eccaba375e68cb525._comment ./doc/todo/object_dir_reorg_v2/comment_2_81276ac309959dc741bc90101c213ab7._comment ./doc/todo/object_dir_reorg_v2/comment_6_8834c3a3f1258c4349d23aff8549bf35._comment ./doc/todo/object_dir_reorg_v2/comment_4_93aada9b1680fed56cc6f0f7c3aca5e5._comment ./doc/todo/union_mounting.mdwn ./doc/todo/wishlist:_swift_backend.mdwn ./doc/todo/wishlist:_swift_backend/comment_1_e6efbb35f61ee521b473a92674036788._comment ./doc/todo/wishlist:_swift_backend/comment_2_5d8c83b0485112e98367b7abaab3f4e3._comment ./doc/todo/git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.mdwn ./doc/todo/wishlist:___34__git_annex_add__34___multiple_processes.mdwn ./doc/todo/hidden_files.mdwn ./doc/todo/smudge/comment_1_4ea616bcdbc9e9a6fae9f2e2795c31c9._comment ./doc/todo/smudge/comment_2_e04b32caa0d2b4c577cdaf382a3ff7f6._comment ./doc/todo/network_remotes.mdwn ./doc/todo/add_a_git_backend.mdwn ./doc/todo/parallel_possibilities/comment_1_d8e34fc2bc4e5cf761574608f970d496._comment ./doc/todo/parallel_possibilities/comment_2_adb76f06a7997abe4559d3169a3181c3._comment ./doc/todo/checkout.mdwn ./doc/todo/immutable_annexed_files.mdwn ./doc/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.mdwn ./doc/todo/git-annex-shell.mdwn ./doc/todo/speed_up_fsck.mdwn ./doc/todo/tahoe_lfs_for_reals.mdwn ./doc/todo/using_url_backend.mdwn ./doc/todo/branching.mdwn ./doc/todo/rsync.mdwn ./doc/todo/backendSHA1.mdwn ./doc/todo/cache_key_info.mdwn ./doc/todo/parallel_possibilities.mdwn ./doc/todo/symlink_farming_commit_hook.mdwn ./doc/feeds.mdwn ./doc/copies.mdwn ./doc/repomap.png ./doc/special_remotes.mdwn ./doc/todo.mdwn ./doc/walkthrough/using_ssh_remotes.mdwn ./doc/walkthrough/untrusted_repositories.mdwn ./doc/walkthrough/automatically_managing_content.mdwn ./doc/walkthrough/removing_files/comment_1_cb65e7c510b75be1c51f655b058667c6._comment ./doc/walkthrough/removing_files/comment_2_64709ea4558915edd5c8ca4486965b07._comment ./doc/walkthrough/moving_file_content_between_repositories.mdwn ./doc/walkthrough/modifying_annexed_files.mdwn ./doc/walkthrough/Internet_Archive_via_S3.mdwn ./doc/walkthrough/more.mdwn ./doc/walkthrough/removing_files.mdwn ./doc/walkthrough/creating_a_repository.mdwn ./doc/walkthrough/what_to_do_when_you_lose_a_repository.mdwn ./doc/walkthrough/using_Amazon_S3.mdwn ./doc/walkthrough/adding_a_remote.mdwn ./doc/walkthrough/adding_a_remote/comment_1_0a59355bd33a796aec97173607e6adc9._comment ./doc/walkthrough/adding_a_remote/comment_2_f8cd79ef1593a8181a7f1086a87713e8._comment ./doc/walkthrough/adding_a_remote/comment_3_60691af4400521b5a8c8d75efe3b44cb._comment ./doc/walkthrough/adding_a_remote/comment_4_6f7cf5c330272c96b3abeb6612075c9d._comment ./doc/walkthrough/removing_files:_When_things_go_wrong.mdwn ./doc/walkthrough/renaming_files.mdwn ./doc/walkthrough/using_bup.mdwn ./doc/walkthrough/fsck:_when_things_go_wrong.mdwn ./doc/walkthrough/adding_files.mdwn ./doc/walkthrough/unused_data.mdwn ./doc/walkthrough/fsck:_verifying_your_data.mdwn ./doc/walkthrough/getting_file_content.mdwn ./doc/walkthrough/using_the_web.mdwn ./doc/walkthrough/recover_data_from_lost+found.mdwn ./doc/walkthrough/backups.mdwn ./doc/walkthrough/transferring_files:_When_things_go_wrong.mdwn ./doc/walkthrough/using_the_SHA1_backend.mdwn ./doc/walkthrough/migrating_data_to_a_new_backend.mdwn ./doc/GPL ./doc/logo.png ./doc/location_tracking.mdwn ./doc/design.mdwn ./doc/news.mdwn ./doc/encryption.mdwn ./doc/not.mdwn ./doc/download/comment_7_a5eebd214b135f34b18274a682211943._comment ./doc/download/comment_3_cf6044ebe99f71158034e21197228abd._comment ./doc/download/comment_5_c6b1bc40226fc2c8ba3e558150856992._comment ./doc/download/comment_6_3a52993d3553deb9a413debec9a5f92d._comment ./doc/download/comment_2_f85f72b33aedc3425f0c0c47867d02f3._comment ./doc/download/comment_8_59a976de6c7d333709b92f7cd5830850._comment ./doc/download/comment_4_10fc013865c7542c2ed9d6c0963bb391._comment ./doc/download/comment_1_fbd8b6d39e9d3c71791551358c863966._comment ./doc/contact.mdwn ./doc/trust.mdwn ./doc/bare_repositories.mdwn ./doc/distributed_version_control.mdwn ./doc/install.mdwn ./doc/git-annex-shell.mdwn ./doc/bugs.mdwn ./doc/design/encryption/comment_2_a610b3d056a059899178859a3a821ea5._comment ./doc/design/encryption/comment_3_cca186a9536cd3f6e86994631b14231c._comment ./doc/design/encryption/comment_1_4715ffafb3c4a9915bc33f2b26aaa9c1._comment ./doc/design/encryption/comment_4_8f3ba3e504b058791fc6e6f9c38154cf._comment ./doc/design/encryption.mdwn ./doc/comments.mdwn ./doc/git-annex.mdwn ./doc/internals.mdwn ./doc/users.mdwn ./doc/install/Ubuntu.mdwn ./doc/install/Debian.mdwn ./doc/install/OSX.mdwn ./doc/install/FreeBSD.mdwn ./doc/install/OSX/comment_1_0a1760bf0db1f1ba89bdb4c62032f631._comment ./doc/install/comment_3_cff163ea3e7cad926f4ed9e78b896598._comment ./doc/install/Debian/comment_2_648e3467e260cdf233acdb0b53313ce0._comment ./doc/install/Debian/comment_1_029486088d098c2d4f1099f2f0e701a9._comment ./doc/install/Fedora.mdwn ./doc/install/comment_4_82a17eee4a076c6c79fddeda347e0c9a._comment ./doc/walkthrough.mdwn ./CmdLine.hs ./UUID.hs ./Messages.hs ./Setup.hs ./GPL ./mdwn2man ./Remote.hs ./git-annex.hs ./Locations.hs ./Backend/WORM.hs ./Backend/URL.hs ./Backend/SHA.hs ./Options.hs ./git-annex-shell.hs ./test.hs ./INSTALL ./Remote/Web.hs ./Remote/S3stub.hs ./Remote/Helper/Encryptable.hs ./Remote/Helper/Special.hs ./Remote/Directory.hs ./Remote/S3real.hs ./Remote/Bup.hs ./Remote/Hook.hs ./Remote/Rsync.hs ./Remote/Git.hs ./Utility.hs ./Build/TestConfig.hs ./Upgrade.hs ./git-union-merge.hs ./Utility/Path.hs ./Utility/Url.hs ./Utility/DataUnits.hs ./Utility/StatFS.hsc ./Utility/Conditional.hs ./Utility/Ssh.hs ./Utility/RsyncFile.hs ./Utility/CopyFile.hs ./Utility/SafeCommand.hs ./Utility/JSONStream.hs ./Utility/Dot.hs ./Utility/Touch.hsc ./Utility/Base64.hs ./Types/Crypto.hs ./Types/UUID.hs ./Types/TrustLevel.hs ./Types/Remote.hs ./Types/BranchState.hs ./Types/Backend.hs ./Types/Key.hs ./Config.hs ./Command.hs ./.gitignore ./Backend.hs ./Content.hs ./.gitattributes ./Git.hs ./GitAnnex.hs+Extra-Source-Files: ./debian/NEWS ./debian/control ./debian/rules ./debian/manpages ./debian/changelog ./debian/doc-base ./debian/copyright ./debian/compat ./Messages/JSON.hs ./AnnexQueue.hs ./configure.hs ./Annex.hs ./PresenceLog.hs ./Version.hs ./Crypto.hs ./RemoteLog.hs ./README ./Command/Merge.hs ./Command/AddUrl.hs ./Command/Whereis.hs ./Command/Unlock.hs ./Command/Version.hs ./Command/FromKey.hs ./Command/PreCommit.hs ./Command/Map.hs ./Command/Unused.hs ./Command/Uninit.hs ./Command/Migrate.hs ./Command/Init.hs ./Command/ConfigList.hs ./Command/Trust.hs ./Command/Lock.hs ./Command/SendKey.hs ./Command/RecvKey.hs ./Command/Add.hs ./Command/Fix.hs ./Command/Untrust.hs ./Command/InitRemote.hs ./Command/Semitrust.hs ./Command/Fsck.hs ./Command/Move.hs ./Command/DropUnused.hs ./Command/Get.hs ./Command/Upgrade.hs ./Command/Describe.hs ./Command/Drop.hs ./Command/DropKey.hs ./Command/InAnnex.hs ./Command/Find.hs ./Command/Unannex.hs ./Command/Status.hs ./Command/Copy.hs ./Command/SetKey.hs ./Init.hs ./Types.hs ./Trust.hs ./Makefile ./CatFile.hs ./git-annex.cabal ./Upgrade/V1.hs ./Upgrade/V2.hs ./Upgrade/V0.hs ./LocationLog.hs ./CHANGELOG ./Git/LsFiles.hs ./Git/UnionMerge.hs ./Git/CatFile.hs ./Git/Queue.hs ./Git/LsTree.hs ./Branch.hs ./doc/upgrades.mdwn ./doc/forum/wishlist:_define_remotes_that_must_have_all_files.mdwn ./doc/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.mdwn ./doc/forum/wishlist:_command_options_changes/comment_2_f6a637c78c989382e3c22d41b7fb4cc2._comment ./doc/forum/wishlist:_command_options_changes/comment_3_bf1114533d2895804e531e76eb6b8095._comment ./doc/forum/wishlist:_command_options_changes/comment_1_bfba72a696789bf21b2435dea15f967a._comment ./doc/forum/wishlist:_git-annex_replicate/comment_3_c13f4f9c3d5884fc6255fd04feadc2b1._comment ./doc/forum/wishlist:_git-annex_replicate/comment_1_9926132ec6052760cdf28518a24e2358._comment ./doc/forum/wishlist:_git-annex_replicate/comment_2_c43932f4194aba8fb2470b18e0817599._comment ./doc/forum/wishlist:_git-annex_replicate/comment_4_63f24abf086d644dced8b01e1a9948c9._comment ./doc/forum/Behaviour_of_fsck/comment_4_e4911dc6793f98fb81151daacbe49968._comment ./doc/forum/Behaviour_of_fsck/comment_3_97848f9a3db89c0427cfb671ba13300e._comment ./doc/forum/Behaviour_of_fsck/comment_2_ead36a23c3e6efa1c41e4555f93e014e._comment ./doc/forum/Behaviour_of_fsck/comment_1_0e40f158b3f4ccdcaab1408d858b68b8._comment ./doc/forum/incompatible_versions__63__/comment_1_629f28258746d413e452cbd42a1a43f4._comment ./doc/forum/migration_to_git-annex_and_rsync.mdwn ./doc/forum/hashing_objects_directories.mdwn ./doc/forum/hashing_objects_directories/comment_5_ef6cfd49d24c180c2d0a062e5bd3a0be._comment ./doc/forum/hashing_objects_directories/comment_1_c55c56076be4f54251b0b7f79f28a607._comment ./doc/forum/hashing_objects_directories/comment_2_504c96959c779176f991f4125ea22009._comment ./doc/forum/hashing_objects_directories/comment_3_9134bde0a13aac0b6a4e5ebabd7f22e8._comment ./doc/forum/hashing_objects_directories/comment_4_0de9170e429cbfea66f5afa8980d45ac._comment ./doc/forum/wishlist:_support_for_more_ssh_urls_.mdwn ./doc/forum/Wishlist:_Ways_of_selecting_files_based_on_meta-information.mdwn ./doc/forum/git-annex_on_OSX.mdwn ./doc/forum/version_3_upgrade/comment_1_05fc9c9cad26c520bebb98c852c71e35._comment ./doc/forum/example_of_massively_disconnected_operation.mdwn ./doc/forum/git-annex_communication_channels/comment_2_c7aeefa6ef9a2e75d8667b479ade1b7f._comment ./doc/forum/git-annex_communication_channels/comment_5_404b723a681eb93fee015cea8024b6bc._comment ./doc/forum/git-annex_communication_channels/comment_1_198325d2e9337c90f026396de89eec0e._comment ./doc/forum/git-annex_communication_channels/comment_4_1ba6ddf54843c17c7d19a9996f2ab712._comment ./doc/forum/git-annex_communication_channels/comment_6_0d87d0e26461494b1d7f8a701a924729._comment ./doc/forum/git-annex_communication_channels/comment_3_1ff08a3e0e63fa0e560cbc9602245caa._comment ./doc/forum/git-annex_communication_channels/comment_7_2c87c7a0648fe87c2bf6b4391f1cc468._comment ./doc/forum/wishlist:_git-annex_replicate.mdwn ./doc/forum/advantages_of_SHA__42___over_WORM/comment_1_96c354cac4b5ce5cf6664943bc84db1d._comment ./doc/forum/performance_improvement:_git_on_ssd__44___annex_on_spindle_disk.mdwn ./doc/forum/Behaviour_of_fsck.mdwn ./doc/forum/working_without_git-annex_commits.mdwn ./doc/forum/migrate_existing_git_repository_to_git-annex.mdwn ./doc/forum/__34__git_annex_lock__34___very_slow_for_big_repo.mdwn ./doc/forum/wishlist:_traffic_accounting_for_git-annex.mdwn ./doc/forum/rsync_over_ssh__63__.mdwn ./doc/forum/unannex_alternatives/comment_3_b1687fc8f9e7744327bbeb6f0635d1cd._comment ./doc/forum/unannex_alternatives/comment_1_dcd4cd41280b41512bbdffafaf307993._comment ./doc/forum/unannex_alternatives/comment_2_58a72a9fe0f58c7af0b4d7927a2dd21d._comment ./doc/forum/wishlist:_git_annex_status/comment_4_9aeeb83d202dc8fb33ff364b0705ad94._comment ./doc/forum/wishlist:_git_annex_status/comment_3_d1fd70c67243971c96d59e1ffb7ef6e7._comment ./doc/forum/wishlist:_git_annex_status/comment_2_c2b0ce025805b774dc77ce264a222824._comment ./doc/forum/wishlist:_git_annex_status/comment_1_994bfd12c5d82e08040d6116915c5090._comment ./doc/forum/wishlist:_command_options_changes.mdwn ./doc/forum/new_microfeatures/comment_2_41ad904c68e89c85e1fc49c9e9106969._comment ./doc/forum/new_microfeatures/comment_1_058bd517c6fffaf3446b1f5d5be63623._comment ./doc/forum/new_microfeatures/comment_3_a1a9347b5bc517f2a89a8b292c3f8517._comment ./doc/forum/new_microfeatures/comment_7_94045b9078b1fff877933b012d1b49e2._comment ./doc/forum/new_microfeatures/comment_5_3c627d275586ff499d928a8f8136babf._comment ./doc/forum/new_microfeatures/comment_4_5a6786dc52382fff5cc42fdb05770196._comment ./doc/forum/new_microfeatures/comment_6_31ea08c008500560c0b96c6601bc6362._comment ./doc/forum/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.mdwn ./doc/forum/advantages_of_SHA__42___over_WORM.mdwn ./doc/forum/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.mdwn ./doc/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.mdwn ./doc/forum/bainstorming:_git_annex_push___38___pull.mdwn ./doc/forum/sparse_git_checkouts_with_annex.mdwn ./doc/forum/Need_new_build_instructions_for_Debian_stable.mdwn ./doc/forum/batch_check_on_remote_when_using_copy.mdwn ./doc/forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs.mdwn ./doc/forum/wishlist:alias_system.mdwn ./doc/forum/incompatible_versions__63__.mdwn ./doc/forum/wishlist:_git_backend_for_git-annex.mdwn ./doc/forum/seems_to_build_fine_on_haskell_platform_2011.mdwn ./doc/forum/rsync_over_ssh__63__/comment_1_ee21f32e90303e20339e0a568321bbbe._comment ./doc/forum/rsync_over_ssh__63__/comment_2_aa690da6ecfb2b30fc5080ad76dc77b1._comment ./doc/forum/wishlist:_special_remote_for_sftp_or_rsync.mdwn ./doc/forum/OSX__39__s_haskell-platform_statically_links_things.mdwn ./doc/forum/unannex_alternatives.mdwn ./doc/forum/can_git-annex_replace_ddm__63__.mdwn ./doc/forum/sparse_git_checkouts_with_annex/comment_2_e357db3ccc4079f07a291843975535eb._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_1_c7dc199c5740a0e7ba606dfb5e3e579a._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_3_fcfafca994194d57dccf5319c7c9e646._comment ./doc/forum/sparse_git_checkouts_with_annex/comment_4_04dc14880f31eee2b6d767d4d4258c5a._comment ./doc/forum/git-annex_communication_channels.mdwn ./doc/forum/can_git-annex_replace_ddm__63__/comment_3_4c69097fe2ee81359655e59a03a9bb8d._comment ./doc/forum/can_git-annex_replace_ddm__63__/comment_2_008554306dd082d7f543baf283510e92._comment ./doc/forum/can_git-annex_replace_ddm__63__/comment_1_aa05008dfe800474ff76678a400099e1._comment ./doc/forum/version_3_upgrade.mdwn ./doc/forum/relying_on_git_for_numcopies/comment_3_43d8e1513eb9947f8a503f094c03f307._comment ./doc/forum/relying_on_git_for_numcopies/comment_2_be6acbc26008a9cb54e7b8f498f2c2a2._comment ./doc/forum/relying_on_git_for_numcopies/comment_1_8ad3cccd7f66f6423341d71241ba89fc._comment ./doc/forum/relying_on_git_for_numcopies.mdwn ./doc/forum/wishlist:_do_round_robin_downloading_of_data.mdwn ./doc/forum/wishlist:_git_annex_status.mdwn ./doc/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.mdwn ./doc/forum/Problems_with_large_numbers_of_files.mdwn ./doc/forum/Can_I_store_normal_files_in_the_git-annex_git_repository__63__.mdwn ./doc/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.mdwn ./doc/forum/wishlist:_push_to_cia.vc_from_the_website__39__s_repo__44___not_your_personal_one.mdwn ./doc/forum/new_microfeatures.mdwn ./doc/backends.mdwn ./doc/bugs/__39__annex_add__39___fails_to___39__git_add__39___for_parent_relative_path.mdwn ./doc/bugs/softlink_mtime.mdwn ./doc/bugs/ordering.mdwn ./doc/bugs/dropping_files_with_a_URL_backend_fails.mdwn ./doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn ./doc/bugs/add_script-friendly_output_options.mdwn ./doc/bugs/git_annex_get_choke_when_remote_is_an_ssh_url_with_a_port.mdwn ./doc/bugs/unannex_and_uninit_do_not_work_when_git_index_is_broken.mdwn ./doc/bugs/git_annex_migrate_leaves_old_backend_versions_around.mdwn ./doc/bugs/git_annex_unused_failes_on_empty_repository.mdwn ./doc/bugs/git_annex_add_eats_files_when_filename_is_too_long.mdwn ./doc/bugs/S3_bucket_uses_the_same_key_for_encryption_and_hashing.mdwn ./doc/bugs/problem_with_upgrade_v2_-__62___v3.mdwn ./doc/bugs/git_annex_copy_--fast_does_not_copy_files.mdwn ./doc/bugs/Cabal_dependency_monadIO_missing.mdwn ./doc/bugs/dotdot_problem.mdwn ./doc/bugs/Problems_running_make_on_osx.mdwn ./doc/bugs/free_space_checking/comment_2_8a65f6d3dcf5baa3f7f2dbe1346e2615._comment ./doc/bugs/free_space_checking/comment_3_0fc6ff79a357b1619d13018ccacc7c10._comment ./doc/bugs/free_space_checking/comment_1_a868e805be43c5a7c19c41f1af8e41e6._comment ./doc/bugs/done.mdwn ./doc/bugs/git_annex_copy_-f_REMOTE_._doesn__39__t_work_as_expected.mdwn ./doc/bugs/Displayed_copy_speed_is_wrong/comment_2_8b240de1d5ae9229fa2d77d1cc15a552._comment ./doc/bugs/Displayed_copy_speed_is_wrong/comment_1_74de3091e8bfd7acd6795e61f39f07c6._comment ./doc/bugs/Build_error_on_Mac_OSX_10.6.mdwn ./doc/bugs/bare_git_repos.mdwn ./doc/bugs/fat_support.mdwn ./doc/bugs/problems_with_utf8_names.mdwn ./doc/bugs/error_with_file_names_starting_with_dash.mdwn ./doc/bugs/unhappy_without_UTF8_locale.mdwn ./doc/bugs/S3_memory_leaks.mdwn ./doc/bugs/upgrade_left_untracked_.git-annex__47____42___directories.mdwn ./doc/bugs/--git-dir_and_--work-tree_options.mdwn ./doc/bugs/Problems_running_make_on_osx/comment_9_cc283b485b3c95ba7eebc8f0c96969b3._comment ./doc/bugs/Problems_running_make_on_osx/comment_4_c52be386f79f14c8570a8f1397c68581._comment ./doc/bugs/Problems_running_make_on_osx/comment_18_64fab50d95de619eb2e8f08f90237de1._comment ./doc/bugs/Problems_running_make_on_osx/comment_16_5c2dd6002aadaab30841b77a5f5aed34._comment ./doc/bugs/Problems_running_make_on_osx/comment_10_94e4ac430140042a2d0fb5a16d86b4e5._comment ./doc/bugs/Problems_running_make_on_osx/comment_15_6b8867b8e48bf807c955779c9f8f0909._comment ./doc/bugs/Problems_running_make_on_osx/comment_11_56f1143fa191361d63b441741699e17f._comment ./doc/bugs/Problems_running_make_on_osx/comment_20_7db27d1a22666c831848bc6c06d66a84._comment ./doc/bugs/Problems_running_make_on_osx/comment_12_ec5131624d0d2285d3b6880e47033f97._comment ./doc/bugs/Problems_running_make_on_osx/comment_3_68f0f8ae953589ae26d57310b40c878d._comment ./doc/bugs/Problems_running_make_on_osx/comment_14_89a960b6706ed703b390a81a8bc4e311._comment ./doc/bugs/Problems_running_make_on_osx/comment_17_62fccb04b0e4b695312f7a3f32fb96ee._comment ./doc/bugs/Problems_running_make_on_osx/comment_19_4253988ed178054c8b6400beeed68a29._comment ./doc/bugs/Problems_running_make_on_osx/comment_6_0c46f5165ceb5a7b9ea9689c33b3a4f8._comment ./doc/bugs/Problems_running_make_on_osx/comment_1_34120e82331ace01a6a4960862d38f2d._comment ./doc/bugs/Problems_running_make_on_osx/comment_7_237a137cce58a28abcc736cbf2c420b0._comment ./doc/bugs/Problems_running_make_on_osx/comment_5_7f1330a1e541b0f3e2192e596d7f7bee._comment ./doc/bugs/Problems_running_make_on_osx/comment_2_cc53d1681d576186dbc868dd9801d551._comment ./doc/bugs/Problems_running_make_on_osx/comment_13_88ed095a448096bf8a69015a04e64df1._comment ./doc/bugs/Problems_running_make_on_osx/comment_8_efafa203addf8fa79e33e21a87fb5a2b._comment ./doc/bugs/git-annex_directory_hashing_problems_on_osx.mdwn ./doc/bugs/No_easy_way_to_re-inject_a_file_into_an_annex.mdwn ./doc/bugs/git_annex_unlock_is_not_atomic.mdwn ./doc/bugs/free_space_checking.mdwn ./doc/bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.mdwn ./doc/bugs/Displayed_copy_speed_is_wrong.mdwn ./doc/bugs/git_annex_should_use___39__git_add_-f__39___internally.mdwn ./doc/bugs/minor_bug:_errors_are_not_verbose_enough.mdwn ./doc/bugs/No_version_information_from_cli.mdwn ./doc/bugs/Error_while_adding_a_file___34__createSymbolicLink:_already_exists__34__.mdwn ./doc/bugs/tests_fail_when_there_is_no_global_.gitconfig_for_the_user.mdwn ./doc/bugs/git_annex_initremote_walks_.git-annex.mdwn ./doc/bugs/git-annex_incorrectly_parses_bare_IPv6_addresses.mdwn ./doc/bugs/conflicting_haskell_packages/comment_1_e552a6cc6d7d1882e14130edfc2d6b3b._comment ./doc/bugs/tmp_file_handling.mdwn ./doc/bugs/annex_add_in_annex.mdwn ./doc/bugs/making_annex-merge_try_a_fast-forward.mdwn ./doc/bugs/Makefile_is_missing_dependancies.mdwn ./doc/bugs/test_suite_shouldn__39__t_fail_silently.mdwn ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_4_91439d4dbbf1461e281b276eb0003691._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_6_f360f0006bc9115bc5a3e2eb9fe58abd._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_3_86d9e7244ae492bcbe62720b8c4fc4a9._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_2_cd0123392b16d89db41b45464165c247._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_1_5f60006c9bb095167d817f234a14d20b._comment ./doc/bugs/problem_with_upgrade_v2_-__62___v3/comment_5_ca33a9ca0df33f7c1b58353d7ffb943d._comment ./doc/bugs/git_rename_detection_on_file_move/comment_3_57010bcaca42089b451ad8659a1e018e._comment ./doc/bugs/git_rename_detection_on_file_move/comment_4_79d96599f757757f34d7b784e6c0e81c._comment ./doc/bugs/git_rename_detection_on_file_move/comment_5_d61f5693d947b9736b29fca1dbc7ad76._comment ./doc/bugs/git_rename_detection_on_file_move/comment_2_7101d07400ad5935f880dc00d89bf90e._comment ./doc/bugs/git_rename_detection_on_file_move/comment_1_0531dcfa833b0321a7009526efe3df33._comment ./doc/bugs/add_range_argument_to___34__git_annex_dropunused__34___.mdwn ./doc/bugs/git_rename_detection_on_file_move.mdwn ./doc/bugs/problem_commit_normal_links.mdwn ./doc/bugs/git_annex_unused_seems_to_check_for_current_path.mdwn ./doc/bugs/Makefile_is_missing_dependancies/comment_6_24119fc5d5963ce9dd669f7dcf006859._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_3_c38b6f4abc9b9ad413c3b83ca04386c3._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_8_a3555e3286cdc2bfeb9cde0ff727ba74._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_2_416f12dbd0c2b841fac8164645b81df5._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_5_0a1c52e2c96d19b9c3eb7e99b8c2434f._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_7_96fd4725df4b54e670077a18d3ac4943._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_1_5a3da5f79c8563c7a450aa29728abe7c._comment ./doc/bugs/Makefile_is_missing_dependancies/comment_4_cc13873175edf191047282700315beee._comment ./doc/bugs/touch.hsc_has_problems_on_non-linux_based_systems.mdwn ./doc/bugs/build_issue_with_latest_release_0.20110522-1-gde817ba.mdwn ./doc/bugs/weird_local_clone_confuses.mdwn ./doc/bugs/fsck_output.mdwn ./doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn ./doc/bugs/git_annex_gets_confused_about_remotes_with_dots_in_their_names.mdwn ./doc/bugs/unannex_vs_unlock_hook_confusion.mdwn ./doc/bugs/Cabal_dependency_monadIO_missing/comment_2_4f4d8e1e00a2a4f7e8a8ab082e16adac._comment ./doc/bugs/Cabal_dependency_monadIO_missing/comment_1_14be660aa57fadec0d81b32a8b52c66f._comment ./doc/bugs/conflicting_haskell_packages.mdwn ./doc/bugs/git_command_line_constructed_by_unannex_command_has_tons_of_redundant_-a_paramters.mdwn ./doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn ./doc/bugs/fat_support/comment_3_df3b943bc1081a8f3f7434ae0c8e061e._comment ./doc/bugs/fat_support/comment_4_90a8a15bedd94480945a374f9d706b86._comment ./doc/bugs/fat_support/comment_5_64bbf89de0836673224b83fdefa0407b._comment ./doc/bugs/fat_support/comment_1_04bcc4795d431e8cb32293aab29bbfe2._comment ./doc/bugs/fat_support/comment_2_bb4a97ebadb5c53809fc78431eabd7c8._comment ./doc/bugs/unannex_command_doesn__39__t_all_files.mdwn ./doc/bugs/annex_unannex__47__uninit_should_handle_copies.mdwn ./doc/bugs/git_annex_fsck_is_a_no-op_in_bare_repos.mdwn ./doc/bugs/Unfortunate_interaction_with_Calibre.mdwn ./doc/bugs/error_propigation.mdwn ./doc/bugs/scp_interrupt_to_background.mdwn ./doc/bugs/copy_fast_confusing_with_broken_locationlog.mdwn ./doc/bugs/configure_script_should_detect_uuidgen_instead_of_just_uuid.mdwn ./doc/bugs/check_for_curl_in_configure.hs.mdwn ./doc/bugs/Name_scheme_does_not_follow_git__39__s_rules.mdwn ./doc/bugs/Prevent_accidental_merges.mdwn ./doc/bugs/building_on_lenny.mdwn ./doc/bugs/encrypted_S3_stalls.mdwn ./doc/bugs/support_bare_git_repo__44___with_the_annex_directory_exposed_to_http.mdwn ./doc/bugs/WORM:_Handle_long_filenames_correctly.mdwn ./doc/logo_small.png ./doc/cheatsheet.mdwn ./doc/use_case/Bob.mdwn ./doc/use_case/Alice.mdwn ./doc/upgrades/SHA_size.mdwn ./doc/news/sharebox_a_FUSE_filesystem_for_git-annex.mdwn ./doc/news/version_3.20110902.mdwn ./doc/news/version_3.20110906.mdwn ./doc/news/LWN_article.mdwn ./doc/news/version_3.20110928.mdwn ./doc/news/version_3.20110915.mdwn ./doc/news/version_3.20110819.mdwn ./doc/git-union-merge.mdwn ./doc/special_remotes/S3.mdwn ./doc/special_remotes/web.mdwn ./doc/special_remotes/bup.mdwn ./doc/special_remotes/directory.mdwn ./doc/special_remotes/hook.mdwn ./doc/special_remotes/rsync.mdwn ./doc/users/joey.mdwn ./doc/users/fmarier.mdwn ./doc/users/chrysn.mdwn ./doc/templates/walkthrough.tmpl ./doc/templates/bare.tmpl ./doc/index.mdwn ./doc/summary.mdwn ./doc/forum.mdwn ./doc/encryption/comment_1_1afca8d7182075d46db41f6ad3dd5911._comment ./doc/transferring_data.mdwn ./doc/download.mdwn ./doc/future_proofing.mdwn ./doc/todo/auto_remotes/discussion.mdwn ./doc/todo/file_copy_progress_bar.mdwn ./doc/todo/use_cp_reflink.mdwn ./doc/todo/gitrm.mdwn ./doc/todo/exclude_files_on_a_given_remote.mdwn ./doc/todo/git-annex_unused_eats_memory.mdwn ./doc/todo/add_--exclude_option_to_git_annex_find.mdwn ./doc/todo/tahoe_lfs_for_reals/comment_2_80b9e848edfdc7be21baab7d0cef0e3a._comment ./doc/todo/tahoe_lfs_for_reals/comment_1_0a4793ce6a867638f6e510e71dd4bb44._comment ./doc/todo/object_dir_reorg_v2.mdwn ./doc/todo/S3.mdwn ./doc/todo/auto_remotes.mdwn ./doc/todo/wishlist:_support_for_more_ssh_urls_.mdwn ./doc/todo/support-non-utf8-locales.mdwn ./doc/todo/done.mdwn ./doc/todo/fsck.mdwn ./doc/todo/support_S3_multipart_uploads.mdwn ./doc/todo/wishlist:_Provide_a___34__git_annex__34___command_that_will_skip_duplicates.mdwn ./doc/todo/pushpull.mdwn ./doc/todo/smudge.mdwn ./doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment ./doc/todo/object_dir_reorg_v2/comment_3_79bdf9c51dec9f52372ce95b53233bb2._comment ./doc/todo/object_dir_reorg_v2/comment_7_42501404c82ca07147e2cce0cff59474._comment ./doc/todo/object_dir_reorg_v2/comment_5_821c382987f105da72a50e0a5ce61fdc._comment ./doc/todo/object_dir_reorg_v2/comment_1_ba03333dc76ff49eccaba375e68cb525._comment ./doc/todo/object_dir_reorg_v2/comment_2_81276ac309959dc741bc90101c213ab7._comment ./doc/todo/object_dir_reorg_v2/comment_6_8834c3a3f1258c4349d23aff8549bf35._comment ./doc/todo/object_dir_reorg_v2/comment_4_93aada9b1680fed56cc6f0f7c3aca5e5._comment ./doc/todo/union_mounting.mdwn ./doc/todo/wishlist:_swift_backend.mdwn ./doc/todo/wishlist:_swift_backend/comment_1_e6efbb35f61ee521b473a92674036788._comment ./doc/todo/wishlist:_swift_backend/comment_2_5d8c83b0485112e98367b7abaab3f4e3._comment ./doc/todo/git_annex_init_:_include_repo_description_and__47__or_UUID_in_commit_message.mdwn ./doc/todo/wishlist:___34__git_annex_add__34___multiple_processes.mdwn ./doc/todo/hidden_files.mdwn ./doc/todo/smudge/comment_1_4ea616bcdbc9e9a6fae9f2e2795c31c9._comment ./doc/todo/smudge/comment_2_e04b32caa0d2b4c577cdaf382a3ff7f6._comment ./doc/todo/network_remotes.mdwn ./doc/todo/add_a_git_backend.mdwn ./doc/todo/parallel_possibilities/comment_1_d8e34fc2bc4e5cf761574608f970d496._comment ./doc/todo/parallel_possibilities/comment_2_adb76f06a7997abe4559d3169a3181c3._comment ./doc/todo/checkout.mdwn ./doc/todo/immutable_annexed_files.mdwn ./doc/todo/wishlist:_Prevent_repeated_password_prompts_for_one_command.mdwn ./doc/todo/git-annex-shell.mdwn ./doc/todo/speed_up_fsck.mdwn ./doc/todo/tahoe_lfs_for_reals.mdwn ./doc/todo/using_url_backend.mdwn ./doc/todo/branching.mdwn ./doc/todo/rsync.mdwn ./doc/todo/backendSHA1.mdwn ./doc/todo/cache_key_info.mdwn ./doc/todo/parallel_possibilities.mdwn ./doc/todo/symlink_farming_commit_hook.mdwn ./doc/feeds.mdwn ./doc/copies.mdwn ./doc/repomap.png ./doc/special_remotes.mdwn ./doc/todo.mdwn ./doc/walkthrough/using_ssh_remotes.mdwn ./doc/walkthrough/untrusted_repositories.mdwn ./doc/walkthrough/automatically_managing_content.mdwn ./doc/walkthrough/removing_files/comment_1_cb65e7c510b75be1c51f655b058667c6._comment ./doc/walkthrough/removing_files/comment_2_64709ea4558915edd5c8ca4486965b07._comment ./doc/walkthrough/moving_file_content_between_repositories.mdwn ./doc/walkthrough/modifying_annexed_files.mdwn ./doc/walkthrough/Internet_Archive_via_S3.mdwn ./doc/walkthrough/more.mdwn ./doc/walkthrough/removing_files.mdwn ./doc/walkthrough/creating_a_repository.mdwn ./doc/walkthrough/what_to_do_when_you_lose_a_repository.mdwn ./doc/walkthrough/using_Amazon_S3.mdwn ./doc/walkthrough/adding_a_remote.mdwn ./doc/walkthrough/adding_a_remote/comment_1_0a59355bd33a796aec97173607e6adc9._comment ./doc/walkthrough/adding_a_remote/comment_2_f8cd79ef1593a8181a7f1086a87713e8._comment ./doc/walkthrough/adding_a_remote/comment_3_60691af4400521b5a8c8d75efe3b44cb._comment ./doc/walkthrough/adding_a_remote/comment_4_6f7cf5c330272c96b3abeb6612075c9d._comment ./doc/walkthrough/powerful_file_matching.mdwn ./doc/walkthrough/removing_files:_When_things_go_wrong.mdwn ./doc/walkthrough/renaming_files.mdwn ./doc/walkthrough/using_bup.mdwn ./doc/walkthrough/fsck:_when_things_go_wrong.mdwn ./doc/walkthrough/adding_files.mdwn ./doc/walkthrough/unused_data.mdwn ./doc/walkthrough/fsck:_verifying_your_data.mdwn ./doc/walkthrough/getting_file_content.mdwn ./doc/walkthrough/using_the_web.mdwn ./doc/walkthrough/recover_data_from_lost+found.mdwn ./doc/walkthrough/backups.mdwn ./doc/walkthrough/transferring_files:_When_things_go_wrong.mdwn ./doc/walkthrough/using_the_SHA1_backend.mdwn ./doc/walkthrough/migrating_data_to_a_new_backend.mdwn ./doc/GPL ./doc/logo.png ./doc/location_tracking.mdwn ./doc/design.mdwn ./doc/news.mdwn ./doc/encryption.mdwn ./doc/not.mdwn ./doc/download/comment_7_a5eebd214b135f34b18274a682211943._comment ./doc/download/comment_3_cf6044ebe99f71158034e21197228abd._comment ./doc/download/comment_5_c6b1bc40226fc2c8ba3e558150856992._comment ./doc/download/comment_6_3a52993d3553deb9a413debec9a5f92d._comment ./doc/download/comment_2_f85f72b33aedc3425f0c0c47867d02f3._comment ./doc/download/comment_8_59a976de6c7d333709b92f7cd5830850._comment ./doc/download/comment_4_10fc013865c7542c2ed9d6c0963bb391._comment ./doc/download/comment_1_fbd8b6d39e9d3c71791551358c863966._comment ./doc/contact.mdwn ./doc/trust.mdwn ./doc/bare_repositories.mdwn ./doc/distributed_version_control.mdwn ./doc/install.mdwn ./doc/git-annex-shell.mdwn ./doc/bugs.mdwn ./doc/design/encryption/comment_2_a610b3d056a059899178859a3a821ea5._comment ./doc/design/encryption/comment_3_cca186a9536cd3f6e86994631b14231c._comment ./doc/design/encryption/comment_1_4715ffafb3c4a9915bc33f2b26aaa9c1._comment ./doc/design/encryption/comment_4_8f3ba3e504b058791fc6e6f9c38154cf._comment ./doc/design/encryption.mdwn ./doc/comments.mdwn ./doc/git-annex.mdwn ./doc/internals.mdwn ./doc/users.mdwn ./doc/install/Ubuntu.mdwn ./doc/install/Debian.mdwn ./doc/install/OSX.mdwn ./doc/install/FreeBSD.mdwn ./doc/install/OSX/comment_1_0a1760bf0db1f1ba89bdb4c62032f631._comment ./doc/install/comment_3_cff163ea3e7cad926f4ed9e78b896598._comment ./doc/install/Debian/comment_2_648e3467e260cdf233acdb0b53313ce0._comment ./doc/install/Debian/comment_1_029486088d098c2d4f1099f2f0e701a9._comment ./doc/install/Fedora.mdwn ./doc/install/comment_4_82a17eee4a076c6c79fddeda347e0c9a._comment ./doc/walkthrough.mdwn ./CmdLine.hs ./UUID.hs ./Messages.hs ./Setup.hs ./GPL ./mdwn2man ./Remote.hs ./git-annex.hs ./Locations.hs ./Backend/WORM.hs ./Backend/URL.hs ./Backend/SHA.hs ./Options.hs ./git-annex-shell.hs ./test.hs ./INSTALL ./Remote/Web.hs ./Remote/S3stub.hs ./Remote/Helper/Encryptable.hs ./Remote/Helper/Special.hs ./Remote/Directory.hs ./Remote/S3real.hs ./Remote/Bup.hs ./Remote/Hook.hs ./Remote/Rsync.hs ./Remote/Git.hs ./Utility.hs ./Build/TestConfig.hs ./Upgrade.hs ./git-union-merge.hs ./Utility/Path.hs ./Utility/Matcher.hs ./Utility/Url.hs ./Utility/DataUnits.hs ./Utility/StatFS.hsc ./Utility/Conditional.hs ./Utility/Ssh.hs ./Utility/RsyncFile.hs ./Utility/CopyFile.hs ./Utility/SafeCommand.hs ./Utility/FileMode.hs ./Utility/JSONStream.hs ./Utility/Dot.hs ./Utility/Touch.hsc ./Utility/Base64.hs ./Types/Crypto.hs ./Types/UUID.hs ./Types/TrustLevel.hs ./Types/Remote.hs ./Types/BranchState.hs ./Types/Backend.hs ./Types/Key.hs ./Config.hs ./Command.hs ./.gitignore ./Backend.hs ./Content.hs ./.gitattributes ./Git.hs ./Limit.hs ./GitAnnex.hs Homepage: http://git-annex.branchable.com/ Build-type: Custom Category: Utility
git-union-merge.hs view
@@ -23,7 +23,7 @@ tmpIndex g = Git.gitDir g </> "index.git-union-merge"  setup :: Git.Repo -> IO ()-setup g = cleanup g -- idempotency+setup = cleanup -- idempotency  cleanup :: Git.Repo -> IO () cleanup g = do
test.hs view
@@ -38,12 +38,12 @@ import qualified Trust import qualified Remote import qualified RemoteLog-import qualified Content import qualified Command.DropUnused import qualified Types.Key import qualified Config import qualified Crypto import qualified Utility.Path+import qualified Utility.FileMode  -- for quickcheck instance Arbitrary Types.Key.Key where@@ -389,7 +389,7 @@  		corrupt f = do 			git_annex "get" ["-q", f] @? "get of file failed"-			Content.allowWrite f+			Utility.FileMode.allowWrite f 			writeFile f (changedcontent f) 			r <- git_annex "fsck" ["-q"] 			not r @? "fsck failed to fail with corrupted file content"@@ -452,8 +452,14 @@ 	git_annex "get" ["-q", sha1annexedfile] @? "get of file failed" 	checkunused [] 	boolSystem "git" [Params "rm -q", File annexedfile] @? "git rm failed"+	checkunused []+	boolSystem "git" [Params "commit -m foo"] @? "git commit failed"+	checkunused []+	-- unused checks origin/master; once it's gone it is really unused+	boolSystem "git" [Params "remote rm origin"] @? "git remote rm origin failed" 	checkunused [annexedfilekey] 	boolSystem "git" [Params "rm -q", File sha1annexedfile] @? "git rm failed"+	boolSystem "git" [Params "commit -m foo"] @? "git commit failed" 	checkunused [annexedfilekey, sha1annexedfilekey]  	-- good opportunity to test dropkey also@@ -558,7 +564,7 @@ 		-- removed via directory permissions; undo 		recurseDir SystemFS dir >>= 			filterM doesDirectoryExist >>=-			mapM_ Content.allowWrite+			mapM_ Utility.FileMode.allowWrite 		removeDirectoryRecursive dir 	 checklink :: FilePath -> Assertion