packages feed

git-annex 4.20130501.1 → 4.20130516

raw patch · 447 files changed

+7924/−30128 lines, 447 filesdep +unix-compatbinary-added

Dependencies added: unix-compat

This diff is very large; some files are shown as “too large to diff”. Download the raw patch for the complete diff.

Files

Annex.hs view
@@ -103,7 +103,7 @@ 	, auto :: Bool 	, branchstate :: BranchState 	, repoqueue :: Maybe Git.Queue.Queue-	, catfilehandle :: Maybe CatFileHandle+	, catfilehandles :: M.Map FilePath CatFileHandle 	, checkattrhandle :: Maybe CheckAttrHandle 	, forcebackend :: Maybe String 	, limit :: Matcher (FileInfo -> Annex Bool)@@ -133,7 +133,7 @@ 	, auto = False 	, branchstate = startBranchState 	, repoqueue = Nothing-	, catfilehandle = Nothing+	, catfilehandles = M.empty 	, checkattrhandle = Nothing 	, forcebackend = Nothing 	, limit = Left []
Annex/Branch.hs view
@@ -24,7 +24,6 @@ ) where  import qualified Data.ByteString.Lazy.Char8 as L-import System.Posix.Env  import Common.Annex import Annex.BranchState@@ -41,6 +40,7 @@ import Annex.CatFile import Annex.Perms import qualified Annex+import Utility.Env  {- Name of the branch that is used to store git-annex's information. -} name :: Git.Ref@@ -288,12 +288,14 @@ 	f <- fromRepo gitAnnexIndex 	g <- gitRepo #ifdef __ANDROID__-	{- Work around for weird getEnvironment breakage on Android. See+	{- This should not be necessary on Android, but there is some+	 - weird getEnvironment breakage. See 	 - https://github.com/neurocyte/ghc-android/issues/7-	 - Instead, use getEnv to get some key environment variables that+	 - Use getEnv to get some key environment variables that 	 - git expects to have. -} 	let keyenv = words "USER PATH GIT_EXEC_PATH HOSTNAME HOME"-	let getEnvPair k = maybe Nothing (\v -> Just (k, v)) <$> getEnv k+	let getEnvPair k = maybe Nothing (\v -> Just (k, v)) <$> +		catchMaybeIO (getEnv k) 	e <- liftIO $ catMaybes <$> forM keyenv getEnvPair #else 	e <- liftIO getEnvironment
Annex/CatFile.hs view
@@ -1,6 +1,6 @@ {- git cat-file interface, with handle automatically stored in the Annex monad  -- - Copyright 2011 Joey Hess <joey@kitenet.net>+ - Copyright 2011-2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -}@@ -15,12 +15,14 @@ ) where  import qualified Data.ByteString.Lazy as L+import qualified Data.Map as M  import Common.Annex import qualified Git import qualified Git.CatFile import qualified Annex import Git.Types+import Git.FilePath  catFile :: Git.Branch -> FilePath -> Annex L.ByteString catFile branch file = do@@ -37,18 +39,25 @@ 	h <- catFileHandle 	liftIO $ Git.CatFile.catObjectDetails h ref +{- There can be multiple index files, and a different cat-file is needed+ - for each. This is selected by setting GIT_INDEX_FILE in the gitEnv. -} catFileHandle :: Annex Git.CatFile.CatFileHandle-catFileHandle = maybe startup return =<< Annex.getState Annex.catfilehandle-  where-	startup = do-		h <- inRepo Git.CatFile.catFileStart-		Annex.changeState $ \s -> s { Annex.catfilehandle = Just h }-		return h+catFileHandle = do+	m <- Annex.getState Annex.catfilehandles+	indexfile <- fromMaybe "" . maybe Nothing (lookup "GIT_INDEX_FILE")+		<$> fromRepo gitEnv+	case M.lookup indexfile m of+		Just h -> return h+		Nothing -> do+			h <- inRepo Git.CatFile.catFileStart+			let m' = M.insert indexfile h m+			Annex.changeState $ \s -> s { Annex.catfilehandles = m' }+			return h  {- From the Sha or Ref of a symlink back to the key. -} catKey :: Ref -> Annex (Maybe Key) catKey ref = do-	l <- encodeW8 . L.unpack  <$> catObject ref+	l <- fromInternalGitPath . encodeW8 . L.unpack  <$> catObject ref 	return $ if isLinkToAnnex l 		then fileKey $ takeFileName l 		else Nothing@@ -56,7 +65,7 @@ {- From a file in git back to the key.  -  - Prefixing the file with ./ makes this work even if in a subdirectory- - of a repo. For some reason, HEAD is sometimes needed.+ - of a repo.  -} catKeyFile :: FilePath -> Annex (Maybe Key)-catKeyFile f = catKey $ Ref $ "HEAD:./" ++ f+catKeyFile f = catKey $ Ref $ ":./" ++ f
Annex/Content.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Annex.Content ( 	inAnnex, 	inAnnexSafe,@@ -31,6 +33,7 @@ ) where  import System.IO.Unsafe (unsafeInterleaveIO)+import System.PosixCompat.Files  import Common.Annex import Logs.Location@@ -84,14 +87,22 @@   where 	go f = liftIO $ openforlock f >>= check 	openforlock f = catchMaybeIO $+#ifndef __WINDOWS__ 		openFd f ReadOnly Nothing defaultFileFlags+#else+		return ()+#endif 	check Nothing = return is_missing 	check (Just h) = do+#ifndef __WINDOWS__ 		v <- getLock h (ReadLock, AbsoluteSeek, 0, 0) 		closeFd h 		return $ case v of 			Just _ -> is_locked 			Nothing -> is_unlocked+#else+		return is_unlocked+#endif 	is_locked = Nothing 	is_unlocked = Just True 	is_missing = Just False@@ -100,6 +111,9 @@  - it. (If the content is not present, no locking is done.) -} lockContent :: Key -> Annex a -> Annex a lockContent key a = do+#ifdef __WINDOWS__+	a+#else 	file <- calcRepo $ gitAnnexLocation key 	bracketIO (openforlock file >>= lock) unlock a   where@@ -121,6 +135,7 @@ 			Right _ -> return $ Just fd 	unlock Nothing = noop 	unlock (Just l) = closeFd l+#endif  {- Runs an action, passing it a temporary filename to get,  - and if the action succeeds, moves the temp file into @@ -470,9 +485,8 @@ 			liftIO $ copyFileExternal s file 		) -{- Blocks writing to an annexed file. The file is made unwritable- - to avoid accidental edits. core.sharedRepository may change- - who can read it. -}+{- Blocks writing to an annexed file, and modifies file permissions to+ - allow reading it, per core.sharedRepository setting. -} freezeContent :: FilePath -> Annex () freezeContent file = unlessM crippledFileSystem $ 	liftIO . go =<< fromRepo getSharedRepository@@ -483,7 +497,9 @@ 	go AllShared = modifyFileMode file $ 		removeModes writeModes . 		addModes readModes-	go _ = preventWrite file+	go _ = modifyFileMode file $+		removeModes writeModes .+		addModes [ownerReadMode]  {- Allows writing to an annexed file that freezeContent was called on  - before. -}
Annex/Content/Direct.hs view
@@ -29,7 +29,7 @@ import qualified Annex import Annex.Perms import qualified Git-import Utility.TempFile+import Utility.Tmp import Logs.Location import Utility.InodeCache @@ -110,7 +110,7 @@ recordedInodeCache :: Key -> Annex [InodeCache] recordedInodeCache key = withInodeCacheFile key $ \f -> 	liftIO $ catchDefaultIO [] $-		mapMaybe readInodeCache . lines <$> readFile f+		mapMaybe readInodeCache . lines <$> readFileStrict f  {- Caches an inode for a file.  -
Annex/Direct.hs view
@@ -182,25 +182,28 @@ toDirectGen :: Key -> FilePath -> Annex (Maybe (Annex ())) toDirectGen k f = do 	loc <- calcRepo $ gitAnnexLocation k-	absf <- liftIO $ absPath f-	locs <- filter (/= absf) <$> addAssociatedFile k f-	case locs of-		[] -> ifM (liftIO $ doesFileExist loc)-			( return $ Just $ do-				{- Move content from annex to direct file. -}-				thawContentDir loc-				updateInodeCache k loc-				thawContent loc-				replaceFile f $ liftIO . moveFile loc-			, return Nothing-			)-		(loc':_) -> ifM (isNothing <$> getAnnexLinkTarget loc')-			{- Another direct file has the content; copy it. -}-			( return $ Just $+	ifM (liftIO $ doesFileExist loc)+		( fromindirect loc+		, fromdirect+		)+  where+  	fromindirect loc = return $ Just $ do+		{- Move content from annex to direct file. -}+		thawContentDir loc+		updateInodeCache k loc+		addAssociatedFile k f+		thawContent loc+		replaceFile f $ liftIO . moveFile loc+	fromdirect = do+		{- Copy content from another direct file. -}+		absf <- liftIO $ absPath f+		locs <- filterM (\loc -> isNothing <$> getAnnexLinkTarget loc) =<<+			(filter (/= absf) <$> addAssociatedFile k f)+		case locs of+			(loc:_) -> return $ Just $ 				replaceFile f $-					liftIO . void . copyFileExternal loc'-			, return Nothing-			)+					liftIO . void . copyFileExternal loc+			_ -> return Nothing  {- Removes a direct mode file, while retaining its content. -} removeDirect :: Key -> FilePath -> Annex ()
Annex/Environment.hs view
@@ -1,18 +1,19 @@ {- git-annex environment  -- - Copyright 2012 Joey Hess <joey@kitenet.net>+ - Copyright 2012, 2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Annex.Environment where  import Common.Annex+import Utility.Env import Utility.UserInfo import qualified Git.Config -import System.Posix.Env- {- Checks that the system's environment allows git to function.  - Git requires a GECOS username, or suitable git configuration, or  - environment variables. -}@@ -23,9 +24,21 @@ 		liftIO checkEnvironmentIO  checkEnvironmentIO :: IO ()-checkEnvironmentIO = do+checkEnvironmentIO =+#ifdef __WINDOWS__+	noop+#else 	whenM (null <$> myUserGecos) $ do 		username <- myUserName-		-- existing environment is not overwritten-		setEnv "GIT_AUTHOR_NAME" username False-		setEnv "GIT_COMMITTER_NAME" username False+		ensureEnv "GIT_AUTHOR_NAME" username+		ensureEnv "GIT_COMMITTER_NAME" username+  where+#ifndef __ANDROID__+  	-- existing environment is not overwritten+	ensureEnv var val = void $ setEnv var val False+#else+	-- Environment setting is broken on Android, so this is dealt with+	-- in runshell instead.+	ensureEnv _ _ = noop+#endif+#endif
Annex/Journal.hs view
@@ -9,6 +9,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Annex.Journal where  import System.IO.Binary@@ -64,26 +66,38 @@ journalFile :: FilePath -> Git.Repo -> FilePath journalFile file repo = gitAnnexJournalDir repo </> concatMap mangle file   where-	mangle '/' = "_"-	mangle '_' = "__"-	mangle c = [c]+	mangle c+		| c == pathSeparator = "_"+		| c == '_' = "__"+		| otherwise = [c]  {- Converts a journal file (relative to the journal dir) back to the  - filename on the branch. -} fileJournal :: FilePath -> FilePath-fileJournal = replace "//" "_" . replace "_" "/"+fileJournal = replace [pathSeparator, pathSeparator] "_" .+	replace "_" [pathSeparator]  {- Runs an action that modifies the journal, using locking to avoid  - contention with other git-annex processes. -} lockJournal :: Annex a -> Annex a lockJournal a = do-	file <- fromRepo gitAnnexJournalLock-	createAnnexDirectory $ takeDirectory file+	lockfile <- fromRepo gitAnnexJournalLock+	createAnnexDirectory $ takeDirectory lockfile 	mode <- annexFileMode-	bracketIO (lock file mode) unlock a+	bracketIO (lock lockfile mode) unlock a   where-	lock file mode = do-		l <- noUmask mode $ createFile file mode+	lock lockfile mode = do+#ifndef __WINDOWS__+		l <- noUmask mode $ createFile lockfile mode 		waitToSetLock l (WriteLock, AbsoluteSeek, 0, 0) 		return l+#else+		writeFile lockfile ""+		return lockfile+#endif+#ifndef __WINDOWS__ 	unlock = closeFd+#else+	unlock = removeFile+#endif+
Annex/Link.hs view
@@ -18,6 +18,7 @@ import qualified Git.UpdateIndex import qualified Annex.Queue import Git.Types+import Git.FilePath  type LinkTarget = String @@ -27,25 +28,27 @@  {- Gets the link target of a symlink.  -- - On a filesystem that does not support symlinks, get the link- - target by looking inside the file. (Only return at first 8k of the file,- - more than enough for any symlink target.)+ - On a filesystem that does not support symlinks, fall back to getting the+ - link target by looking inside the file. (Only return at first 8k of the+ - file, more than enough for any symlink target.)  -  - Returns Nothing if the file is not a symlink, or not a link to annex  - content.  -} getAnnexLinkTarget :: FilePath -> Annex (Maybe LinkTarget)-getAnnexLinkTarget file = do-	v <- ifM (coreSymlinks <$> Annex.getGitConfig)-		( liftIO $ catchMaybeIO $ readSymbolicLink file-		, liftIO $ catchMaybeIO $ readfilestart file-		)-	case v of-		Nothing -> return Nothing-		Just l-			| isLinkToAnnex l -> return v-			| otherwise -> return Nothing+getAnnexLinkTarget file =+	check readSymbolicLink $+		check readfilestart $+			return Nothing   where+	check getlinktarget fallback = do+		v <- liftIO $ catchMaybeIO $ getlinktarget file+		case v of+			Just l+				| isLinkToAnnex (fromInternalGitPath l) -> return v+				| otherwise -> return Nothing+			Nothing -> fallback+ 	readfilestart f = do 		h <- openFile f ReadMode 		fileEncoding h@@ -74,7 +77,8 @@  {- Injects a symlink target into git, returning its Sha. -} hashSymlink :: LinkTarget -> Annex Sha-hashSymlink linktarget = inRepo $ Git.HashObject.hashObject BlobObject linktarget+hashSymlink linktarget = inRepo $ Git.HashObject.hashObject BlobObject $ +	toInternalGitPath linktarget  {- Stages a symlink to the annex, using a Sha of its target. -} stageSymlink :: FilePath -> Sha -> Annex ()
Annex/LockPool.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Annex.LockPool where  import qualified Data.Map as M@@ -20,17 +22,24 @@   where 	go (Just _) = noop -- already locked 	go Nothing = do+#ifndef __WINDOWS__ 		mode <- annexFileMode 		fd <- liftIO $ noUmask mode $ 			openFd file ReadOnly (Just mode) defaultFileFlags 		liftIO $ waitToSetLock fd (ReadLock, AbsoluteSeek, 0, 0)+#else+		liftIO $ writeFile file ""+		let fd = 0+#endif 		changePool $ M.insert file fd  unlockFile :: FilePath -> Annex () unlockFile file = maybe noop go =<< fromPool file   where 	go fd = do+#ifndef __WINDOWS__ 		liftIO $ closeFd fd+#endif 		changePool $ M.delete file  getPool :: Annex (M.Map FilePath Fd)
Annex/Ssh.hs view
@@ -10,11 +10,11 @@ module Annex.Ssh ( 	sshCachingOptions, 	sshCleanup,+	sshCacheDir, 	sshReadPort, ) where  import qualified Data.Map as M-import System.Posix.Env  import Common.Annex import Annex.LockPool@@ -22,6 +22,7 @@ import qualified Build.SysConfig as SysConfig import qualified Annex import Config+import Utility.Env  {- Generates parameters to ssh to a given host (or user@host) on a given  - port, with connection caching. -}@@ -95,6 +96,7 @@ 			liftIO (catchDefaultIO [] $ dirContents dir) 		forM_ sockets cleanup 	cleanup socketfile = do+#ifndef __WINDOWS__ 		-- Drop any shared lock we have, and take an 		-- exclusive lock, without blocking. If the lock 		-- succeeds, nothing is using this ssh, and it can@@ -110,6 +112,9 @@ 			Left _ -> noop 			Right _ -> stopssh socketfile 		liftIO $ closeFd fd+#else+		stopssh socketfile+#endif 	stopssh socketfile = do 		let (host, port) = socket2hostport socketfile 		(_, params) <- sshInfo (host, port)
Annex/Version.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Annex.Version where  import Common.Annex@@ -23,7 +25,11 @@ supportedVersions = [defaultVersion, directModeVersion]  upgradableVersions :: [Version]+#ifndef __WINDOWS__ upgradableVersions = ["0", "1", "2"]+#else+upgradableVersions = ["2"]+#endif  versionField :: ConfigKey versionField = annexConfig "version"
Assistant.hs view
@@ -177,15 +177,16 @@ 	logfd <- liftIO $ openLog logfile 	if foreground 		then do-			liftIO $ debugM desc $ "logging to " ++ logfile-			liftIO $ Utility.Daemon.lockPidFile pidfile 			origout <- liftIO $ catchMaybeIO $  				fdToHandle =<< dup stdOutput 			origerr <- liftIO $ catchMaybeIO $  				fdToHandle =<< dup stdError-			liftIO $ Utility.LogFile.redirLog logfd-			showStart "." desc-			start id $ +			let undaemonize a = do+				debugM desc $ "logging to " ++ logfile+				Utility.Daemon.lockPidFile pidfile+				Utility.LogFile.redirLog logfd+				a+			start undaemonize $  				case startbrowser of 					Nothing -> Nothing 					Just a -> Just $ a origout origerr
Assistant/DaemonStatus.hs view
@@ -9,7 +9,7 @@  import Assistant.Common import Assistant.Alert.Utility-import Utility.TempFile+import Utility.Tmp import Assistant.Types.NetMessager import Utility.NotificationBroadcaster import Logs.Transfer
Assistant/Install.hs view
@@ -16,7 +16,8 @@ import Config.Files import Utility.FileMode import Utility.Shell-import Utility.TempFile+import Utility.Tmp+import Utility.Env  #ifdef darwin_HOST_OS import Utility.OSX@@ -24,8 +25,6 @@ import Utility.FreeDesktop #endif -import System.Posix.Env- standaloneAppBase :: IO (Maybe FilePath) standaloneAppBase = getEnv "GIT_ANNEX_APP_BASE" @@ -63,7 +62,7 @@ 		let runshell var = "exec " ++ base </> "runshell" ++ 			" git-annex-shell -c \"" ++ var ++ "\"" 		let content = unlines-			[ shebang+			[ shebang_local 			, "set -e" 			, "if [ \"x$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then" 			,   runshell "$SSH_ORIGINAL_COMMAND"
Assistant/Install/AutoStart.o view

binary file changed (5088 → 3364 bytes)

+ Assistant/Install/Menu.o view

binary file changed (absent → 3216 bytes)

Assistant/Ssh.hs view
@@ -8,7 +8,7 @@ module Assistant.Ssh where  import Common.Annex-import Utility.TempFile+import Utility.Tmp import Utility.UserInfo import Utility.Shell import Git.Remote@@ -125,7 +125,7 @@ 	echoval v = "echo " ++ shellEscape v 	wrapper = "~/.ssh/git-annex-shell" 	script =-		[ shebang+		[ shebang_portable 		, "set -e" 		, "if [ \"x$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then" 		,   runshell "$SSH_ORIGINAL_COMMAND"@@ -146,7 +146,7 @@  {- Generates a ssh key pair. -} genSshKeyPair :: IO SshKeyPair-genSshKeyPair = withTempDir "git-annex-keygen" $ \dir -> do+genSshKeyPair = withTmpDir "git-annex-keygen" $ \dir -> do 	ok <- boolSystem "ssh-keygen" 		[ Param "-P", Param "" -- no password 		, Param "-f", File $ dir </> "key"
Assistant/Threads/WebApp.hs view
@@ -33,7 +33,7 @@ import Assistant.WebApp.OtherRepos import Assistant.Types.ThreadedMonad import Utility.WebApp-import Utility.TempFile+import Utility.Tmp import Utility.FileMode import Git @@ -74,7 +74,7 @@ 		, return app 		) 	runWebApp listenhost app' $ \addr -> if noannex-		then withTempFile "webapp.html" $ \tmpfile _ ->+		then withTmpFile "webapp.html" $ \tmpfile _ -> 			go addr webapp tmpfile Nothing 		else do 			let st = threadState assistantdata
Assistant/WebApp/Configurators/Delete.hs view
@@ -26,6 +26,7 @@ import System.IO.HVFS (SystemFS(..)) import qualified Data.Text as T import qualified Data.Map as M+import System.Path  notCurrentRepo :: UUID -> Handler RepHtml -> Handler RepHtml notCurrentRepo uuid a = go =<< liftAnnex (Remote.remoteFromUUID uuid)
Assistant/WebApp/Configurators/Local.hs view
@@ -38,7 +38,6 @@ import qualified Data.Text as T import qualified Data.Map as M import Data.Char-import System.Posix.Directory  data RepositoryPath = RepositoryPath Text 	deriving Show@@ -138,13 +137,22 @@ getFirstRepositoryR = postFirstRepositoryR postFirstRepositoryR :: Handler RepHtml postFirstRepositoryR = page "Getting started" (Just Configuration) $ do+#ifdef __ANDROID__+	androidspecial <- liftIO $ doesDirectoryExist "/sdcard/DCIM"+	let path = "/sdcard/annex"+#else+	let androidspecial = False 	path <- liftIO . defaultRepositoryPath =<< lift inFirstRun+#endif 	((res, form), enctype) <- lift $ runFormPost $ newRepositoryForm path 	case res of 		FormSuccess (RepositoryPath p) -> lift $-			startFullAssistant $ T.unpack p+			startFullAssistant (T.unpack p) ClientGroup 		_ -> $(widgetFile "configurators/newrepository/first") +getAndroidCameraRepositoryR :: Handler ()+getAndroidCameraRepositoryR = startFullAssistant "/sdcard/DCIM" SourceGroup+ {- Adding a new local repository, which may be entirely separate, or may  - be connected to the current repository. -} getNewRepositoryR :: Handler RepHtml@@ -291,6 +299,10 @@ 		| dir == "/tmp" = False 		| dir == "/run/shm" = False 		| dir == "/run/lock" = False+#ifdef __ANDROID__+		| dir == "/mnt/sdcard" = False+		| dir == "/sdcard" = False+#endif 		| otherwise = True #else driveList = return []@@ -299,16 +311,15 @@ {- Bootstraps from first run mode to a fully running assistant in a  - repository, by running the postFirstRun callback, which returns the  - url to the new webapp. -}-startFullAssistant :: FilePath -> Handler ()-startFullAssistant path = do+startFullAssistant :: FilePath -> StandardGroup -> Handler ()+startFullAssistant path repogroup = do 	webapp <- getYesod 	url <- liftIO $ do 		isnew <- makeRepo path False 		u <- initRepo isnew True path Nothing-		inDir path $ -			setStandardGroup u ClientGroup+		inDir path $ setStandardGroup u repogroup 		addAutoStartFile path-		changeWorkingDirectory path+		setCurrentDirectory path 		fromJust $ postFirstRun webapp 	redirect $ T.pack url 
Assistant/WebApp/Configurators/Ssh.hs view
@@ -6,6 +6,7 @@  -}  {-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings, RankNTypes #-}+{-# LANGUAGE CPP #-}  module Assistant.WebApp.Configurators.Ssh where @@ -64,9 +65,17 @@ 	<*> aopt textField "Directory" (Just $ Just $ fromMaybe (T.pack gitAnnexAssistantDefaultDir) $ inputDirectory def) 	<*> areq intField "Port" (Just $ inputPort def)   where+	check_username = checkBool (all (`notElem` "/:@ \t") . T.unpack)+		bad_username textField++	bad_username = "bad user name" :: Text+#ifndef __ANDROID__+	bad_hostname = "cannot resolve host name" :: Text+ 	check_hostname = checkM (liftIO . checkdns) hostnamefield 	checkdns t = do 		let h = T.unpack t+		let canonname = Just $ defaultHints { addrFlags = [AI_CANONNAME] } 		r <- catchMaybeIO $ getAddrInfo canonname (Just h) Nothing 		return $ case catMaybes . map addrCanonName <$> r of 			-- canonicalize input hostname if it had no dot@@ -75,13 +84,10 @@ 				| otherwise -> Right $ T.pack fullname 			Just [] -> Right t 			Nothing -> Left bad_hostname-	canonname = Just $ defaultHints { addrFlags = [AI_CANONNAME] }--	check_username = checkBool (all (`notElem` "/:@ \t") . T.unpack)-		bad_username textField-		-	bad_hostname = "cannot resolve host name" :: Text-	bad_username = "bad user name" :: Text+#else+	-- getAddrInfo currently broken on Android+	check_hostname = hostnamefield -- unchecked+#endif  data ServerStatus 	= UntestedServer
Assistant/WebApp/Configurators/WebDAV.hs view
@@ -135,7 +135,6 @@ 	setup r 	liftAssistant $ syncRemote r 	redirect $ EditNewCloudRepositoryR $ Remote.uuid r-#endif  {- Only returns creds previously used for the same hostname. -} previouslyUsedWebDAVCreds :: String -> Annex (Maybe CredPair)@@ -145,6 +144,7 @@ 	samehost url = case urlHost =<< WebDAV.configUrl url of 		Nothing -> False 		Just h -> h == hostname+#endif  urlHost :: String -> Maybe String urlHost url = uriRegName <$> (uriAuthority =<< parseURI url)
Assistant/WebApp/routes view
@@ -21,8 +21,9 @@ /config/xmpp/needcloudrepo/#UUID NeedCloudRepoR GET  /config/addrepository AddRepositoryR GET-/config/repository/new/first FirstRepositoryR GET POST /config/repository/new NewRepositoryR GET POST+/config/repository/new/first FirstRepositoryR GET POST+/config/repository/new/androidcamera AndroidCameraRepositoryR GET /config/repository/switcher RepositorySwitcherR GET /config/repository/switchto/#FilePath SwitchToRepositoryR GET /config/repository/combine/#FilePathAndUUID CombineRepositoryR GET
Assistant/XMPP/Git.hs view
@@ -32,10 +32,10 @@ import Remote.List import Utility.FileMode import Utility.Shell+import Utility.Env  import Network.Protocol.XMPP import qualified Data.Text as T-import System.Posix.Env import System.Posix.Types import System.Process (std_in, std_out, std_err) import Control.Concurrent@@ -92,8 +92,7 @@ 	(readpush, Fd outf) <- liftIO createPipe 	(Fd controlf, writecontrol) <- liftIO createPipe -	tmp <- liftAnnex $ fromRepo gitAnnexTmpDir-	let tmpdir = tmp </> "xmppgit"+	tmpdir <- gettmpdir 	installwrapper tmpdir  	env <- liftIO getEnvironment@@ -156,10 +155,21 @@ 		let wrapper = tmpdir </> "git-remote-xmpp" 		program <- readProgramFile 		writeFile wrapper $ unlines-			[ shebang+			[ shebang_local 			, "exec " ++ program ++ " xmppgit" 			] 		modifyFileMode wrapper $ addModes executeModes+	{- Use GIT_ANNEX_TMP_DIR if set, since that may be a better temp+	 - dir (ie, not on a crippled filesystem where we can't make+	 - the wrapper executable). -}+	gettmpdir = do+		v <- liftIO $ getEnv "GIT_ANNEX_TMP_DIR"+		case v of+			Nothing -> do+				tmp <- liftAnnex $ fromRepo gitAnnexTmpDir+				return $ tmp </> "xmppgit"+			Just d -> return $ d </> "xmppgit"+				  type EnvVar = String 
Backend/SHA.hs view
@@ -12,11 +12,11 @@ import Types.Backend import Types.Key import Types.KeySource+import Utility.ExternalSHA  import qualified Build.SysConfig as SysConfig import Data.Digest.Pure.SHA import qualified Data.ByteString.Lazy as L-import System.Process import Data.Char  type SHASize = Int@@ -55,29 +55,11 @@ shaN :: SHASize -> FilePath -> Integer -> Annex String shaN shasize file filesize = do 	showAction "checksum"-	case shaCommand shasize filesize of-		Left sha -> liftIO $ sha <$> L.readFile file-		Right command -> liftIO $ parse command . lines <$>-			readsha command (toCommand [File file])-  where-	parse command [] = bad command-	parse command (l:_)-		| null sha = bad command-		-- sha is prefixed with \ when filename contains certian chars-		| "\\" `isPrefixOf` sha = drop 1 sha-		| otherwise = sha-	  where-		sha = fst $ separate (== ' ') l-	bad command = error $ command ++ " parse error"-	{- sha commands output the filename, so need to set fileEncoding -}-	readsha command args =-		withHandle StdoutHandle createProcessSuccess p $ \h -> do-			fileEncoding h-			output  <- hGetContentsStrict h-			hClose h-			return output-	  where-		p = (proc command args) { std_out = CreatePipe }+	liftIO $ case shaCommand shasize filesize of+		Left sha -> sha <$> L.readFile file+		Right command ->+			either error return +				=<< externalSHA command shasize file  shaCommand :: SHASize -> Integer -> Either (L.ByteString -> String) String shaCommand shasize filesize
+ Build/BundledPrograms.hs view
@@ -0,0 +1,46 @@+{- Bundled programs+ -+ - Copyright 2013 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++{-# LANGUAGE CPP #-}++module Build.BundledPrograms where++import Data.Maybe++import Build.SysConfig as SysConfig++{- Programs that git-annex uses, to include in the bundle.+ -+ - These may be just the command name, or the full path to it. -}+bundledPrograms :: [FilePath]+bundledPrograms = catMaybes+	[ Nothing+#ifndef mingw32_HOST_OS+	-- git is not included in the windows bundle+	, Just "git"+#endif+	, Just "cp"+	, Just "xargs"+	, Just "rsync"+	, Just "ssh"+#ifndef mingw32_HOST_OS+	, Just "sh"+#endif+	, ifset SysConfig.gpg "gpg"+	, ifset SysConfig.curl "curl"+	, ifset SysConfig.wget "wget"+	, ifset SysConfig.bup "bup"+	, SysConfig.lsof+	, SysConfig.sha1+	, SysConfig.sha256+	, SysConfig.sha512+	, SysConfig.sha224+	, SysConfig.sha384+	]+  where+	ifset True s = Just s+	ifset False _ = Nothing
Build/Configure.hs view
@@ -9,11 +9,13 @@ import System.FilePath import System.Environment import Data.Maybe+import Control.Monad.IfElse  import Build.TestConfig import Utility.SafeCommand import Utility.Monad import Utility.Exception+import Utility.ExternalSHA  tests :: [TestCase] tests =@@ -45,17 +47,24 @@  - On some systems, shaN is used instead, but on other  - systems, it might be "hashalot", which does not produce  - usable checksums. Only accept programs that produce- - known-good hashes. -}+ - known-good hashes when run on files. -} shaTestCases :: [(Int, String)] -> [TestCase] shaTestCases l = map make l   where-	make (n, knowngood) = TestCase key $ maybeSelectCmd key $ -		zip (shacmds n) (repeat check)+	make (n, knowngood) = TestCase key $ +		Config key . MaybeStringConfig <$> search (shacmds n) 	  where 		key = "sha" ++ show n-		check = "</dev/null 2>/dev/null | grep -q '" ++ knowngood ++ "'"+	  	search [] = return Nothing+		search (c:cmds) = do+			sha <- externalSHA c n "/dev/null"+			if sha == Right knowngood+				then return $ Just c+				else search cmds+	 	shacmds n = concatMap (\x -> [x, 'g':x, osxpath </> x]) $ 		map (\x -> "sha" ++ show n ++ x) ["sum", ""]+ 	{- Max OSX sometimes puts GNU tools outside PATH, so look in 	 - the location it uses, and remember where to run them 	 - from. -}@@ -73,19 +82,19 @@ 	cmd = "cp " ++ option 	cmdline = cmd ++ " " ++ testFile ++ " " ++ testFile ++ ".new" +isReleaseBuild :: IO Bool+isReleaseBuild = isJust <$> catchMaybeIO (getEnv "RELEASE_BUILD")+ {- Version is usually based on the major version from the changelog,   - plus the date of the last commit, plus the git rev of that commit.  - This works for autobuilds, ad-hoc builds, etc.  -- - For official builds, VERSION_FROM_CHANGELOG makes it use just the most- - recent version from the changelog.- -  - If git or a git repo is not available, or something goes wrong,- - just use the version from the changelog. -}+ - or this is a release build, just use the version from the changelog. -} getVersion :: Test getVersion = do 	changelogversion <- getChangelogVersion-	version <- ifM (isJust <$> catchMaybeIO (getEnv "VERSION_FROM_CHANGELOG"))+	version <- ifM (isReleaseBuild) 		( return changelogversion 		, catchDefaultIO changelogversion $ do 			let major = takeWhile (/= '.') changelogversion@@ -101,8 +110,8 @@ 	 getChangelogVersion :: IO String getChangelogVersion = do-	changelog <- readFile "CHANGELOG"-	let verline = head $ lines changelog+	changelog <- readFile "debian/changelog"+	let verline = takeWhile (/= '\n') changelog 	return $ middle (words verline !! 1)   where 	middle = drop 1 . init@@ -120,7 +129,7 @@ {- Set up cabal file with version. -} cabalSetup :: IO () cabalSetup = do-	version <- getChangelogVersion+	version <- takeWhile (/= '~') <$> getChangelogVersion 	cabal <- readFile cabalfile 	writeFile tmpcabalfile $ unlines $  		map (setfield "Version" version) $@@ -152,7 +161,8 @@ 		then writeSysConfig $ androidConfig config 		else writeSysConfig config 	cleanup-	cabalSetup+	whenM (isReleaseBuild) $+		cabalSetup  {- Hard codes some settings to cross-compile for Android. -} androidConfig :: [Config] -> [Config]
Build/Configure.o view

binary file changed (87376 → 52208 bytes)

Build/DesktopFile.hs view
@@ -22,18 +22,24 @@ import Control.Applicative import System.Directory import System.Environment+#ifndef mingw32_HOST_OS import System.Posix.User import System.Posix.Files+#endif import System.FilePath import Data.Maybe  systemwideInstall :: IO Bool+#ifndef mingw32_HOST_OS  systemwideInstall = isroot <||> destdirset   where 	isroot = do 		uid <- fromIntegral <$> getRealUserID 		return $ uid == (0 :: Int) 	destdirset = isJust <$> catchMaybeIO (getEnv "DESTDIR")+#else+systemwideInstall = return False+#endif  inDestDir :: FilePath -> IO FilePath inDestDir f = do
+ Build/DesktopFile.o view

binary file changed (absent → 13604 bytes)

Build/EvilSplicer.hs view
@@ -299,6 +299,7 @@ 	. case_layout 	. case_layout_multiline 	. yesod_url_render_hack+	. text_builder_hack 	. nested_instances  	. collapse_multiline_strings 	. remove_package_version@@ -514,6 +515,10 @@  	token :: Parser String 	token = many1 $ satisfy isAlphaNum <|> oneOf "_"++{- Use exported symbol. -}+text_builder_hack :: String -> String+text_builder_hack = replace "Data.Text.Lazy.Builder.Internal.fromText" "Data.Text.Lazy.Builder.fromText"  {- Given a Parser that finds strings it wants to modify,  - and returns the modified string, does a mass 
+ Build/EvilSplicer.o view

binary file changed (absent → 160444 bytes)

Build/InstallDesktopFile.o view

binary file changed (29552 → 2536 bytes)

+ Build/NullSoftInstaller.hs view
@@ -0,0 +1,114 @@+{- Generates a NullSoft installer program for git-annex on Windows.
+ - 
+ - To build the installer, git-annex should already be built by cabal,
+ - and ssh and rsync, as well as cygwin libraries, already installed.
+ -
+ - This uses the Haskell nsis package (cabal install nsis)
+ - to generate a .nsi file, which is then used to produce
+ - git-annex-installer.exe
+ - 
+ - The installer includes git-annex, and utilities it uses, with the
+ - exception of git. The user needs to install git separately,
+ - and the installer checks for that.
+ -
+ - Copyright 2013 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+{-# LANGUAGE OverloadedStrings #-}
+
+import Development.NSIS
+import System.FilePath
+import Control.Monad
+import System.Directory
+import Data.String
+
+import Utility.Tmp
+import Utility.CopyFile
+import Utility.SafeCommand
+import Build.BundledPrograms
+
+main = do
+	withTmpDir "nsis-build" $ \tmpdir -> do
+		let gitannex = tmpdir </> "git-annex.exe"
+		mustSucceed "ln" [File "dist/build/git-annex/git-annex.exe", File gitannex]
+		writeFile nsifile $ makeInstaller gitannex
+		mustSucceed "C:\\Program Files\\NSIS\\makensis" [File nsifile]
+	removeFile nsifile -- left behind if makensis fails
+  where
+	nsifile = "git-annex.nsi"
+	mustSucceed cmd params = do
+		r <- boolSystem cmd params
+		case r of
+			True -> return ()
+			False -> error $ cmd ++ "failed"
+
+installer :: FilePath
+installer = "git-annex-installer.exe"
+
+gitInstallDir :: Exp FilePath
+gitInstallDir = fromString "$PROGRAMFILES\\Git\\cmd"
+
+needGit :: Exp String
+needGit = strConcat
+	[ fromString "You need git installed to use git-annex. Looking at "
+	, gitInstallDir
+	, fromString " , it seems to not be installed, "
+	, fromString "or may be installed in another location. "
+	, fromString "You can install git from http:////git-scm.com//"
+	]
+
+makeInstaller :: FilePath -> String
+makeInstaller gitannex = nsis $ do
+	name "git-annex"
+	outFile $ str installer
+	{- Installing into the same directory as git avoids needing to modify
+ 	 - path myself, since the git installer already does it. -}
+	installDir gitInstallDir
+	requestExecutionLevel User
+
+	iff (fileExists gitInstallDir)
+		(return ())
+		(alert needGit)
+	
+	-- Pages to display
+	page Directory                   -- Pick where to install
+	page InstFiles                   -- Give a progress bar while installing
+	-- Groups of files to install
+	section "programs" [] $ do
+		setOutPath "$INSTDIR"
+		addfile gitannex
+		mapM_ addcygfile cygwinPrograms
+	section "DLLS" [] $ do
+		setOutPath "$INSTDIR"
+		mapM_ addcygfile cygwinDlls
+  where
+	addfile f = file [] (str f)
+	addcygfile f = addfile $ "C:\\cygwin\\bin" </> f
+
+cygwinPrograms :: [FilePath]
+cygwinPrograms = map (\p -> p ++ ".exe") bundledPrograms
+
+-- These are the dlls needed by Cygwin's rsync, ssh, etc.
+cygwinDlls :: [FilePath]
+cygwinDlls =
+	[ "cygwin1.dll"
+	, "cygasn1-8.dll"
+	, "cygheimbase-1.dll"
+	, "cygroken-18.dll"
+	, "cygcom_err-2.dll"
+	, "cygheimntlm-0.dll"
+	, "cygsqlite3-0.dll"
+	, "cygcrypt-0.dll"
+	, "cyghx509-5.dll"
+	, "cygssp-0.dll"
+	, "cygcrypto-1.0.0.dll"
+	, "cygiconv-2.dll"
+	, "cyggcc_s-1.dll"
+	, "cygintl-8.dll"
+	, "cygwind-0.dll"
+	, "cyggssapi-3.dll"
+	, "cygkrb5-26.dll"
+	, "cygz.dll"
+	]
Build/Standalone.hs view
@@ -18,7 +18,7 @@ import System.IO import Control.Monad import Data.List-import Build.SysConfig as SysConfig+import Build.BundledPrograms  import Utility.PartialPrelude import Utility.Directory@@ -27,32 +27,6 @@ import Utility.SafeCommand import Utility.Path -{- Programs that git-annex uses, to include in the bundle.- -- - These may be just the command name, or the full path to it. -}-thirdpartyProgs :: [FilePath]-thirdpartyProgs = catMaybes-	[ Just "git"-	, Just "cp"-	, Just "xargs"-	, Just "gpg"-	, Just "rsync"-	, Just "ssh"-	, Just "sh"-	, ifset SysConfig.curl "curl"-	, ifset SysConfig.wget "wget"-	, ifset SysConfig.bup "bup"-	, SysConfig.lsof-	, SysConfig.sha1-	, SysConfig.sha256-	, SysConfig.sha512-	, SysConfig.sha224-	, SysConfig.sha384-	]-  where-	ifset True s = Just s-	ifset False _ = Nothing- progDir :: FilePath -> FilePath #ifdef darwin_HOST_OS progDir topdir = topdir@@ -76,5 +50,5 @@         go (topdir:_) = do 		let dir = progDir topdir 		createDirectoryIfMissing True dir-		installed <- forM thirdpartyProgs $ installProg dir+		installed <- forM bundledPrograms $ installProg dir 		writeFile "tmp/standalone-installed" (show installed)
+ Build/Standalone.o view

binary file changed (absent → 13632 bytes)

+ Build/SysConfig.o view

binary file changed (absent → 4860 bytes)

Build/TestConfig.hs view
@@ -4,6 +4,7 @@  import Utility.Path import Utility.Monad+import Utility.SafeCommand  import System.IO import System.Cmd@@ -75,8 +76,8 @@ {- Checks if a command is available by running a command line. -} testCmd :: ConfigKey -> String -> Test testCmd k cmdline = do-	ret <- system $ quiet cmdline-	return $ Config k (BoolConfig $ ret == ExitSuccess)+	ok <- boolSystem "sh" [ Param "-c", Param $ quiet cmdline ]+	return $ Config k (BoolConfig ok)  {- Ensures that one of a set of commands is available by running each in  - turn. The Config is set to the first one found. -}@@ -98,8 +99,8 @@   where 	search [] = failure $ fst $ unzip cmdsparams 	search ((c, params):cs) = do-		ret <- system $ quiet $ c ++ " " ++ params-		if ret == ExitSuccess+		ok <- boolSystem "sh" [ Param "-c", Param $ quiet $ c ++ " " ++ params ]+		if ok 			then success c 			else search cs 
Build/TestConfig.o view

binary file changed (55184 → 33088 bytes)

CHANGELOG view
@@ -1,11 +1,34 @@-git-annex (4.20130502) UNRELEASED; urgency=low+git-annex (4.20130516) unstable; urgency=low    * Android: The webapp is ported and working.+  * Windows: There is a very rough Windows port. Do not trust it with+    important data.+  * git-annex-shell: Ensure that received files can be read. Files+    transferred from some Android devices may have very broken permissions+    as received.+  * direct mode: Direct mode commands now work on files staged in the index,+    they do not need to be committed to git.   * Temporarily add an upper bound to the version of yesod that can be built     with, since yesod 1.2 has a great many changes that will require extensive     work on the webapp.+  * Disable building with the haskell threaded runtime when the assistant+    is not built. This may fix builds on s390x and sparc, which are failing+    to link -lHSrts_thr+  * Avoid depending on regex-tdfa on mips, mipsel, and s390, where it fails+    to build.+  * direct: Fix a bug that could cause some files to be left in indirect mode.+  * When initializing a directory special remote with a relative path,+    the path is made absolute.+  * SHA: Add a runtime sanity check that sha commands output something+    that appears to be a real sha.+  * configure: Better checking that sha commands output in the desired format.+  * rsync special remotes: When sending from a crippled filesystem, use+    the destination's default file permissions, as the local ones can+    be arbitrarily broken. (Ie, ----rwxr-x for files on Android)+  * migrate: Detect if a file gets corrupted while it's being migrated.+  * Debian: Add a menu file. - -- Joey Hess <joeyh@debian.org>  Thu, 02 May 2013 20:39:19 -0400+ -- Joey Hess <joeyh@debian.org>  Thu, 16 May 2013 11:03:35 -0400  git-annex (4.20130501) unstable; urgency=low 
CmdLine.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module CmdLine ( 	dispatch, 	usage,@@ -15,7 +17,9 @@ import qualified Data.Map as M import Control.Exception (throw) import System.Console.GetOpt+#ifndef __WINDOWS__ import System.Posix.Signals+#endif  import Common.Annex import qualified Annex@@ -114,7 +118,9 @@ {- Actions to perform each time ran. -} startup :: Annex Bool startup = liftIO $ do+#ifndef __WINDOWS__ 	void $ installHandler sigINT Default Nothing+#endif 	return True  {- Cleanup actions. -}
Command/Add.hs view
@@ -9,6 +9,8 @@  module Command.Add where +import System.PosixCompat.Files+ import Common.Annex import Annex.Exception import Command
Command/Assistant.hs view
@@ -15,7 +15,6 @@ import Config.Files  import System.Environment-import System.Posix.Directory  def :: [Command] def = [noRepo checkAutoStart $ dontCheck repoExists $@@ -64,5 +63,5 @@ 			)   where 	go program dir = do-		changeWorkingDirectory dir+		setCurrentDirectory dir 		boolSystem program [Param "assistant"]
Command/Fix.hs view
@@ -7,6 +7,8 @@  module Command.Fix where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Annex.Queue
Command/FromKey.hs view
@@ -7,6 +7,8 @@  module Command.FromKey where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Annex.Queue
Command/Fsck.hs view
@@ -5,8 +5,12 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Command.Fsck where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Annex@@ -28,7 +32,11 @@ import Types.Key import Utility.HumanTime +#ifndef __WINDOWS__ import System.Posix.Process (getProcessID)+#else+import System.Random (getStdRandom, random)+#endif import Data.Time.Clock.POSIX import Data.Time import System.Posix.Types (EpochTime)@@ -138,10 +146,14 @@ 		, checkKeyNumCopies key file numcopies 		] 	withtmp a = do-		pid <- liftIO getProcessID+#ifndef __WINDOWS__+		v <- liftIO getProcessID+#else+		v <- liftIO (getStdRandom random :: IO Int)+#endif 		t <- fromRepo gitAnnexTmpDir 		createAnnexDirectory t-		let tmp = t </> "fsck" ++ show pid ++ "." ++ keyFile key+		let tmp = t </> "fsck" ++ show v ++ "." ++ keyFile key 		let cleanup = liftIO $ catchIO (removeFile tmp) (const noop) 		cleanup 		cleanup `after` a tmp@@ -449,7 +461,9 @@ 	parent <- parentDir <$> calcRepo (gitAnnexLocation key) 	liftIO $ void $ tryIO $ do 		touchFile parent+#ifndef __WINDOWS__ 		setSticky parent+#endif  getFsckTime :: Key -> Annex (Maybe EpochTime) getFsckTime key = do
Command/Import.hs view
@@ -7,6 +7,8 @@  module Command.Import where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Annex
Command/Indirect.hs view
@@ -7,6 +7,8 @@  module Command.Indirect where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Git
Command/Migrate.hs view
@@ -52,15 +52,20 @@  {- Store the old backend's key in the new backend  - The old backend's key is not dropped from it, because there may- - be other files still pointing at that key. -}+ - be other files still pointing at that key.+ -+ - To ensure that the data we have for the old key is valid, it's+ - fscked here. First we generate the new key. This ensures that the+ - data cannot get corrupted after the fsck but before the new key is+ - generated.+ -} perform :: FilePath -> Key -> Backend -> Backend -> CommandPerform-perform file oldkey oldbackend newbackend = do-	ifM (Command.Fsck.checkBackend oldbackend oldkey (Just file))-		( maybe stop go =<< genkey-		, stop-		)+perform file oldkey oldbackend newbackend = go =<< genkey   where-	go newkey = stopUnless (Command.ReKey.linkKey oldkey newkey) $+  	go Nothing = stop+	go (Just newkey) = stopUnless checkcontent $ finish newkey+	checkcontent = Command.Fsck.checkBackend oldbackend oldkey $ Just file+	finish newkey = stopUnless (Command.ReKey.linkKey oldkey newkey) $ 		next $ Command.ReKey.cleanup file oldkey newkey 	genkey = do 		content <- calcRepo $ gitAnnexLocation oldkey
Command/ReKey.hs view
@@ -7,6 +7,8 @@  module Command.ReKey where +import System.PosixCompat.Files+ import Common.Annex import Command import qualified Annex
Command/RecvKey.hs view
@@ -7,6 +7,8 @@  module Command.RecvKey where +import System.PosixCompat.Files+ import Common.Annex import Command import CmdLine@@ -44,13 +46,19 @@ 	go tmp = do 		opts <- filterRsyncSafeOptions . maybe [] words 			<$> getField "RsyncOptions"-		ifM (liftIO $ rsyncServerReceive (map Param opts) tmp)-			( ifM (isJust <$> Fields.getField Fields.direct)+		ok <- liftIO $ rsyncServerReceive (map Param opts) tmp++		-- The file could have been received with permissions that+		-- do not allow reading it, so this is done before the+		-- directcheck.+		freezeContent tmp++		if ok+			then ifM (isJust <$> Fields.getField Fields.direct) 				( directcheck tmp 				, return True 				)-			, return False-			)+			else return False 	{- If the sending repository uses direct mode, the file 	 - it sends could be modified as it's sending it. So check 	 - that the right size file was received, and that the key/value
Command/Status.hs view
@@ -13,6 +13,7 @@ import qualified Data.Map as M import Text.JSON import Data.Tuple+import System.PosixCompat.Files  import Common.Annex import qualified Types.Backend as B
Command/Unannex.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Command.Unannex where  import Common.Annex@@ -58,6 +60,9 @@  	return True   where+#ifdef __WINDOWS__+	goFast = go+#else 	goFast = do 		-- fast mode: hard link to content in annex 		src <- calcRepo $ gitAnnexLocation key@@ -66,6 +71,7 @@ 			( thawContent file 			, go 			)+#endif 	go = do 		fromAnnex key file 		logStatus key InfoMissing
Command/WebApp.hs view
@@ -28,7 +28,6 @@ import Config.Files import qualified Option -import System.Posix.Directory import Control.Concurrent import Control.Concurrent.STM import System.Process (env, std_out, std_err)@@ -97,7 +96,7 @@ 	case dirs of 		[] -> firstRun listenhost 		(d:_) -> do-			changeWorkingDirectory d+			setCurrentDirectory d 			state <- Annex.new =<< Git.CurrentRepo.get 			void $ Annex.eval state $ doCommand $ 				start' False listenhost@@ -158,7 +157,11 @@ 	sendurlback v _origout _origerr url _htmlshim = putMVar v url  openBrowser :: Maybe FilePath -> FilePath -> String -> Maybe Handle -> Maybe Handle -> IO ()+#ifdef __ANDROID__ openBrowser mcmd htmlshim realurl outh errh = do+#else+openBrowser mcmd htmlshim _realurl outh errh = do+#endif 	hPutStrLn (fromMaybe stdout outh) $ "Launching web browser on " ++ url 	hFlush stdout 	environ <- cleanEnvironment
Common.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE PackageImports #-}+{-# LANGUAGE PackageImports, CPP #-}  module Common (module X) where @@ -12,12 +12,13 @@ import Data.List as X hiding (head, tail, init, last) import Data.String.Utils as X hiding (join) -import "MissingH" System.Path as X import System.FilePath as X import System.Directory as X import System.IO as X hiding (FilePath)-import System.Posix.Files as X+import System.PosixCompat.Files as X+#ifndef mingw32_HOST_OS import System.Posix.IO as X+#endif import System.Exit as X  import Utility.Misc as X
Common.o view

binary file changed (906 → 622 bytes)

Config/Files.hs view
@@ -8,7 +8,7 @@ module Config.Files where  import Common-import Utility.TempFile+import Utility.Tmp import Utility.FreeDesktop  {- ~/.config/git-annex/file -}
+ Config/Files.o view

binary file changed (absent → 13072 bytes)

Creds.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Creds where  import Common.Annex@@ -13,9 +15,9 @@ import Crypto import Types.Remote (RemoteConfig, RemoteConfigKey) import Remote.Helper.Encryptable (remoteCipher, embedCreds)+import Utility.Env (setEnv)  import System.Environment-import System.Posix.Env (setEnv) import qualified Data.ByteString.Lazy.Char8 as L import qualified Data.Map as M import Utility.Base64@@ -105,12 +107,16 @@  {- Stores a CredPair in the environment. -} setEnvCredPair :: CredPair -> CredPairStorage -> IO ()+#ifndef __WINDOWS__ setEnvCredPair (l, p) storage = do 	set uenv l 	set penv p   where 	(uenv, penv) = credPairEnvironment storage-	set var val = setEnv var val True+	set var val = void $ setEnv var val True+#else+setEnvCredPair _ _ = error "setEnvCredPair TODO"+#endif  writeCacheCredPair :: CredPair -> CredPairStorage -> Annex () writeCacheCredPair credpair storage =@@ -122,13 +128,7 @@ writeCacheCreds creds file = do 	d <- fromRepo gitAnnexCredsDir 	createAnnexDirectory d-	liftIO $ do-		let f = d </> file-		h <- openFile f WriteMode-		modifyFileMode f $ removeModes-			[groupReadMode, otherReadMode]-		hPutStr h creds-		hClose h+	liftIO $ writeFileProtected (d </> file) creds  readCacheCredPair :: CredPairStorage -> Annex (Maybe CredPair) readCacheCredPair storage = maybe Nothing decodeCredPair
Git.hs view
@@ -8,6 +8,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Git ( 	Repo(..), 	Ref(..),@@ -30,7 +32,9 @@ ) where  import Network.URI (uriPath, uriScheme, unEscapeString)+#ifndef __WINDOWS__ import System.Posix.Files+#endif  import Common import Git.Types@@ -127,4 +131,8 @@ 	ifM (catchBoolIO $ isexecutable hook) 		( return $ Just hook , return Nothing )   where+#if __WINDOWS__+	isexecutable f = doesFileExist f+#else 	isexecutable f = isExecutable . fileMode <$> getFileStatus f+#endif
Git/CatFile.hs view
@@ -23,12 +23,13 @@ import Git.Sha import Git.Command import Git.Types+import Git.FilePath import qualified Utility.CoProcess as CoProcess  type CatFileHandle = CoProcess.CoProcessHandle  catFileStart :: Repo -> IO CatFileHandle-catFileStart = gitCoProcessStart+catFileStart = CoProcess.rawMode <=< gitCoProcessStart 	[ Param "cat-file" 	, Param "--batch" 	]@@ -38,7 +39,8 @@  {- Reads a file from a specified branch. -} catFile :: CatFileHandle -> Branch -> FilePath -> IO L.ByteString-catFile h branch file = catObject h $ Ref $ show branch ++ ":" ++ file+catFile h branch file = catObject h $ Ref $+	show branch ++ ":" ++ toInternalGitPath file  {- Uses a running git cat-file read the content of an object.  - Objects that do not exist will have "" returned. -}@@ -49,11 +51,8 @@ catObjectDetails :: CatFileHandle -> Ref -> IO (Maybe (L.ByteString, Sha)) catObjectDetails h object = CoProcess.query h send receive   where-	send to = do-		fileEncoding to-		hPutStrLn to $ show object+	send to = hPutStrLn to $ show object 	receive from = do-		fileEncoding from 		header <- hGetLine from 		case words header of 			[sha, objtype, size]@@ -68,8 +67,10 @@ 				| otherwise -> error $ "unknown response from git cat-file " ++ show (header, object) 	readcontent bytes from sha = do 		content <- S.hGet from bytes-		c <- hGetChar from-		when (c /= '\n') $-			error "missing newline from git cat-file"+		eatchar '\n' from 		return $ Just (L.fromChunks [content], Ref sha) 	dne = return Nothing+	eatchar expected from = do+		c <- hGetChar from+		when (c /= expected) $+			error $ "missing " ++ (show expected) ++ " from git cat-file"
Git/CheckAttr.hs view
@@ -22,7 +22,7 @@ checkAttrStart :: [Attr] -> Repo -> IO CheckAttrHandle checkAttrStart attrs repo = do 	cwd <- getCurrentDirectory-	h <- gitCoProcessStart params repo+	h <- CoProcess.rawMode =<< gitCoProcessStart params repo 	return (h, attrs, cwd)   where 	params =@@ -43,11 +43,8 @@ 		[v] -> return v 		_ -> error $ "unable to determine " ++ want ++ " attribute of " ++ file   where-	send to = do-		fileEncoding to-		hPutStr to $ file' ++ "\0"+	send to = hPutStr to $ file' ++ "\0" 	receive from = forM attrs $ \attr -> do-		fileEncoding from 		l <- hGetLine from 		return (attr, attrvalue attr l) 	{- Before git 1.7.7, git check-attr worked best with
Git/Construct.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Git.Construct ( 	fromCwd, 	fromAbsPath,@@ -21,13 +23,18 @@ 	checkForRepo, ) where +{-# LANGUAGE CPP #-}++#ifndef __WINDOWS__ import System.Posix.User+#endif import qualified Data.Map as M hiding (map, split) import Network.URI  import Common import Git.Types import Git+import Git.FilePath import qualified Git.Url as Url import Utility.UserInfo @@ -52,8 +59,7 @@  - specified. -} fromAbsPath :: FilePath -> IO Repo fromAbsPath dir-	| "/" `isPrefixOf` dir =-		ifM (doesDirectoryExist dir') ( ret dir' , hunt )+	| isAbsolute dir = ifM (doesDirectoryExist dir') ( ret dir' , hunt ) 	| otherwise = 		error $ "internal error, " ++ dir ++ " is not absolute"   where@@ -65,7 +71,7 @@ 	{- When dir == "foo/.git", git looks for "foo/.git/.git", 	 - and failing that, uses "foo" as the repository. -} 	hunt-		| "/.git" `isSuffixOf` canondir =+		| (pathSeparator:".git") `isSuffixOf` canondir = 			ifM (doesDirectoryExist $ dir </> ".git") 				( ret dir 				, ret $ takeDirectory canondir@@ -139,6 +145,9 @@ fromRemoteLocation s repo = gen $ calcloc s   where 	gen v	+#ifdef __WINDOWS__+		| dosstyle v = fromRemotePath (dospath v) repo+#endif 		| scpstyle v = fromUrl $ scptourl v 		| urlstyle v = fromUrl v 		| otherwise = fromRemotePath v repo@@ -172,6 +181,12 @@ 			| "/" `isPrefixOf` d = d 			| "~" `isPrefixOf` d = '/':d 			| otherwise = "/~/" ++ d+#ifdef __WINDOWS__+	-- git on Windows will write a path to .git/config with "drive:",+	-- which is not to be confused with a "host:"+	dosstyle = hasDrive+	dospath = fromInternalGitPath+#endif  {- Constructs a Repo from the path specified in the git remotes of  - another Repo. -}@@ -192,6 +207,9 @@ 	return $ h </> d'  expandTilde :: FilePath -> IO FilePath+#ifdef __WINDOWS__+expandTilde = return+#else expandTilde = expandt True   where 	expandt _ [] = return ""@@ -212,6 +230,7 @@ 	findname n (c:cs) 		| c == '/' = (n, cs) 		| otherwise = findname (n++[c]) cs+#endif  {- Checks if a git repository exists in a directory. Does not find  - git repositories in parent directories. -}
Git/CurrentRepo.hs view
@@ -5,15 +5,15 @@  - Licensed under the GNU GPL version 3 or higher.  -} -module Git.CurrentRepo where+{-# LANGUAGE CPP #-} -import System.Posix.Directory (changeWorkingDirectory)-import System.Posix.Env (getEnv, unsetEnv)+module Git.CurrentRepo where  import Common import Git.Types import Git.Construct import qualified Git.Config+import Utility.Env  {- Gets the current git repository.  -@@ -37,16 +37,20 @@ 		Just d -> do 			cwd <- getCurrentDirectory 			unless (d `dirContains` cwd) $-				changeWorkingDirectory d+				setCurrentDirectory d 			return $ addworktree wt r   where 	pathenv s = do+#ifndef __WINDOWS__ 		v <- getEnv s 		case v of 			Just d -> do-				unsetEnv s+				void $ unsetEnv s 				Just <$> absPath d 			Nothing -> return Nothing+#else+		return Nothing+#endif  	configure Nothing (Just r) = Git.Config.read r 	configure (Just d) _ = do
Git/FilePath.hs view
@@ -5,16 +5,21 @@  - top of the repository even when run in a subdirectory. Adding some  - types helps keep that straight.  -- - Copyright 2012 Joey Hess <joey@kitenet.net>+ - Copyright 2012-2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Git.FilePath ( 	TopFilePath, 	getTopFilePath, 	toTopFilePath, 	asTopFilePath,+	InternalGitPath,+	toInternalGitPath,+	fromInternalGitPath ) where  import Common@@ -32,3 +37,22 @@  - repository -} asTopFilePath :: FilePath -> TopFilePath asTopFilePath file = TopFilePath file++{- Git may use a different representation of a path when storing+ - it internally. For example, on Windows, git uses '/' to separate paths+ - stored in the repository, despite Windows using '\' -}+type InternalGitPath = String++toInternalGitPath :: FilePath -> InternalGitPath+#ifndef __WINDOWS__+toInternalGitPath = id+#else+toInternalGitPath = replace "\\" "/"+#endif++fromInternalGitPath :: InternalGitPath -> FilePath+#ifndef __WINDOWS__+fromInternalGitPath = id+#else+fromInternalGitPath = replace "/" "\\"+#endif
Git/HashObject.hs view
@@ -17,7 +17,7 @@ type HashObjectHandle = CoProcess.CoProcessHandle  hashObjectStart :: Repo -> IO HashObjectHandle-hashObjectStart = gitCoProcessStart+hashObjectStart = CoProcess.rawMode <=< gitCoProcessStart 	[ Param "hash-object" 	, Param "-w" 	, Param "--stdin-paths"@@ -30,16 +30,13 @@ hashFile :: HashObjectHandle -> FilePath -> IO Sha hashFile h file = CoProcess.query h send receive   where-	send to = do-		fileEncoding to-		hPutStrLn to file+	send to = hPutStrLn to file 	receive from = getSha "hash-object" $ hGetLine from  {- Injects some content into git, returning its Sha. -} hashObject :: ObjectType -> String -> Repo -> IO Sha-hashObject objtype content repo = getSha subcmd $ do-	s <- pipeWriteRead (map Param params) content repo-	return s+hashObject objtype content repo = getSha subcmd $+	pipeWriteRead (map Param params) content repo   where 	subcmd = "hash-object" 	params = [subcmd, "-t", show objtype, "-w", "--stdin"]
Git/Index.hs view
@@ -7,7 +7,7 @@  module Git.Index where -import System.Posix.Env (setEnv, unsetEnv, getEnv)+import Utility.Env  {- Forces git to use the specified index file.  -
Git/UpdateIndex.hs view
@@ -1,11 +1,11 @@ {- git-update-index library  -- - Copyright 2011, 2012 Joey Hess <joey@kitenet.net>+ - Copyright 2011-2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -} -{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE BangPatterns, CPP #-}  module Git.UpdateIndex ( 	Streamer,@@ -59,13 +59,13 @@  - a given file with a given sha. -} updateIndexLine :: Sha -> BlobType -> TopFilePath -> String updateIndexLine sha filetype file =-	show filetype ++ " blob " ++ show sha ++ "\t" ++ getTopFilePath file+	show filetype ++ " blob " ++ show sha ++ "\t" ++ indexPath file  {- A streamer that removes a file from the index. -} unstageFile :: FilePath -> Repo -> IO Streamer unstageFile file repo = do 	p <- toTopFilePath file repo-	return $ pureStreamer $ "0 " ++ show nullSha ++ "\t" ++ getTopFilePath p+	return $ pureStreamer $ "0 " ++ show nullSha ++ "\t" ++ indexPath p  {- A streamer that adds a symlink to the index. -} stageSymlink :: FilePath -> Sha -> Repo -> IO Streamer@@ -75,3 +75,6 @@ 		<*> pure SymlinkBlob 		<*> toTopFilePath file repo 	return $ pureStreamer line++indexPath :: TopFilePath -> InternalGitPath+indexPath = toInternalGitPath . getTopFilePath
GitAnnex.hs view
@@ -23,7 +23,9 @@ import qualified Command.FromKey import qualified Command.DropKey import qualified Command.TransferKey+#ifndef __WINDOWS__ import qualified Command.TransferKeys+#endif import qualified Command.ReKey import qualified Command.Reinject import qualified Command.Fix@@ -73,8 +75,10 @@ #endif #endif #ifdef WITH_TESTSUITE+#ifndef __WINDOWS__ import qualified Command.Test #endif+#endif  cmds :: [Command] cmds = concat@@ -107,7 +111,9 @@ 	, Command.FromKey.def 	, Command.DropKey.def 	, Command.TransferKey.def+#ifndef __WINDOWS__ 	, Command.TransferKeys.def+#endif 	, Command.ReKey.def 	, Command.Fix.def 	, Command.Fsck.def@@ -137,7 +143,9 @@ #endif #endif #ifdef WITH_TESTSUITE+#ifndef __WINDOWS__ 	, Command.Test.def+#endif #endif 	] 
GitAnnexShell.hs view
@@ -7,7 +7,7 @@  module GitAnnexShell where -import System.Posix.Env+import System.Environment import System.Console.GetOpt  import Common.Annex@@ -145,7 +145,7 @@  checkDirectory :: Maybe FilePath -> IO () checkDirectory mdir = do-	v <- getEnv "GIT_ANNEX_SHELL_DIRECTORY"+	v <- catchMaybeIO $ getEnv "GIT_ANNEX_SHELL_DIRECTORY" 	case (v, mdir) of 		(Nothing, _) -> noop 		(Just d, Nothing) -> req d Nothing@@ -175,7 +175,7 @@  checkEnv :: String -> IO () checkEnv var = do-	v <- getEnv var+	v <- catchMaybeIO $ getEnv var 	case v of 		Nothing -> noop 		Just "" -> noop
INSTALL view
@@ -14,19 +14,13 @@ [[Gentoo]]            | `emerge git-annex` [[ScientificLinux5]]  | (and other RHEL5 clones like CentOS5) [[openSUSE]]          | -Windows               | [[sorry, Windows not supported yet|todo/windows_support]]+[[Windows]]           | **alpha** """]]  ## Using cabal -As a haskell package, git-annex can be installed using cabal.-Start by installing the [Haskell Platform](http://hackage.haskell.org/platform/),-and then:--	cabal install git-annex --bindir=$HOME/bin--That installs the latest release. Alternatively, you can [[download]]-git-annex yourself and [[manually_build_with_cabal|install/cabal]].+As a haskell package, git-annex can be installed from source pretty easily+[[using cabal|cabal]].  ## Installation from scratch 
Init.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Init ( 	ensureInitialized, 	isInitialized,@@ -14,8 +16,9 @@ ) where  import Common.Annex-import Utility.TempFile+import Utility.Tmp import Utility.Network+import qualified Annex import qualified Git import qualified Git.LsFiles import qualified Git.Config@@ -34,11 +37,15 @@ genDescription :: Maybe String -> Annex String genDescription (Just d) = return d genDescription Nothing = do+	reldir <- liftIO . relHome =<< fromRepo Git.repoPath 	hostname <- fromMaybe "" <$> liftIO getHostname+#ifndef __WINDOWS__ 	let at = if null hostname then "" else "@" 	username <- liftIO myUserName-	reldir <- liftIO . relHome =<< fromRepo Git.repoPath 	return $ concat [username, at, hostname, ":", reldir]+#else+	return $ concat [hostname, ":", reldir]+#endif  initialize :: Maybe String -> Annex () initialize mdescription = do@@ -106,13 +113,18 @@  preCommitScript :: String preCommitScript = unlines-	[ shebang+	[ shebang_local 	, "# automatically configured by git-annex" 	, "git annex pre-commit ." 	] +{- A crippled filesystem is one that does not allow making symlinks,+ - or removing write access from files. -} probeCrippledFileSystem :: Annex Bool probeCrippledFileSystem = do+#ifdef __WINDOWS__+	return True+#else 	tmp <- fromRepo gitAnnexTmpDir 	let f = tmp </> "gaprobe" 	liftIO $ do@@ -132,11 +144,21 @@ 		preventWrite f 		allowWrite f 		return True+#endif  checkCrippledFileSystem :: Annex () checkCrippledFileSystem = whenM probeCrippledFileSystem $ do 	warning "Detected a crippled filesystem." 	setCrippledFileSystem True++	{- Normally git disables core.symlinks itself when the filesystem does+ 	 - not support them, but in Cygwin, git does support symlinks, while+ 	 - git-annex, not linking with Cygwin, does not. -}+	whenM (coreSymlinks <$> Annex.getGitConfig) $ do+		warning "Disabling core.symlinks."+		setConfig (ConfigKey "core.symlinks")+			(Git.Config.boolConfig False)+ 	unlessM isDirect $ do 		warning "Enabling direct mode." 		top <- fromRepo Git.repoPath@@ -149,6 +171,9 @@  probeFifoSupport :: Annex Bool probeFifoSupport = do+#ifdef __WINDOWS__+	return False+#else 	tmp <- fromRepo gitAnnexTmpDir 	let f = tmp </> "gaprobe" 	liftIO $ do@@ -159,6 +184,7 @@ 			getFileStatus f 		nukeFile f 		return $ either (const False) isNamedPipe ms+#endif  checkFifoSupport :: Annex () checkFifoSupport = unlessM probeFifoSupport $ do
Limit.hs view
@@ -13,8 +13,13 @@ import qualified Data.Set as S import qualified Data.Map as M import System.Path.WildMatch+#ifdef WITH_TDFA import Text.Regex.TDFA import Text.Regex.TDFA.String+#else+import System.Path.WildMatch+#endif+import System.PosixCompat.Files  import Common.Annex import qualified Annex@@ -85,10 +90,11 @@ limitExclude glob = Right $ const $ return . not . matchglob glob  {- Could just use wildCheckCase, but this way the regex is only compiled- - once. Also, we use regex-TDFA because it's less buggy in its support- - of non-unicode characters. -}+ - once. Also, we use regex-TDFA when available, because it's less buggy+ - in its support of non-unicode characters. -} matchglob :: String -> Annex.FileInfo -> Bool matchglob glob fi =+#ifdef WITH_TDFA 	case cregex of 		Right r -> case execute r (Annex.matchFile fi) of 			Right (Just _) -> True@@ -97,6 +103,9 @@   where 	cregex = compile defaultCompOpt defaultExecOpt regex 	regex = '^':wildToRegex glob+#else+	wildCheckCase glob (Annex.matchFile fi)+#endif  {- Adds a limit to skip files not believed to be present  - in a specfied repository. -}
Locations.hs view
@@ -259,7 +259,7 @@  - than .git to be used.  -} isLinkToAnnex :: FilePath -> Bool-isLinkToAnnex s = ('/':objectDir) `isInfixOf` s+isLinkToAnnex s = (pathSeparator:objectDir) `isInfixOf` s  {- Converts a key into a filename fragment without any directory.  -
− Locations/UserConfig.o

binary file changed (21632 → absent bytes)

Logs/Transfer.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Logs.Transfer where  import Common.Annex@@ -122,6 +124,7 @@ 	return ok   where 	prep tfile mode info = do+#ifndef __WINDOWS__ 		mfd <- catchMaybeIO $ 			openFd (transferLockFile tfile) ReadWrite (Just mode) 				defaultFileFlags { trunc = True }@@ -134,11 +137,18 @@ 					error "transfer already in progress" 				void $ tryIO $ writeTransferInfoFile info tfile 				return mfd+#else+		catchMaybeIO $ do+			writeFile (transferLockFile tfile) ""+			writeTransferInfoFile info tfile+#endif 	cleanup _ Nothing = noop 	cleanup tfile (Just fd) = do 		void $ tryIO $ removeFile tfile 		void $ tryIO $ removeFile $ transferLockFile tfile+#ifndef __WINDOWS__ 		closeFd fd+#endif 	retry oldinfo metervar run = do 		v <- tryAnnex run 		case v of@@ -195,8 +205,9 @@ {- If a transfer is still running, returns its TransferInfo. -} checkTransfer :: Transfer -> Annex (Maybe TransferInfo) checkTransfer t = do-	mode <- annexFileMode 	tfile <- fromRepo $ transferFile t+#ifndef __WINDOWS__+	mode <- annexFileMode 	mfd <- liftIO $ catchMaybeIO $ 		openFd (transferLockFile tfile) ReadOnly (Just mode) defaultFileFlags 	case mfd of@@ -209,6 +220,13 @@ 				Nothing -> return Nothing 				Just (pid, _) -> liftIO $ catchDefaultIO Nothing $ 					readTransferInfoFile (Just pid) tfile+#else+	ifM (liftIO $ doesFileExist $ transferLockFile tfile)+		( liftIO $ catchDefaultIO Nothing $+			readTransferInfoFile Nothing tfile+		, return Nothing+		)+#endif  {- Gets all currently running transfers. -} getTransfers :: Annex [(Transfer, TransferInfo)]
Logs/Unused.hs view
@@ -19,7 +19,7 @@ import Common.Annex import Command import Types.Key-import Utility.TempFile+import Utility.Tmp  writeUnusedLog :: FilePath -> [(Int, Key)] -> Annex () writeUnusedLog prefix l = do
Makefile view
@@ -158,7 +158,7 @@ 	rm -f tmp/git-annex.dmg.bz2 	bzip2 --fast tmp/git-annex.dmg -ANDROID_FLAGS=+ANDROID_FLAGS?= # Cross compile for Android. # Uses https://github.com/neurocyte/ghc-android android: Build/EvilSplicer@@ -181,11 +181,9 @@ # Cabal cannot cross compile with custom build type, so workaround. 	sed -i 's/Build-type: Custom/Build-type: Simple/' tmp/androidtree/git-annex.cabal 	if [ ! -e tmp/androidtree/dist/setup/setup ]; then \-		cd tmp/androidtree; \-		cabal configure; \-		$$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin/cabal configure -f"Android $(ANDROID_FLAGS)"; \+		cd tmp/androidtree && $$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin/cabal configure -f"Android $(ANDROID_FLAGS)"; \ 	fi-	$(MAKE) -C tmp/androidtree git-annex+	cd tmp/androidtree && $(CABAL) build  adb: 	ANDROID_FLAGS="-Production" $(MAKE) android
Remote/Directory.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Remote.Directory (remote) where  import qualified Data.ByteString.Lazy as L@@ -68,13 +70,14 @@ 	-- verify configuration is sane 	let dir = fromMaybe (error "Specify directory=") $ 		M.lookup "directory" c-	liftIO $ unlessM (doesDirectoryExist dir) $-		error $ "Directory does not exist: " ++ dir+	absdir <- liftIO $ absPath dir+	liftIO $ unlessM (doesDirectoryExist absdir) $+		error $ "Directory does not exist: " ++ absdir 	c' <- encryptionSetup c  	-- The directory is stored in git config, not in this remote's 	-- persistant state, so it can vary between hosts.-	gitConfigSpecialRemote u c' "directory" dir+	gitConfigSpecialRemote u c' "directory" absdir 	return $ M.delete "directory" c'  {- Locations to try to access a given Key in the Directory.@@ -216,10 +219,14 @@  retrieveCheap :: FilePath -> ChunkSize -> Key -> FilePath -> Annex Bool retrieveCheap _ (Just _) _ _ = return False -- no cheap retrieval for chunks+#ifndef __WINDOWS__ retrieveCheap d _ k f = liftIO $ withStoredFiles Nothing d k go   where 	go [file] = catchBoolIO $ createSymbolicLink file f >> return True 	go _files = return False+#else+retrieveCheap _ _ _ _ = return False+#endif  remove :: FilePath -> Key -> Annex Bool remove d k = liftIO $ do
Remote/Git.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Remote.Git ( 	remote, 	configRead,@@ -18,6 +20,7 @@ import Utility.CopyFile import Utility.Rsync import Remote.Helper.Ssh+import Annex.Ssh import Types.Remote import Types.GitConfig import qualified Git@@ -33,7 +36,7 @@ import qualified Annex.BranchState import qualified Annex.Branch import qualified Utility.Url as Url-import Utility.TempFile+import Utility.Tmp import Config import Config.Cost import Init@@ -177,7 +180,7 @@  	geturlconfig headers = do 		s <- Url.get (Git.repoLocation r ++ "/config") headers-		withTempFile "git-annex.tmp" $ \tmpfile h -> do+		withTmpFile "git-annex.tmp" $ \tmpfile h -> do 			hPutStr h s 			hClose h 			safely $ pipedconfig "git" [Param "config", Param "--null", Param "--list", Param "--file", File tmpfile]@@ -306,6 +309,8 @@ 	 - git-annex-shell transferinfo at the same time 	 - git-annex-shell sendkey is running. 	 -+	 - To avoid extra password prompts, this is only done when ssh+	 - connection caching is supported. 	 - Note that it actually waits for rsync to indicate 	 - progress before starting transferinfo, in order 	 - to ensure ssh connection caching works and reuses @@ -314,7 +319,11 @@ 	 - Also note that older git-annex-shell does not support 	 - transferinfo, so stderr is dropped and failure ignored. 	 -}-	feedprogressback a = do+	feedprogressback a = ifM (isJust <$> sshCacheDir)+		( feedprogressback' a+		, bracketIO noop (const noop) (a $ const noop)+		)+	feedprogressback' a = do 		u <- getUUID 		let fields = (Fields.remoteUUID, fromUUID u) 			: maybe [] (\f -> [(Fields.associatedFile, f)]) file@@ -341,6 +350,7 @@  copyFromRemoteCheap :: Remote -> Key -> FilePath -> Annex Bool copyFromRemoteCheap r key file+#ifndef __WINDOWS__ 	| not $ Git.repoIsUrl (repo r) = guardUsable (repo r) False $ do 		loc <- liftIO $ gitAnnexLocation key (repo r) $ 			fromJust $ remoteGitConfig $ gitconfig r@@ -350,6 +360,7 @@ 			( copyFromRemote' r key Nothing file 			, return False 			)+#endif 	| otherwise = return False  {- Tries to copy a key's content to a remote's annex. -}@@ -396,12 +407,14 @@  - filesystem. Then cp could be faster. -} rsyncOrCopyFile :: [CommandParam] -> FilePath -> FilePath -> MeterUpdate -> Annex Bool rsyncOrCopyFile rsyncparams src dest p =+#ifdef __WINDOWS__+	dorsync+  where+#else 	ifM (sameDeviceIds src dest) (docopy, dorsync)   where 	sameDeviceIds a b = (==) <$> (getDeviceId a) <*> (getDeviceId b) 	getDeviceId f = deviceID <$> liftIO (getFileStatus $ parentDir f)-	dorsync = rsyncHelper (Just p) $-		rsyncparams ++ [Param src, Param dest] 	docopy = liftIO $ bracket 		(forkIO $ watchfilesize zeroBytesProcessed) 		(void . tryIO . killThread)@@ -417,6 +430,9 @@ 					p sz 					watchfilesize sz 			_ -> watchfilesize oldsz+#endif+	dorsync = rsyncHelper (Just p) $+		rsyncparams ++ [File src, File dest]  {- Generates rsync parameters that ssh to the remote and asks it  - to either receive or send the key's content. -}
Remote/Helper/Hooks.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Remote.Helper.Hooks (addHooks) where  import qualified Data.Map as M@@ -70,6 +72,7 @@  		Annex.addCleanup (remoteid ++ "-stop-command") $ runstop lck 	runstop lck = do+#ifndef __WINDOWS__ 		-- Drop any shared lock we have, and take an 		-- exclusive lock, without blocking. If the lock 		-- succeeds, we're the only process using this remote,@@ -84,3 +87,6 @@ 			Left _ -> noop 			Right _ -> run stophook 		liftIO $ closeFd fd+#else+		run stophook+#endif
Remote/Rsync.hs view
@@ -5,11 +5,17 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Remote.Rsync (remote) where  import qualified Data.ByteString.Lazy as L import qualified Data.Map as M+#ifndef __WINDOWS__ import System.Posix.Process (getProcessID)+#else+import System.Random (getStdRandom, random)+#endif  import Common.Annex import Types.Remote@@ -155,18 +161,20 @@ 		)  remove :: RsyncOpts -> Key -> Annex Bool-remove o k = withRsyncScratchDir $ \tmp -> liftIO $ do-	{- Send an empty directory to rysnc to make it delete. -}-	let dummy = tmp </> keyFile k-	createDirectoryIfMissing True dummy-	rsync $ rsyncOptions o ++-		map (\s -> Param $ "--include=" ++ s) includes ++-		[ Param "--exclude=*" -- exclude everything else-		, Params "--quiet --delete --recursive"-		, partialParams-		, Param $ addTrailingPathSeparator dummy-		, Param $ rsyncUrl o-		]+remove o k = do+	ps <- sendParams+	withRsyncScratchDir $ \tmp -> liftIO $ do+		{- Send an empty directory to rysnc to make it delete. -}+		let dummy = tmp </> keyFile k+		createDirectoryIfMissing True dummy+		rsync $ rsyncOptions o ++ ps +++			map (\s -> Param $ "--include=" ++ s) includes +++			[ Param "--exclude=*" -- exclude everything else+			, Params "--quiet --delete --recursive"+			, partialParams+			, Param $ addTrailingPathSeparator dummy+			, Param $ rsyncUrl o+			]   where 	{- Specify include rules to match the directories where the 	 - content could be. Note that the parent directories have@@ -200,14 +208,27 @@ partialParams :: CommandParam partialParams = Params "--partial --partial-dir=.rsync-partial" +{- When sending files from crippled filesystems, the permissions can be all+ - messed up, and it's better to use the default permissions on the+ - destination. -}+sendParams :: Annex [CommandParam]+sendParams = ifM crippledFileSystem+	( return [rsyncUseDestinationPermissions]+	, return []+	)+ {- Runs an action in an empty scratch directory that can be used to build  - up trees for rsync. -} withRsyncScratchDir :: (FilePath -> Annex Bool) -> Annex Bool withRsyncScratchDir a = do-	pid <- liftIO getProcessID+#ifndef __WINDOWS__+	v <- liftIO getProcessID+#else+	v <- liftIO (getStdRandom random :: IO Int)+#endif 	t <- fromRepo gitAnnexTmpDir 	createAnnexDirectory t-	let tmp = t </> "rsynctmp" </> show pid+	let tmp = t </> "rsynctmp" </> show v 	nuke tmp 	liftIO $ createDirectoryIfMissing True tmp 	nuke tmp `after` a tmp@@ -221,7 +242,7 @@ 		-- use inplace when retrieving to support resuming 		[ Param "--inplace" 		, Param u-		, Param dest+		, File dest 		]  rsyncRemote :: RsyncOpts -> (Maybe MeterUpdate) -> [CommandParam] -> Annex Bool@@ -258,15 +279,20 @@ 		else ifM crippledFileSystem 			( liftIO $ copyFileExternal src dest 			, do+#ifndef __WINDOWS__ 				liftIO $ createLink src dest 				return True+#else+				liftIO $ copyFileExternal src dest+#endif 			)+	ps <- sendParams 	if ok-		then rsyncRemote o (Just callback)+		then rsyncRemote o (Just callback) $ ps ++ 			[ Param "--recursive" 			, partialParams 			-- tmp/ to send contents of tmp dir-			, Param $ addTrailingPathSeparator tmp+			, File $ addTrailingPathSeparator tmp 			, Param $ rsyncUrl o 			] 		else return False
Seek.hs view
@@ -11,6 +11,8 @@  module Seek where +import System.PosixCompat.Files+ import Common.Annex import Types.Command import Types.Key
Setup.o view

binary file changed (16360 → 10440 bytes)

Test.hs view
@@ -11,13 +11,12 @@ import Test.QuickCheck import Test.QuickCheck.Test -import System.Posix.Directory (changeWorkingDirectory) import System.Posix.Files-import System.Posix.Env import Control.Exception.Extensible import qualified Data.Map as M import System.IO.HVFS (SystemFS(..)) import qualified Text.JSON+import System.Path  import Common @@ -42,6 +41,7 @@ import qualified Remote import qualified Types.Key import qualified Types.Messages+import qualified Config import qualified Config.Cost import qualified Crypto import qualified Utility.Path@@ -53,7 +53,10 @@ import qualified Utility.Process import qualified Utility.Misc import qualified Utility.InodeCache+import qualified Utility.Env +type TestEnv = M.Map String String+ main :: IO () main = do 	divider@@ -64,10 +67,10 @@ 	putStrLn "Now, some broader checks ..." 	putStrLn "  (Do not be alarmed by odd output here; it's normal."         putStrLn "   wait for the last line to see how it went.)"-	prepare+	env <- prepare 	rs <- forM hunit $ \t -> do 		divider-		t+		t env 	cleanup tmpdir 	divider 	propigate rs qcok@@ -119,7 +122,7 @@ 		putStrLn desc 		quickCheckResult prop -hunit :: [IO Counts]+hunit :: [TestEnv -> IO Counts] hunit = 	-- test order matters, later tests may rely on state from earlier 	[ check "init" test_init@@ -155,241 +158,237 @@ 	, check "crypto" test_crypto 	]   where-	check desc t = do+	check desc t env = do 		putStrLn desc-		runTestTT t+		runTestTT (t env) -test_init :: Test-test_init = "git-annex init" ~: TestCase $ innewrepo $ do-	git_annex "init" [reponame] @? "init failed"+test_init :: TestEnv -> Test+test_init env = "git-annex init" ~: TestCase $ innewrepo env $ do+	git_annex env "init" [reponame] @? "init failed"   where 	reponame = "test repo" -test_add :: Test-test_add = "git-annex add" ~: TestList [basic, sha1dup, subdirs]+test_add :: TestEnv -> Test+test_add env = "git-annex add" ~: TestList [basic, sha1dup, subdirs]   where 	-- this test case runs in the main repo, to set up a basic 	-- annexed file that later tests will use-	basic = TestCase $ inmainrepo $ do+	basic = TestCase $ inmainrepo env $ do 		writeFile annexedfile $ content annexedfile-		git_annex "add" [annexedfile] @? "add failed"+		git_annex env "add" [annexedfile] @? "add failed" 		annexed_present annexedfile 		writeFile sha1annexedfile $ content sha1annexedfile-		git_annex "add" [sha1annexedfile, "--backend=SHA1"] @? "add with SHA1 failed"+		git_annex env "add" [sha1annexedfile, "--backend=SHA1"] @? "add with SHA1 failed" 		annexed_present sha1annexedfile 		checkbackend sha1annexedfile backendSHA1 		writeFile wormannexedfile $ content wormannexedfile-		git_annex "add" [wormannexedfile, "--backend=WORM"] @? "add with WORM failed"+		git_annex env "add" [wormannexedfile, "--backend=WORM"] @? "add with WORM failed" 		annexed_present wormannexedfile 		checkbackend wormannexedfile backendWORM 		boolSystem "git" [Params "rm --force -q", File wormannexedfile] @? "git rm failed" 		writeFile ingitfile $ content ingitfile 		boolSystem "git" [Param "add", File ingitfile] @? "git add failed"-		boolSystem "git" [Params "commit -q -a -m commit"] @? "git commit failed"-		git_annex "add" [ingitfile] @? "add ingitfile should be no-op"+		boolSystem "git" [Params "commit -q -m commit"] @? "git commit failed"+		git_annex env "add" [ingitfile] @? "add ingitfile should be no-op" 		unannexed ingitfile-	sha1dup = TestCase $ intmpclonerepo $ do+	sha1dup = TestCase $ intmpclonerepo env $ do 		writeFile sha1annexedfiledup $ content sha1annexedfiledup-		git_annex "add" [sha1annexedfiledup, "--backend=SHA1"] @? "add of second file with same SHA1 failed"+		git_annex env "add" [sha1annexedfiledup, "--backend=SHA1"] @? "add of second file with same SHA1 failed" 		annexed_present sha1annexedfiledup 		annexed_present sha1annexedfile-	subdirs = TestCase $ intmpclonerepo $ do+	subdirs = TestCase $ intmpclonerepo env $ do 		createDirectory "dir" 		writeFile "dir/foo" $ content annexedfile-		git_annex "add" ["dir"] @? "add of subdir failed"+		git_annex env "add" ["dir"] @? "add of subdir failed" 		createDirectory "dir2" 		writeFile "dir2/foo" $ content annexedfile-		changeWorkingDirectory "dir"-		git_annex "add" ["../dir2"] @? "add of ../subdir failed"+		setCurrentDirectory "dir"+		git_annex env "add" ["../dir2"] @? "add of ../subdir failed" -test_reinject :: Test-test_reinject = "git-annex reinject/fromkey" ~: TestCase $ intmpclonerepo $ do-	git_annex "drop" ["--force", sha1annexedfile] @? "drop failed"+test_reinject :: TestEnv -> Test+test_reinject env = "git-annex reinject/fromkey" ~: TestCase $ intmpclonerepo env $ do+	git_annex env "drop" ["--force", sha1annexedfile] @? "drop failed" 	writeFile tmp $ content sha1annexedfile 	r <- annexeval $ Types.Backend.getKey backendSHA1 $ 		Types.KeySource.KeySource { Types.KeySource.keyFilename = tmp, Types.KeySource.contentLocation = tmp, Types.KeySource.inodeCache = Nothing } 	let key = Types.Key.key2file $ fromJust r-	git_annex "reinject" [tmp, sha1annexedfile] @? "reinject failed"-	git_annex "fromkey" [key, sha1annexedfiledup] @? "fromkey failed"+	git_annex env "reinject" [tmp, sha1annexedfile] @? "reinject failed"+	git_annex env "fromkey" [key, sha1annexedfiledup] @? "fromkey failed for dup" 	annexed_present sha1annexedfiledup   where 	tmp = "tmpfile" -test_unannex :: Test-test_unannex = "git-annex unannex" ~: TestList [nocopy, withcopy]+test_unannex :: TestEnv -> Test+test_unannex env = "git-annex unannex" ~: TestList [nocopy, withcopy]   where-	nocopy = "no content" ~: intmpclonerepo $ do+	nocopy = "no content" ~: intmpclonerepo env $ do 		annexed_notpresent annexedfile-		git_annex "unannex" [annexedfile] @? "unannex failed with no copy"+		git_annex env "unannex" [annexedfile] @? "unannex failed with no copy" 		annexed_notpresent annexedfile-	withcopy = "with content" ~: intmpclonerepo $ do-		git_annex "get" [annexedfile] @? "get failed"+	withcopy = "with content" ~: intmpclonerepo env $ do+		git_annex env "get" [annexedfile] @? "get failed" 		annexed_present annexedfile-		git_annex "unannex" [annexedfile, sha1annexedfile] @? "unannex failed"+		git_annex env "unannex" [annexedfile, sha1annexedfile] @? "unannex failed" 		unannexed annexedfile-		git_annex "unannex" [annexedfile] @? "unannex failed on non-annexed file"+		git_annex env "unannex" [annexedfile] @? "unannex failed on non-annexed file" 		unannexed annexedfile-		git_annex "unannex" [ingitfile] @? "unannex ingitfile should be no-op"+		git_annex env "unannex" [ingitfile] @? "unannex ingitfile should be no-op" 		unannexed ingitfile -test_drop :: Test-test_drop = "git-annex drop" ~: TestList [noremote, withremote, untrustedremote]+test_drop :: TestEnv -> Test+test_drop env = "git-annex drop" ~: TestList [noremote, withremote, untrustedremote]   where-	noremote = "no remotes" ~: TestCase $ intmpclonerepo $ do-		git_annex "get" [annexedfile] @? "get failed"+	noremote = "no remotes" ~: TestCase $ intmpclonerepo env $ do+		git_annex env "get" [annexedfile] @? "get failed" 		boolSystem "git" [Params "remote rm origin"] 			@? "git remote rm origin failed"-		not <$> git_annex "drop" [annexedfile] @? "drop wrongly succeeded with no known copy of file"+		not <$> git_annex env "drop" [annexedfile] @? "drop wrongly succeeded with no known copy of file" 		annexed_present annexedfile-		git_annex "drop" ["--force", annexedfile] @? "drop --force failed"+		git_annex env "drop" ["--force", annexedfile] @? "drop --force failed" 		annexed_notpresent annexedfile-		git_annex "drop" [annexedfile] @? "drop of dropped file failed"-		git_annex "drop" [ingitfile] @? "drop ingitfile should be no-op"+		git_annex env "drop" [annexedfile] @? "drop of dropped file failed"+		git_annex env "drop" [ingitfile] @? "drop ingitfile should be no-op" 		unannexed ingitfile-	withremote = "with remote" ~: TestCase $ intmpclonerepo $ do-		git_annex "get" [annexedfile] @? "get failed"+	withremote = "with remote" ~: TestCase $ intmpclonerepo env $ do+		git_annex env "get" [annexedfile] @? "get failed" 		annexed_present annexedfile-		git_annex "drop" [annexedfile] @? "drop failed though origin has copy"+		git_annex env "drop" [annexedfile] @? "drop failed though origin has copy" 		annexed_notpresent annexedfile-		inmainrepo $ annexed_present annexedfile-	untrustedremote = "untrusted remote" ~: TestCase $ intmpclonerepo $ do-		git_annex "untrust" ["origin"] @? "untrust of origin failed"-		git_annex "get" [annexedfile] @? "get failed"+		inmainrepo env $ annexed_present annexedfile+	untrustedremote = "untrusted remote" ~: TestCase $ intmpclonerepo env $ do+		git_annex env "untrust" ["origin"] @? "untrust of origin failed"+		git_annex env "get" [annexedfile] @? "get failed" 		annexed_present annexedfile-		not <$> git_annex "drop" [annexedfile] @? "drop wrongly suceeded with only an untrusted copy of the file"+		not <$> git_annex env "drop" [annexedfile] @? "drop wrongly suceeded with only an untrusted copy of the file" 		annexed_present annexedfile-		inmainrepo $ annexed_present annexedfile+		inmainrepo env $ annexed_present annexedfile -test_get :: Test-test_get = "git-annex get" ~: TestCase $ intmpclonerepo $ do-	inmainrepo $ annexed_present annexedfile+test_get :: TestEnv -> Test+test_get env = "git-annex get" ~: TestCase $ intmpclonerepo env $ do+	inmainrepo env $ annexed_present annexedfile 	annexed_notpresent annexedfile-	git_annex "get" [annexedfile] @? "get of file failed"-	inmainrepo $ annexed_present annexedfile+	git_annex env "get" [annexedfile] @? "get of file failed"+	inmainrepo env $ annexed_present annexedfile 	annexed_present annexedfile-	git_annex "get" [annexedfile] @? "get of file already here failed"-	inmainrepo $ annexed_present annexedfile+	git_annex env "get" [annexedfile] @? "get of file already here failed"+	inmainrepo env $ annexed_present annexedfile 	annexed_present annexedfile-	inmainrepo $ unannexed ingitfile+	inmainrepo env $ unannexed ingitfile 	unannexed ingitfile-	git_annex "get" [ingitfile] @? "get ingitfile should be no-op"-	inmainrepo $ unannexed ingitfile+	git_annex env "get" [ingitfile] @? "get ingitfile should be no-op"+	inmainrepo env $ unannexed ingitfile 	unannexed ingitfile -test_move :: Test-test_move = "git-annex move" ~: TestCase $ intmpclonerepo $ do+test_move :: TestEnv -> Test+test_move env = "git-annex move" ~: TestCase $ intmpclonerepo env $ do 	annexed_notpresent annexedfile-	inmainrepo $ annexed_present annexedfile-	git_annex "move" ["--from", "origin", annexedfile] @? "move --from of file failed"+	inmainrepo env $ annexed_present annexedfile+	git_annex env "move" ["--from", "origin", annexedfile] @? "move --from of file failed" 	annexed_present annexedfile-	inmainrepo $ annexed_notpresent annexedfile-	git_annex "move" ["--from", "origin", annexedfile] @? "move --from of file already here failed"+	inmainrepo env $ annexed_notpresent annexedfile+	git_annex env "move" ["--from", "origin", annexedfile] @? "move --from of file already here failed" 	annexed_present annexedfile-	inmainrepo $ annexed_notpresent annexedfile-	git_annex "move" ["--to", "origin", annexedfile] @? "move --to of file failed"-	inmainrepo $ annexed_present annexedfile+	inmainrepo env $ annexed_notpresent annexedfile+	git_annex env "move" ["--to", "origin", annexedfile] @? "move --to of file failed"+	inmainrepo env $ annexed_present annexedfile 	annexed_notpresent annexedfile-	git_annex "move" ["--to", "origin", annexedfile] @? "move --to of file already there failed"-	inmainrepo $ annexed_present annexedfile+	git_annex env "move" ["--to", "origin", annexedfile] @? "move --to of file already there failed"+	inmainrepo env $ annexed_present annexedfile 	annexed_notpresent annexedfile 	unannexed ingitfile-	inmainrepo $ unannexed ingitfile-	git_annex "move" ["--to", "origin", ingitfile] @? "move of ingitfile should be no-op"+	inmainrepo env $ unannexed ingitfile+	git_annex env "move" ["--to", "origin", ingitfile] @? "move of ingitfile should be no-op" 	unannexed ingitfile-	inmainrepo $ unannexed ingitfile-	git_annex "move" ["--from", "origin", ingitfile] @? "move of ingitfile should be no-op"+	inmainrepo env $ unannexed ingitfile+	git_annex env "move" ["--from", "origin", ingitfile] @? "move of ingitfile should be no-op" 	unannexed ingitfile-	inmainrepo $ unannexed ingitfile+	inmainrepo env $ unannexed ingitfile -test_copy :: Test-test_copy = "git-annex copy" ~: TestCase $ intmpclonerepo $ do+test_copy :: TestEnv -> Test+test_copy env = "git-annex copy" ~: TestCase $ intmpclonerepo env $ do 	annexed_notpresent annexedfile-	inmainrepo $ annexed_present annexedfile-	git_annex "copy" ["--from", "origin", annexedfile] @? "copy --from of file failed"+	inmainrepo env $ annexed_present annexedfile+	git_annex env "copy" ["--from", "origin", annexedfile] @? "copy --from of file failed" 	annexed_present annexedfile-	inmainrepo $ annexed_present annexedfile-	git_annex "copy" ["--from", "origin", annexedfile] @? "copy --from of file already here failed"+	inmainrepo env $ annexed_present annexedfile+	git_annex env "copy" ["--from", "origin", annexedfile] @? "copy --from of file already here failed" 	annexed_present annexedfile-	inmainrepo $ annexed_present annexedfile-	git_annex "copy" ["--to", "origin", annexedfile] @? "copy --to of file already there failed"+	inmainrepo env $ annexed_present annexedfile+	git_annex env "copy" ["--to", "origin", annexedfile] @? "copy --to of file already there failed" 	annexed_present annexedfile-	inmainrepo $ annexed_present annexedfile-	git_annex "move" ["--to", "origin", annexedfile] @? "move --to of file already there failed"+	inmainrepo env $ annexed_present annexedfile+	git_annex env "move" ["--to", "origin", annexedfile] @? "move --to of file already there failed" 	annexed_notpresent annexedfile-	inmainrepo $ annexed_present annexedfile+	inmainrepo env $ annexed_present annexedfile 	unannexed ingitfile-	inmainrepo $ unannexed ingitfile-	git_annex "copy" ["--to", "origin", ingitfile] @? "copy of ingitfile should be no-op"+	inmainrepo env $ unannexed ingitfile+	git_annex env "copy" ["--to", "origin", ingitfile] @? "copy of ingitfile should be no-op" 	unannexed ingitfile-	inmainrepo $ unannexed ingitfile-	git_annex "copy" ["--from", "origin", ingitfile] @? "copy of ingitfile should be no-op"+	inmainrepo env $ unannexed ingitfile+	git_annex env "copy" ["--from", "origin", ingitfile] @? "copy of ingitfile should be no-op" 	checkregularfile ingitfile 	checkcontent ingitfile -test_lock :: Test-test_lock = "git-annex unlock/lock" ~: intmpclonerepo $ do+test_lock :: TestEnv -> Test+test_lock env = "git-annex unlock/lock" ~: intmpclonerepo env $ do 	-- regression test: unlock of not present file should skip it 	annexed_notpresent annexedfile-	not <$> git_annex "unlock" [annexedfile] @? "unlock failed to fail with not present file"+	not <$> git_annex env "unlock" [annexedfile] @? "unlock failed to fail with not present file" 	annexed_notpresent annexedfile -	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "unlock" [annexedfile] @? "unlock failed"		+	git_annex env "unlock" [annexedfile] @? "unlock failed"		 	unannexed annexedfile 	-- write different content, to verify that lock 	-- throws it away 	changecontent annexedfile 	writeFile annexedfile $ content annexedfile ++ "foo"-	git_annex "lock" [annexedfile] @? "lock failed"+	git_annex env "lock" [annexedfile] @? "lock failed" 	annexed_present annexedfile-	git_annex "unlock" [annexedfile] @? "unlock failed"		+	git_annex env "unlock" [annexedfile] @? "unlock failed"		 	unannexed annexedfile 	changecontent annexedfile-	git_annex "add" [annexedfile] @? "add of modified file failed"+	git_annex env "add" [annexedfile] @? "add of modified file failed" 	runchecks [checklink, checkunwritable] annexedfile 	c <- readFile annexedfile 	assertEqual "content of modified file" c (changedcontent annexedfile)-	r' <- git_annex "drop" [annexedfile]+	r' <- git_annex env "drop" [annexedfile] 	not r' @? "drop wrongly succeeded with no known copy of modified file" -test_edit :: Test-test_edit = "git-annex edit/commit" ~: TestList [t False, t True]-  where t precommit = TestCase $ intmpclonerepo $ do-	git_annex "get" [annexedfile] @? "get of file failed"+test_edit :: TestEnv -> Test+test_edit env = "git-annex edit/commit" ~: TestList [t False, t True]+  where t precommit = TestCase $ intmpclonerepo env $ do+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "edit" [annexedfile] @? "edit failed"+	git_annex env "edit" [annexedfile] @? "edit failed" 	unannexed annexedfile 	changecontent annexedfile+	boolSystem "git" [Param "add", File annexedfile]+		@? "git add of edited file failed" 	if precommit-		then do-			-- pre-commit depends on the file being-			-- staged, normally git commit does this-			boolSystem "git" [Param "add", File annexedfile]-				@? "git add of edited file failed"-			git_annex "pre-commit" []-				@? "pre-commit failed"-		else do-			boolSystem "git" [Params "commit -q -a -m contentchanged"]-				@? "git commit of edited file failed"+		then git_annex env "pre-commit" []+			@? "pre-commit failed"+		else boolSystem "git" [Params "commit -q -m contentchanged"]+			@? "git commit of edited file failed" 	runchecks [checklink, checkunwritable] annexedfile 	c <- readFile annexedfile 	assertEqual "content of modified file" c (changedcontent annexedfile)-	not <$> git_annex "drop" [annexedfile] @? "drop wrongly succeeded with no known copy of modified file"+	not <$> git_annex env "drop" [annexedfile] @? "drop wrongly succeeded with no known copy of modified file" -test_fix :: Test-test_fix = "git-annex fix" ~: intmpclonerepo $ do+test_fix :: TestEnv -> Test+test_fix env = "git-annex fix" ~: intmpclonerepo env $ do 	annexed_notpresent annexedfile-	git_annex "fix" [annexedfile] @? "fix of not present failed"+	git_annex env "fix" [annexedfile] @? "fix of not present failed" 	annexed_notpresent annexedfile-	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "fix" [annexedfile] @? "fix of present file failed"+	git_annex env "fix" [annexedfile] @? "fix of present file failed" 	annexed_present annexedfile 	createDirectory subdir 	boolSystem "git" [Param "mv", File annexedfile, File subdir] 		@? "git mv failed"-	git_annex "fix" [newfile] @? "fix of moved file failed"+	git_annex env "fix" [newfile] @? "fix of moved file failed" 	runchecks [checklink, checkunwritable] newfile 	c <- readFile newfile 	assertEqual "content of moved file" c (content annexedfile)@@ -397,23 +396,23 @@ 	subdir = "s" 	newfile = subdir ++ "/" ++ annexedfile -test_trust :: Test-test_trust = "git-annex trust/untrust/semitrust/dead" ~: intmpclonerepo $ do-	git_annex "trust" [repo] @? "trust failed"+test_trust :: TestEnv -> Test+test_trust env = "git-annex trust/untrust/semitrust/dead" ~: intmpclonerepo env $ do+	git_annex env "trust" [repo] @? "trust failed" 	trustcheck Logs.Trust.Trusted "trusted 1"-	git_annex "trust" [repo] @? "trust of trusted failed"+	git_annex env "trust" [repo] @? "trust of trusted failed" 	trustcheck Logs.Trust.Trusted "trusted 2"-	git_annex "untrust" [repo] @? "untrust failed"+	git_annex env "untrust" [repo] @? "untrust failed" 	trustcheck Logs.Trust.UnTrusted "untrusted 1"-	git_annex "untrust" [repo] @? "untrust of untrusted failed"+	git_annex env "untrust" [repo] @? "untrust of untrusted failed" 	trustcheck Logs.Trust.UnTrusted "untrusted 2"-	git_annex "dead" [repo] @? "dead failed"+	git_annex env "dead" [repo] @? "dead failed" 	trustcheck Logs.Trust.DeadTrusted "deadtrusted 1"-	git_annex "dead" [repo] @? "dead of dead failed"+	git_annex env "dead" [repo] @? "dead of dead failed" 	trustcheck Logs.Trust.DeadTrusted "deadtrusted 2"-	git_annex "semitrust" [repo] @? "semitrust failed"+	git_annex env "semitrust" [repo] @? "semitrust failed" 	trustcheck Logs.Trust.SemiTrusted "semitrusted 1"-	git_annex "semitrust" [repo] @? "semitrust of semitrusted failed"+	git_annex env "semitrust" [repo] @? "semitrust of semitrusted failed" 	trustcheck Logs.Trust.SemiTrusted "semitrusted 2"   where 	repo = "origin"@@ -424,64 +423,64 @@ 			return $ u `elem` l 		assertBool msg present -test_fsck :: Test-test_fsck = "git-annex fsck" ~: TestList [basicfsck, barefsck, withlocaluntrusted, withremoteuntrusted]+test_fsck :: TestEnv -> Test+test_fsck env = "git-annex fsck" ~: TestList [basicfsck, barefsck, withlocaluntrusted, withremoteuntrusted]   where-	basicfsck = TestCase $ intmpclonerepo $ do-		git_annex "fsck" [] @? "fsck failed"+	basicfsck = TestCase $ intmpclonerepo env $ do+		git_annex env "fsck" [] @? "fsck failed" 		boolSystem "git" [Params "config annex.numcopies 2"] @? "git config failed" 		fsck_should_fail "numcopies unsatisfied" 		boolSystem "git" [Params "config annex.numcopies 1"] @? "git config failed" 		corrupt annexedfile 		corrupt sha1annexedfile-	barefsck = TestCase $ intmpbareclonerepo $ do-		git_annex "fsck" [] @? "fsck failed"-	withlocaluntrusted = TestCase $ intmpclonerepo $ do-		git_annex "get" [annexedfile] @? "get failed"-		git_annex "untrust" ["origin"] @? "untrust of origin repo failed"-		git_annex "untrust" ["."] @? "untrust of current repo failed"+	barefsck = TestCase $ intmpbareclonerepo env $ do+		git_annex env "fsck" [] @? "fsck failed"+	withlocaluntrusted = TestCase $ intmpclonerepo env $ do+		git_annex env "get" [annexedfile] @? "get failed"+		git_annex env "untrust" ["origin"] @? "untrust of origin repo failed"+		git_annex env "untrust" ["."] @? "untrust of current repo failed" 		fsck_should_fail "content only available in untrusted (current) repository"-		git_annex "trust" ["."] @? "trust of current repo failed"-		git_annex "fsck" [annexedfile] @? "fsck failed on file present in trusted repo"-	withremoteuntrusted = TestCase $ intmpclonerepo $ do+		git_annex env "trust" ["."] @? "trust of current repo failed"+		git_annex env "fsck" [annexedfile] @? "fsck failed on file present in trusted repo"+	withremoteuntrusted = TestCase $ intmpclonerepo env $ do 		boolSystem "git" [Params "config annex.numcopies 2"] @? "git config failed"-		git_annex "get" [annexedfile] @? "get failed"-		git_annex "get" [sha1annexedfile] @? "get failed"-		git_annex "fsck" [] @? "fsck failed with numcopies=2 and 2 copies"-		git_annex "untrust" ["origin"] @? "untrust of origin failed"+		git_annex env "get" [annexedfile] @? "get failed"+		git_annex env "get" [sha1annexedfile] @? "get failed"+		git_annex env "fsck" [] @? "fsck failed with numcopies=2 and 2 copies"+		git_annex env "untrust" ["origin"] @? "untrust of origin failed" 		fsck_should_fail "content not replicated to enough non-untrusted repositories"  	corrupt f = do-		git_annex "get" [f] @? "get of file failed"+		git_annex env "get" [f] @? "get of file failed" 		Utility.FileMode.allowWrite f 		writeFile f (changedcontent f)-		not <$> git_annex "fsck" [] @? "fsck failed to fail with corrupted file content"-		git_annex "fsck" [] @? "fsck unexpectedly failed again; previous one did not fix problem with " ++ f+		not <$> git_annex env "fsck" [] @? "fsck failed to fail with corrupted file content"+		git_annex env "fsck" [] @? "fsck unexpectedly failed again; previous one did not fix problem with " ++ f 	fsck_should_fail m = do-		not <$> git_annex "fsck" [] @? "fsck failed to fail with " ++ m+		not <$> git_annex env "fsck" [] @? "fsck failed to fail with " ++ m -test_migrate :: Test-test_migrate = "git-annex migrate" ~: TestList [t False, t True]-  where t usegitattributes = TestCase $ intmpclonerepo $ do+test_migrate :: TestEnv -> Test+test_migrate env = "git-annex migrate" ~: TestList [t False, t True]+  where t usegitattributes = TestCase $ intmpclonerepo env $ do 	annexed_notpresent annexedfile 	annexed_notpresent sha1annexedfile-	git_annex "migrate" [annexedfile] @? "migrate of not present failed"-	git_annex "migrate" [sha1annexedfile] @? "migrate of not present failed"-	git_annex "get" [annexedfile] @? "get of file failed"-	git_annex "get" [sha1annexedfile] @? "get of file failed"+	git_annex env "migrate" [annexedfile] @? "migrate of not present failed"+	git_annex env "migrate" [sha1annexedfile] @? "migrate of not present failed"+	git_annex env "get" [annexedfile] @? "get of file failed"+	git_annex env "get" [sha1annexedfile] @? "get of file failed" 	annexed_present annexedfile 	annexed_present sha1annexedfile 	if usegitattributes 		then do 			writeFile ".gitattributes" $ "* annex.backend=SHA1"-			git_annex "migrate" [sha1annexedfile]+			git_annex env "migrate" [sha1annexedfile] 				@? "migrate sha1annexedfile failed"-			git_annex "migrate" [annexedfile]+			git_annex env "migrate" [annexedfile] 				@? "migrate annexedfile failed" 		else do-			git_annex "migrate" [sha1annexedfile, "--backend", "SHA1"]+			git_annex env "migrate" [sha1annexedfile, "--backend", "SHA1"] 				@? "migrate sha1annexedfile failed"-			git_annex "migrate" [annexedfile, "--backend", "SHA1"]+			git_annex env "migrate" [annexedfile, "--backend", "SHA1"] 				@? "migrate annexedfile failed" 	annexed_present annexedfile 	annexed_present sha1annexedfile@@ -490,22 +489,22 @@  	-- check that reversing a migration works 	writeFile ".gitattributes" $ "* annex.backend=SHA256"-	git_annex "migrate" [sha1annexedfile]+	git_annex env "migrate" [sha1annexedfile] 		@? "migrate sha1annexedfile failed"-	git_annex "migrate" [annexedfile]+	git_annex env "migrate" [annexedfile] 		@? "migrate annexedfile failed" 	annexed_present annexedfile 	annexed_present sha1annexedfile 	checkbackend annexedfile backendSHA256 	checkbackend sha1annexedfile backendSHA256 -test_unused :: Test-test_unused = "git-annex unused/dropunused" ~: intmpclonerepo $ do+test_unused :: TestEnv -> Test+test_unused env = "git-annex unused/dropunused" ~: intmpclonerepo env $ do 	-- keys have to be looked up before files are removed 	annexedfilekey <- annexeval $ findkey annexedfile 	sha1annexedfilekey <- annexeval $ findkey sha1annexedfile-	git_annex "get" [annexedfile] @? "get of file failed"-	git_annex "get" [sha1annexedfile] @? "get of file failed"+	git_annex env "get" [annexedfile] @? "get of file failed"+	git_annex env "get" [sha1annexedfile] @? "get of file failed" 	checkunused [] "after get" 	boolSystem "git" [Params "rm -q", File annexedfile] @? "git rm failed" 	checkunused [] "after rm"@@ -519,17 +518,17 @@ 	checkunused [annexedfilekey, sha1annexedfilekey] "after rm sha1annexedfile"  	-- good opportunity to test dropkey also-	git_annex "dropkey" ["--force", Types.Key.key2file annexedfilekey]+	git_annex env "dropkey" ["--force", Types.Key.key2file annexedfilekey] 		@? "dropkey failed" 	checkunused [sha1annexedfilekey] ("after dropkey --force " ++ Types.Key.key2file annexedfilekey) -	git_annex "dropunused" ["1", "2"] @? "dropunused failed"+	git_annex env "dropunused" ["1", "2"] @? "dropunused failed" 	checkunused [] "after dropunused"-	git_annex "dropunused" ["10", "501"] @? "dropunused failed on bogus numbers"+	git_annex env "dropunused" ["10", "501"] @? "dropunused failed on bogus numbers"    where 	checkunused expectedkeys desc = do-		git_annex "unused" [] @? "unused failed"+		git_annex env "unused" [] @? "unused failed" 		unusedmap <- annexeval $ Logs.Unused.readUnusedLog "" 		let unusedkeys = M.elems unusedmap 		assertEqual ("unused keys differ " ++ desc)@@ -538,119 +537,119 @@ 		r <- Backend.lookupFile f 		return $ fst $ fromJust r -test_describe :: Test-test_describe = "git-annex describe" ~: intmpclonerepo $ do-	git_annex "describe" [".", "this repo"] @? "describe 1 failed"-	git_annex "describe" ["origin", "origin repo"] @? "describe 2 failed"+test_describe :: TestEnv -> Test+test_describe env = "git-annex describe" ~: intmpclonerepo env $ do+	git_annex env "describe" [".", "this repo"] @? "describe 1 failed"+	git_annex env "describe" ["origin", "origin repo"] @? "describe 2 failed" -test_find :: Test-test_find = "git-annex find" ~: intmpclonerepo $ do+test_find :: TestEnv -> Test+test_find env = "git-annex find" ~: intmpclonerepo env $ do 	annexed_notpresent annexedfile-	git_annex_expectoutput "find" [] []-	git_annex "get" [annexedfile] @? "get failed"+	git_annex_expectoutput env "find" [] []+	git_annex env "get" [annexedfile] @? "get failed" 	annexed_present annexedfile 	annexed_notpresent sha1annexedfile-	git_annex_expectoutput "find" [] [annexedfile]-	git_annex_expectoutput "find" ["--exclude", annexedfile, "--and", "--exclude", sha1annexedfile] []-	git_annex_expectoutput "find" ["--include", annexedfile] [annexedfile]-	git_annex_expectoutput "find" ["--not", "--in", "origin"] []-	git_annex_expectoutput "find" ["--copies", "1", "--and", "--not", "--copies", "2"] [sha1annexedfile]-	git_annex_expectoutput "find" ["--inbackend", "SHA1"] [sha1annexedfile]-	git_annex_expectoutput "find" ["--inbackend", "WORM"] []+	git_annex_expectoutput env "find" [] [annexedfile]+	git_annex_expectoutput env "find" ["--exclude", annexedfile, "--and", "--exclude", sha1annexedfile] []+	git_annex_expectoutput env "find" ["--include", annexedfile] [annexedfile]+	git_annex_expectoutput env "find" ["--not", "--in", "origin"] []+	git_annex_expectoutput env "find" ["--copies", "1", "--and", "--not", "--copies", "2"] [sha1annexedfile]+	git_annex_expectoutput env "find" ["--inbackend", "SHA1"] [sha1annexedfile]+	git_annex_expectoutput env "find" ["--inbackend", "WORM"] []  	{- --include=* should match files in subdirectories too, 	 - and --exclude=* should exclude them. -} 	createDirectory "dir" 	writeFile "dir/subfile" "subfile"-	git_annex "add" ["dir"] @? "add of subdir failed"-	git_annex_expectoutput "find" ["--include", "*", "--exclude", annexedfile, "--exclude", sha1annexedfile] ["dir/subfile"]-	git_annex_expectoutput "find" ["--exclude", "*"] []+	git_annex env "add" ["dir"] @? "add of subdir failed"+	git_annex_expectoutput env "find" ["--include", "*", "--exclude", annexedfile, "--exclude", sha1annexedfile] ["dir/subfile"]+	git_annex_expectoutput env "find" ["--exclude", "*"] [] -test_merge :: Test-test_merge = "git-annex merge" ~: intmpclonerepo $ do-	git_annex "merge" [] @? "merge failed"+test_merge :: TestEnv -> Test+test_merge env = "git-annex merge" ~: intmpclonerepo env $ do+	git_annex env "merge" [] @? "merge failed" -test_status :: Test-test_status = "git-annex status" ~: intmpclonerepo $ do-	json <- git_annex_output "status" ["--json"]+test_status :: TestEnv -> Test+test_status env = "git-annex status" ~: intmpclonerepo env $ do+	json <- git_annex_output env "status" ["--json"] 	case Text.JSON.decodeStrict json :: Text.JSON.Result (Text.JSON.JSObject Text.JSON.JSValue) of 		Text.JSON.Ok _ -> return () 		Text.JSON.Error e -> assertFailure e -test_version :: Test-test_version = "git-annex version" ~: intmpclonerepo $ do-	git_annex "version" [] @? "version failed"+test_version :: TestEnv -> Test+test_version env = "git-annex version" ~: intmpclonerepo env $ do+	git_annex env "version" [] @? "version failed" -test_sync :: Test-test_sync = "git-annex sync" ~: intmpclonerepo $ do-	git_annex "sync" [] @? "sync failed"+test_sync :: TestEnv -> Test+test_sync env = "git-annex sync" ~: intmpclonerepo env $ do+	git_annex env "sync" [] @? "sync failed"  {- Regression test for sync merge bug fixed in  - 0214e0fb175a608a49b812d81b4632c081f63027 -}-test_sync_regression :: Test-test_sync_regression = "git-annex sync_regression" ~:+test_sync_regression :: TestEnv -> Test+test_sync_regression env = "git-annex sync_regression" ~: 	{- We need 3 repos to see this bug. -}-	withtmpclonerepo False $ \r1 -> do-		withtmpclonerepo False $ \r2 -> do-			withtmpclonerepo False $ \r3 -> do-				forM_ [r1, r2, r3] $ \r -> indir r $ do+	withtmpclonerepo env False $ \r1 -> do+		withtmpclonerepo env False $ \r2 -> do+			withtmpclonerepo env False $ \r3 -> do+				forM_ [r1, r2, r3] $ \r -> indir env r $ do 					when (r /= r1) $ 						boolSystem "git" [Params "remote add r1", File ("../../" ++ r1)] @? "remote add" 					when (r /= r2) $ 						boolSystem "git" [Params "remote add r2", File ("../../" ++ r2)] @? "remote add" 					when (r /= r3) $ 						boolSystem "git" [Params "remote add r3", File ("../../" ++ r3)] @? "remote add"-					git_annex "get" [annexedfile] @? "get failed"+					git_annex env "get" [annexedfile] @? "get failed" 					boolSystem "git" [Params "remote rm origin"] @? "remote rm"-				forM_ [r3, r2, r1] $ \r -> indir r $-					git_annex "sync" [] @? "sync failed"-				forM_ [r3, r2] $ \r -> indir r $-					git_annex "drop" ["--force", annexedfile] @? "drop failed"-				indir r1 $ do-					git_annex "sync" [] @? "sync failed in r1"-					git_annex_expectoutput "find" ["--in", "r3"] []+				forM_ [r3, r2, r1] $ \r -> indir env r $+					git_annex env "sync" [] @? "sync failed"+				forM_ [r3, r2] $ \r -> indir env r $+					git_annex env "drop" ["--force", annexedfile] @? "drop failed"+				indir env r1 $ do+					git_annex env "sync" [] @? "sync failed in r1"+					git_annex_expectoutput env "find" ["--in", "r3"] [] 					{- This was the bug. The sync 					 - mangled location log data and it 					 - thought the file was still in r2 -}-					git_annex_expectoutput "find" ["--in", "r2"] []+					git_annex_expectoutput env "find" ["--in", "r2"] [] -test_map :: Test-test_map = "git-annex map" ~: intmpclonerepo $ do+test_map :: TestEnv -> Test+test_map env = "git-annex map" ~: intmpclonerepo env $ do 	-- set descriptions, that will be looked for in the map-	git_annex "describe" [".", "this repo"] @? "describe 1 failed"-	git_annex "describe" ["origin", "origin repo"] @? "describe 2 failed"+	git_annex env "describe" [".", "this repo"] @? "describe 1 failed"+	git_annex env "describe" ["origin", "origin repo"] @? "describe 2 failed" 	-- --fast avoids it running graphviz, not a build dependency-	git_annex "map" ["--fast"] @? "map failed"+	git_annex env "map" ["--fast"] @? "map failed" -test_uninit :: Test-test_uninit = "git-annex uninit" ~: intmpclonerepo $ do-	git_annex "get" [] @? "get failed"+test_uninit :: TestEnv -> Test+test_uninit env = "git-annex uninit" ~: intmpclonerepo env $ do+	git_annex env "get" [] @? "get failed" 	annexed_present annexedfile 	boolSystem "git" [Params "checkout git-annex"] @? "git checkout git-annex"-	not <$> git_annex "uninit" [] @? "uninit failed to fail when git-annex branch was checked out"+	not <$> git_annex env "uninit" [] @? "uninit failed to fail when git-annex branch was checked out" 	boolSystem "git" [Params "checkout master"] @? "git checkout master"-	_ <- git_annex "uninit" [] -- exit status not checked; does abnormal exit+	_ <- git_annex env "uninit" [] -- exit status not checked; does abnormal exit 	checkregularfile annexedfile 	doesDirectoryExist ".git" @? ".git vanished in uninit" 	not <$> doesDirectoryExist ".git/annex" @? ".git/annex still present after uninit" -test_upgrade :: Test-test_upgrade = "git-annex upgrade" ~: intmpclonerepo $ do-	git_annex "upgrade" [] @? "upgrade from same version failed"+test_upgrade :: TestEnv -> Test+test_upgrade env = "git-annex upgrade" ~: intmpclonerepo env $ do+	git_annex env "upgrade" [] @? "upgrade from same version failed" -test_whereis :: Test-test_whereis = "git-annex whereis" ~: intmpclonerepo $ do+test_whereis :: TestEnv -> Test+test_whereis env = "git-annex whereis" ~: intmpclonerepo env $ do 	annexed_notpresent annexedfile-	git_annex "whereis" [annexedfile] @? "whereis on non-present file failed"-	git_annex "untrust" ["origin"] @? "untrust failed"-	not <$> git_annex "whereis" [annexedfile] @? "whereis on non-present file only present in untrusted repo failed to fail"-	git_annex "get" [annexedfile] @? "get failed"+	git_annex env "whereis" [annexedfile] @? "whereis on non-present file failed"+	git_annex env "untrust" ["origin"] @? "untrust failed"+	not <$> git_annex env "whereis" [annexedfile] @? "whereis on non-present file only present in untrusted repo failed to fail"+	git_annex env "get" [annexedfile] @? "get failed" 	annexed_present annexedfile-	git_annex "whereis" [annexedfile] @? "whereis on present file failed"+	git_annex env "whereis" [annexedfile] @? "whereis on present file failed" -test_hook_remote :: Test-test_hook_remote = "git-annex hook remote" ~: intmpclonerepo $ do-	git_annex "initremote" (words "foo type=hook encryption=none hooktype=foo") @? "initremote failed"+test_hook_remote :: TestEnv -> Test+test_hook_remote env = "git-annex hook remote" ~: intmpclonerepo env $ do+	git_annex env "initremote" (words "foo type=hook encryption=none hooktype=foo") @? "initremote failed" 	createDirectory dir 	git_config "annex.foo-store-hook" $ 		"cp $ANNEX_FILE " ++ loc@@ -660,15 +659,15 @@ 		"rm -f " ++ loc 	git_config "annex.foo-checkpresent-hook" $ 		"if [ -e " ++ loc ++ " ]; then echo $ANNEX_KEY; fi"-	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "copy" [annexedfile, "--to", "foo"] @? "copy --to hook remote failed"+	git_annex env "copy" [annexedfile, "--to", "foo"] @? "copy --to hook remote failed" 	annexed_present annexedfile-	git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed"+	git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed" 	annexed_notpresent annexedfile-	git_annex "move" [annexedfile, "--from", "foo"] @? "move --from hook remote failed"+	git_annex env "move" [annexedfile, "--from", "foo"] @? "move --from hook remote failed" 	annexed_present annexedfile-	not <$> git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail"+	not <$> git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail" 	annexed_present annexedfile   where 	dir = "dir"@@ -676,61 +675,59 @@ 	git_config k v = boolSystem "git" [Param "config", Param k, Param v] 		@? "git config failed" -test_directory_remote :: Test-test_directory_remote = "git-annex directory remote" ~: intmpclonerepo $ do+test_directory_remote :: TestEnv -> Test+test_directory_remote env = "git-annex directory remote" ~: intmpclonerepo env $ do 	createDirectory "dir"-	git_annex "initremote" (words $ "foo type=directory encryption=none directory=dir") @? "initremote failed"-	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "initremote" (words $ "foo type=directory encryption=none directory=dir") @? "initremote failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "copy" [annexedfile, "--to", "foo"] @? "copy --to directory remote failed"+	git_annex env "copy" [annexedfile, "--to", "foo"] @? "copy --to directory remote failed" 	annexed_present annexedfile-	git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed"+	git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed" 	annexed_notpresent annexedfile-	git_annex "move" [annexedfile, "--from", "foo"] @? "move --from directory remote failed"+	git_annex env "move" [annexedfile, "--from", "foo"] @? "move --from directory remote failed" 	annexed_present annexedfile-	not <$> git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail"+	not <$> git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail" 	annexed_present annexedfile -test_rsync_remote :: Test-test_rsync_remote = "git-annex rsync remote" ~: intmpclonerepo $ do+test_rsync_remote :: TestEnv -> Test+test_rsync_remote env = "git-annex rsync remote" ~: intmpclonerepo env $ do 	createDirectory "dir"-	git_annex "initremote" (words $ "foo type=rsync encryption=none rsyncurl=dir") @? "initremote failed"-	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "initremote" (words $ "foo type=rsync encryption=none rsyncurl=dir") @? "initremote failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "copy" [annexedfile, "--to", "foo"] @? "copy --to rsync remote failed"+	git_annex env "copy" [annexedfile, "--to", "foo"] @? "copy --to rsync remote failed" 	annexed_present annexedfile-	git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed"+	git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed" 	annexed_notpresent annexedfile-	git_annex "move" [annexedfile, "--from", "foo"] @? "move --from rsync remote failed"+	git_annex env "move" [annexedfile, "--from", "foo"] @? "move --from rsync remote failed" 	annexed_present annexedfile-	not <$> git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail"+	not <$> git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail" 	annexed_present annexedfile -test_bup_remote :: Test-test_bup_remote = "git-annex bup remote" ~: intmpclonerepo $ when Build.SysConfig.bup $ do+test_bup_remote :: TestEnv -> Test+test_bup_remote env = "git-annex bup remote" ~: intmpclonerepo env $ when Build.SysConfig.bup $ do 	dir <- absPath "dir" -- bup special remote needs an absolute path 	createDirectory dir-	git_annex "initremote" (words $ "foo type=bup encryption=none buprepo="++dir) @? "initremote failed"-	git_annex "get" [annexedfile] @? "get of file failed"+	git_annex env "initremote" (words $ "foo type=bup encryption=none buprepo="++dir) @? "initremote failed"+	git_annex env "get" [annexedfile] @? "get of file failed" 	annexed_present annexedfile-	git_annex "copy" [annexedfile, "--to", "foo"] @? "copy --to bup remote failed"+	git_annex env "copy" [annexedfile, "--to", "foo"] @? "copy --to bup remote failed" 	annexed_present annexedfile-	git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed"+	git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed" 	annexed_notpresent annexedfile-	git_annex "copy" [annexedfile, "--from", "foo"] @? "copy --from bup remote failed"+	git_annex env "copy" [annexedfile, "--from", "foo"] @? "copy --from bup remote failed" 	annexed_present annexedfile-	not <$> git_annex "move" [annexedfile, "--from", "foo"] @? "move --from bup remote failed to fail"+	not <$> git_annex env "move" [annexedfile, "--from", "foo"] @? "move --from bup remote failed to fail" 	annexed_present annexedfile  -- gpg is not a build dependency, so only test when it's available-test_crypto :: Test-test_crypto = "git-annex crypto" ~: intmpclonerepo $ when Build.SysConfig.gpg $ do-	-- force gpg into batch mode for the tests-	setEnv "GPG_BATCH" "1" True+test_crypto :: TestEnv -> Test+test_crypto env = "git-annex crypto" ~: intmpclonerepo env $ when Build.SysConfig.gpg $ do 	Utility.Gpg.testTestHarness @? "test harness self-test failed" 	Utility.Gpg.testHarness $ do 		createDirectory "dir"-		let a cmd = git_annex cmd+		let a cmd = git_annex env cmd 			[ "foo" 			, "type=directory" 			, "encryption=" ++ Utility.Gpg.testKeyId@@ -741,21 +738,24 @@ 		not <$> a "initremote" @? "initremote failed to fail when run twice in a row" 		a "enableremote" @? "enableremote failed" 		a "enableremote" @? "enableremote failed when run twice in a row"-		git_annex "get" [annexedfile] @? "get of file failed"+		git_annex env "get" [annexedfile] @? "get of file failed" 		annexed_present annexedfile-		git_annex "copy" [annexedfile, "--to", "foo"] @? "copy --to encrypted remote failed"+		git_annex env "copy" [annexedfile, "--to", "foo"] @? "copy --to encrypted remote failed" 		annexed_present annexedfile-		git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed"+		git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed" 		annexed_notpresent annexedfile-		git_annex "move" [annexedfile, "--from", "foo"] @? "move --from encrypted remote failed"+		git_annex env "move" [annexedfile, "--from", "foo"] @? "move --from encrypted remote failed" 		annexed_present annexedfile-		not <$> git_annex "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail"+		not <$> git_annex env "drop" [annexedfile, "--numcopies=2"] @? "drop failed to fail" 		annexed_present annexedfile	  -- This is equivilant to running git-annex, but it's all run in-process -- so test coverage collection works.-git_annex :: String -> [String] -> IO Bool-git_annex command params = do+git_annex :: TestEnv -> String -> [String] -> IO Bool+git_annex env command params = do+	forM_ (M.toList env) $ \(var, val) ->+		Utility.Env.setEnv var val True+ 	-- catch all errors, including normally fatal errors 	r <- try (run)::IO (Either SomeException ()) 	case r of@@ -765,18 +765,19 @@ 	run = GitAnnex.run (command:"-q":params)  {- Runs git-annex and returns its output. -}-git_annex_output :: String -> [String] -> IO String-git_annex_output command params = do-	got <- Utility.Process.readProcess "git-annex" (command:params)+git_annex_output :: TestEnv -> String -> [String] -> IO String+git_annex_output env command params = do+	got <- Utility.Process.readProcessEnv "git-annex" (command:params) $+		Just $ M.toList env 	-- XXX since the above is a separate process, code coverage stats are 	-- not gathered for things run in it. 	-- Run same command again, to get code coverage.-	_ <- git_annex command params+	_ <- git_annex env command params 	return got -git_annex_expectoutput :: String -> [String] -> [String] -> IO ()-git_annex_expectoutput command params expected = do-	got <- lines <$> git_annex_output command params+git_annex_expectoutput :: TestEnv -> String -> [String] -> [String] -> IO ()+git_annex_expectoutput env command params expected = do+	got <- lines <$> git_annex_output env command params 	got == expected @? ("unexpected value running " ++ command ++ " " ++ show params ++ " -- got: " ++ show got ++ " expected: " ++ show expected)  -- Runs an action in the current annex. Note that shutdown actions@@ -788,56 +789,57 @@ 		Annex.setOutput Types.Messages.QuietOutput 		a -innewrepo :: Assertion -> Assertion-innewrepo a = withgitrepo $ \r -> indir r a+innewrepo :: TestEnv -> Assertion -> Assertion+innewrepo env a = withgitrepo env $ \r -> indir env r a -inmainrepo :: Assertion -> Assertion-inmainrepo a = indir mainrepodir a+inmainrepo :: TestEnv -> Assertion -> Assertion+inmainrepo env a = indir env mainrepodir a -intmpclonerepo :: Assertion -> Assertion-intmpclonerepo a = withtmpclonerepo False $ \r -> indir r a+intmpclonerepo :: TestEnv -> Assertion -> Assertion+intmpclonerepo env a = withtmpclonerepo env False $ \r -> indir env r a -intmpbareclonerepo :: Assertion -> Assertion-intmpbareclonerepo a = withtmpclonerepo True $ \r -> indir r a+intmpbareclonerepo :: TestEnv -> Assertion -> Assertion+intmpbareclonerepo env a = withtmpclonerepo env True $ \r -> indir env r a -withtmpclonerepo :: Bool -> (FilePath -> Assertion) -> Assertion-withtmpclonerepo bare a = do+withtmpclonerepo :: TestEnv -> Bool -> (FilePath -> Assertion) -> Assertion+withtmpclonerepo env bare a = do 	dir <- tmprepodir-	bracket (clonerepo mainrepodir dir bare) cleanup a+	bracket (clonerepo env mainrepodir dir bare) cleanup a -withgitrepo :: (FilePath -> Assertion) -> Assertion-withgitrepo = bracket (setuprepo mainrepodir) return+withgitrepo :: TestEnv -> (FilePath -> Assertion) -> Assertion+withgitrepo env = bracket (setuprepo env mainrepodir) return -indir :: FilePath -> Assertion -> Assertion-indir dir a = do+indir :: TestEnv -> FilePath -> Assertion -> Assertion+indir env dir a = do 	cwd <- getCurrentDirectory 	-- Assertion failures throw non-IO errors; catch 	-- any type of error and change back to cwd before 	-- rethrowing.-	r <- bracket_ (changeToTmpDir dir) (changeWorkingDirectory cwd)+	r <- bracket_ (changeToTmpDir env dir) (setCurrentDirectory cwd) 		(try (a)::IO (Either SomeException ())) 	case r of 		Right () -> return () 		Left e -> throw e -setuprepo :: FilePath -> IO FilePath-setuprepo dir = do+setuprepo :: TestEnv -> FilePath -> IO FilePath+setuprepo env dir = do 	cleanup dir 	ensuretmpdir 	boolSystem "git" [Params "init -q", File dir] @? "git init failed"-	indir dir $ do+	indir env dir $ do 		boolSystem "git" [Params "config user.name", Param "Test User"] @? "git config failed" 		boolSystem "git" [Params "config user.email test@example.com"] @? "git config failed" 	return dir  -- clones are always done as local clones; we cannot test ssh clones-clonerepo :: FilePath -> FilePath -> Bool -> IO FilePath-clonerepo old new bare = do+clonerepo :: TestEnv -> FilePath -> FilePath -> Bool -> IO FilePath+clonerepo env old new bare = do 	cleanup new 	ensuretmpdir 	let b = if bare then " --bare" else "" 	boolSystem "git" [Params ("clone -q" ++ b), File old, File new] @? "git clone failed"-	indir new $ git_annex "init" ["-q", new] @? "git annex init failed"+	indir env new $+		git_annex env "init" ["-q", new] @? "git annex init failed" 	return new 	 ensuretmpdir :: IO ()@@ -860,7 +862,10 @@ checklink :: FilePath -> Assertion checklink f = do 	s <- getSymbolicLinkStatus f-	isSymbolicLink s @? f ++ " is not a symlink"+	-- in direct mode, it may be a symlink, or not, depending+	-- on whether the content is present.+	unlessM (annexeval Config.isDirect) $+		isSymbolicLink s @? f ++ " is not a symlink"  checkregularfile :: FilePath -> Assertion checkregularfile f = do@@ -871,13 +876,13 @@ checkcontent :: FilePath -> Assertion checkcontent f = do 	c <- readFile f-	assertEqual ("checkcontent " ++ f) c (content f)+	assertEqual ("checkcontent " ++ f) (content f) c  checkunwritable :: FilePath -> Assertion-checkunwritable f = do-	-- Look at permissions bits rather than trying to write or using-	-- fileAccess because if run as root, any file can be modified-	-- despite permissions.+checkunwritable f = unlessM (annexeval Config.isDirect) $ do+	-- Look at permissions bits rather than trying to write or+	-- using fileAccess because if run as root, any file can be+	-- modified despite permissions. 	s <- getFileStatus f 	let mode = fileMode s 	if (mode == mode `unionFileModes` ownerWriteMode)@@ -892,11 +897,14 @@ 		Right _ -> return ()  checkdangling :: FilePath -> Assertion-checkdangling f = do-	r <- tryIO $ readFile f-	case r of-		Left _ -> return () -- expected; dangling link-		Right _ -> assertFailure $ f ++ " was not a dangling link as expected"+checkdangling f = ifM (annexeval Config.crippledFileSystem)+	( return () -- probably no real symlinks to test+	, do+		r <- tryIO $ readFile f+		case r of+			Left _ -> return () -- expected; dangling link+			Right _ -> assertFailure $ f ++ " was not a dangling link as expected"+	)  checklocationlog :: FilePath -> Bool -> Assertion checklocationlog f expected = do@@ -938,30 +946,35 @@ unannexed :: FilePath -> Assertion unannexed = runchecks [checkregularfile, checkcontent, checkwritable] -prepare :: IO ()+prepare :: IO TestEnv prepare = do 	whenM (doesDirectoryExist tmpdir) $ 		error $ "The temporary directory " ++ tmpdir ++ " already exists; cannot run test suite." -	-- While PATH is mostly avoided, the commit hook does run it,-	-- and so does git_annex_output. Make sure that the just-built-	-- git annex is used. 	cwd <- getCurrentDirectory-	p <- getEnvDefault  "PATH" ""-	setEnv "PATH" (cwd ++ ":" ++ p) True-	setEnv "TOPDIR" cwd True-	-- Avoid git complaining if it cannot determine the user's email-	-- address, or exploding if it doesn't know the user's name.-	setEnv "GIT_AUTHOR_EMAIL" "test@example.com" True-	setEnv "GIT_AUTHOR_NAME" "git-annex test" True-	setEnv "GIT_COMMITTER_EMAIL" "test@example.com" True-	setEnv "GIT_COMMITTER_NAME" "git-annex test" True+	p <- Utility.Env.getEnvDefault "PATH" "" -changeToTmpDir :: FilePath -> IO ()-changeToTmpDir t = do-	-- Hack alert. Threading state to here was too much bother.-	topdir <- getEnvDefault "TOPDIR" ""-	changeWorkingDirectory $ topdir ++ "/" ++ t+	let env =+		-- Ensure that the just-built git annex is used.+		[ ("PATH", cwd ++ ":" ++ p)+		, ("TOPDIR", cwd)+		-- Avoid git complaining if it cannot determine the user's+		-- email address, or exploding if it doesn't know the user's+		-- name.+		, ("GIT_AUTHOR_EMAIL", "test@example.com")+		, ("GIT_AUTHOR_NAME", "git-annex test")+		, ("GIT_COMMITTER_EMAIL", "test@example.com")+		, ("GIT_COMMITTER_NAME", "git-annex test")+		-- force gpg into batch mode for the tests+		, ("GPG_BATCH", "1")+		]++	return $ M.fromList env++changeToTmpDir :: TestEnv -> FilePath -> IO ()+changeToTmpDir env t = do+	let topdir = fromMaybe "" $ M.lookup "TOPDIR" env+	setCurrentDirectory $ topdir ++ "/" ++ t  tmpdir :: String tmpdir = ".t"
Upgrade.hs view
@@ -5,18 +5,27 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Upgrade where  import Common.Annex import Annex.Version+#ifndef __WINDOWS__ import qualified Upgrade.V0 import qualified Upgrade.V1+#endif import qualified Upgrade.V2  upgrade :: Annex Bool upgrade = go =<< getVersion   where+#ifndef __WINDOWS__ 	go (Just "0") = Upgrade.V0.upgrade 	go (Just "1") = Upgrade.V1.upgrade+#else+	go (Just "0") = error "upgrade from v0 on Windows not supported"+	go (Just "1") = error "upgrade from v1 on Windows not supported"+#endif 	go (Just "2") = Upgrade.V2.upgrade 	go _ = return True
Upgrade/V1.hs view
@@ -20,7 +20,7 @@ import Backend import Annex.Version import Utility.FileMode-import Utility.TempFile+import Utility.Tmp import qualified Upgrade.V2  -- v2 adds hashing of filenames of content and location log files.
Upgrade/V2.hs view
@@ -14,7 +14,7 @@ import qualified Annex.Branch import Logs.Location import Annex.Content-import Utility.TempFile+import Utility.Tmp  olddir :: Git.Repo -> FilePath olddir g
Utility/Applicative.o view

binary file changed (1936 → 1308 bytes)

Utility/CoProcess.hs view
@@ -6,11 +6,14 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.CoProcess ( 	CoProcessHandle, 	start, 	stop,-	query+	query,+	rawMode ) where  import Common@@ -33,3 +36,15 @@ 	_ <- send to 	hFlush to 	receive from++rawMode :: CoProcessHandle -> IO CoProcessHandle+rawMode ch@(_, from, to, _) = do+	raw from+	raw to+	return ch+  where+  	raw h = do+		fileEncoding h+#ifdef __WINDOWS__+		hSetNewlineMode h noNewlineTranslation+#endif
Utility/Daemon.hs view
@@ -5,12 +5,19 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.Daemon where  import Common import Utility.LogFile +#ifndef __WINDOWS__ import System.Posix+#else+import System.PosixCompat+import System.Posix.Types+#endif  {- Run an action as a daemon, with all output sent to a file descriptor.  -@@ -19,6 +26,7 @@  -  - When successful, does not return. -} daemonize :: Fd -> Maybe FilePath -> Bool -> IO () -> IO ()+#ifndef __WINDOWS__ daemonize logfd pidfile changedirectory a = do 	maybe noop checkalreadyrunning pidfile 	_ <- forkProcess child1@@ -40,6 +48,9 @@ 		a 		out 	out = exitImmediately ExitSuccess+#else+daemonize = error "daemonize is not implemented on Windows" -- TODO+#endif  {- Locks the pid file, with an exclusive, non-blocking lock.  - Writes the pid to the file, fully atomically.@@ -47,6 +58,7 @@ lockPidFile :: FilePath -> IO () lockPidFile file = do 	createDirectoryIfMissing True (parentDir file)+#ifndef __WINDOWS__ 	fd <- openFd file ReadWrite (Just stdFileMode) defaultFileFlags 	locked <- catchMaybeIO $ setLock fd (WriteLock, AbsoluteSeek, 0, 0) 	fd' <- openFd newfile ReadWrite (Just stdFileMode) defaultFileFlags@@ -57,8 +69,11 @@ 		(_, Nothing) -> alreadyRunning 		_ -> do 			_ <- fdWrite fd' =<< show <$> getProcessID-			renameFile newfile file 			closeFd fd+#else+	writeFile newfile "-1"+#endif+	renameFile newfile file   where 	newfile = file ++ ".new" @@ -70,6 +85,7 @@  -  - If it's running, returns its pid. -} checkDaemon :: FilePath -> IO (Maybe ProcessID)+#ifndef __WINDOWS__ checkDaemon pidfile = do 	v <- catchMaybeIO $ 		openFd pidfile ReadOnly (Just stdFileMode) defaultFileFlags@@ -88,10 +104,17 @@ 			"stale pid in " ++ pidfile ++  			" (got " ++ show pid' ++  			"; expected " ++ show pid ++ " )"+#else+checkDaemon pidfile = maybe Nothing readish <$> catchMaybeIO (readFile pidfile)+#endif  {- Stops the daemon, safely. -} stopDaemon :: FilePath -> IO ()+#ifndef __WINDOWS__ stopDaemon pidfile = go =<< checkDaemon pidfile   where 	go Nothing = noop 	go (Just pid) = signalProcess sigTERM pid+#else+stopDaemon = error "stopDaemon is not implemented on Windows" -- TODO+#endif
Utility/Directory.hs view
@@ -8,7 +8,7 @@ module Utility.Directory where  import System.IO.Error-import System.Posix.Files+import System.PosixCompat.Files import System.Directory import Control.Exception (throw) import Control.Monad@@ -18,7 +18,7 @@ import System.IO.Unsafe (unsafeInterleaveIO)  import Utility.SafeCommand-import Utility.TempFile+import Utility.Tmp import Utility.Exception import Utility.Monad 
Utility/Directory.o view

binary file changed (24992 → 15224 bytes)

+ Utility/Env.hs view
@@ -0,0 +1,63 @@+{- portable environment variables+ -+ - Copyright 2013 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++{-# LANGUAGE CPP #-}++module Utility.Env where++#ifdef mingw32_HOST_OS+import Utility.Exception+import Control.Applicative+import Data.Maybe+import qualified System.Environment as E+#else+import qualified System.Posix.Env as PE+#endif++getEnv :: String -> IO (Maybe String)+#ifndef mingw32_HOST_OS+getEnv = PE.getEnv+#else+getEnv = catchMaybeIO . E.getEnv+#endif++getEnvDefault :: String -> String -> IO String+#ifndef mingw32_HOST_OS+getEnvDefault = PE.getEnvDefault+#else+getEnvDefault var fallback = fromMaybe fallback <$> getEnv var+#endif++getEnvironment :: IO [(String, String)]+#ifndef mingw32_HOST_OS+getEnvironment = PE.getEnvironment+#else+getEnvironment = E.getEnvironment+#endif++{- Returns True if it could successfully set the environment variable.+ -+ - There is, apparently, no way to do this in Windows. Instead,+ - environment varuables must be provided when running a new process. -}+setEnv :: String -> String -> Bool -> IO Bool+#ifndef mingw32_HOST_OS+setEnv var val overwrite = do+	PE.setEnv var val overwrite+	return True+#else+setEnv _ _ _ = return False+#endif++{- Returns True if it could successfully unset the environment variable. -}+unsetEnv :: String -> IO Bool+#ifndef mingw32_HOST_OS+unsetEnv var = do+	PE.unsetEnv var+	return True+#else+unsetEnv _ = return False+#endif
+ Utility/Env.o view

binary file changed (absent → 3664 bytes)

Utility/Exception.o view

binary file changed (11576 → 7228 bytes)

+ Utility/ExternalSHA.hs view
@@ -0,0 +1,67 @@+{- Calculating a SHA checksum with an external command.+ -+ - This is often faster than using Haskell libraries.+ -+ - Copyright 2011-2013 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Utility.ExternalSHA (externalSHA) where++import Utility.SafeCommand+import Utility.Process+import Utility.FileSystemEncoding+import Utility.Misc++import System.Process+import Data.List+import Data.Char+import Control.Applicative+import System.IO++externalSHA :: String -> Int -> FilePath -> IO (Either String String)+externalSHA command shasize file = do+	ls <- lines <$> readsha (toCommand [File file])+	return $ sanitycheck =<< parse ls+  where+	{- sha commands output the filename, so need to set fileEncoding -}+	readsha args =+		withHandle StdoutHandle (createProcessChecked checkSuccessProcess) p $ \h -> do+			fileEncoding h+			output  <- hGetContentsStrict h+			hClose h+			return output+	  where+		p = (proc command args) { std_out = CreatePipe }++	{- The first word of the output is taken to be the sha. -}+	parse [] = bad+	parse (l:_)+		| null sha = bad+		-- sha is prefixed with \ when filename contains certian chars+		| "\\" `isPrefixOf` sha = Right $ drop 1 sha+		| otherwise = Right sha+	  where+		sha = fst $ separate (== ' ') l+	bad = Left $ command ++ " parse error"++	{- Check that we've correctly parsing the output of the command,+	 - by making sure the sha we read is of the expected length+	 - and contains only the right characters. -}+	sanitycheck sha+		| length sha /= expectedSHALength shasize =+			Left $ "Failed to parse the output of " ++ command+		| any (`notElem` "0123456789abcdef") sha' =+			Left $ "Unexpected character in output of " ++ command ++ "\"" ++ sha ++ "\""+		| otherwise = Right sha'+	  where+	  	sha' = map toLower sha++expectedSHALength :: Int -> Int+expectedSHALength 1 = 40+expectedSHALength 256 = 64+expectedSHALength 512 = 128+expectedSHALength 224 = 56+expectedSHALength 384 = 96+expectedSHALength _ = 0
+ Utility/ExternalSHA.o view

binary file changed (absent → 11768 bytes)

Utility/FileMode.hs view
@@ -5,12 +5,17 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.FileMode where  import Common  import Control.Exception (bracket)-import System.Posix.Types+import System.PosixCompat.Types+#ifndef __WINDOWS__+import System.Posix.Files+#endif import Foreign (complement)  {- Applies a conversion function to a file's mode. -}@@ -71,7 +76,11 @@  {- Checks if a file mode indicates it's a symlink. -} isSymLink :: FileMode -> Bool+#ifdef __WINDOWS__+isSymLink _ = False+#else isSymLink = checkMode symbolicLinkMode+#endif  {- Checks if a file has any executable bits set. -} isExecutable :: FileMode -> Bool@@ -80,6 +89,7 @@ {- Runs an action without that pesky umask influencing it, unless the  - passed FileMode is the standard one. -} noUmask :: FileMode -> IO a -> IO a+#ifndef __WINDOWS__ noUmask mode a 	| mode == stdFileMode = a 	| otherwise = bracket setup cleanup go@@ -87,26 +97,39 @@ 	setup = setFileCreationMask nullFileMode 	cleanup = setFileCreationMask 	go _ = a+#else+noUmask _ a = a+#endif  combineModes :: [FileMode] -> FileMode combineModes [] = undefined combineModes [m] = m combineModes (m:ms) = foldl unionFileModes m ms -stickyMode :: FileMode-stickyMode = 512- isSticky :: FileMode -> Bool+#ifdef __WINDOWS__+isSticky _ = False+#else isSticky = checkMode stickyMode +stickyMode :: FileMode+stickyMode = 512+ setSticky :: FilePath -> IO () setSticky f = modifyFileMode f $ addModes [stickyMode]+#endif  {- Writes a file, ensuring that its modes do not allow it to be read- - by anyone other than the current user, before any content is written. -}+ - by anyone other than the current user, before any content is written.+ -+ - On a filesystem that does not support file permissions, this is the same+ - as writeFile.+ -} writeFileProtected :: FilePath -> String -> IO () writeFileProtected file content = do 	h <- openFile file WriteMode-	modifyFileMode file $ removeModes [groupReadMode, otherReadMode]+	void $ tryIO $+		modifyFileMode file $+			removeModes [groupReadMode, otherReadMode] 	hPutStr h content 	hClose h
Utility/FileSystemEncoding.o view

binary file changed (9128 → 5672 bytes)

Utility/FreeDesktop.o view

binary file changed (35136 → 21064 bytes)

Utility/Gpg.hs view
@@ -5,21 +5,25 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.Gpg where  import System.Posix.Types import Control.Applicative import Control.Concurrent import Control.Exception (bracket)-import System.Posix.Env (setEnv, unsetEnv, getEnv)	+import System.Path  import Common+import Utility.Env  newtype KeyIds = KeyIds [String] 	deriving (Ord, Eq)  stdParams :: [CommandParam] -> IO [String] stdParams params = do+#ifndef __WINDOWS__ 	-- Enable batch mode if GPG_AGENT_INFO is set, to avoid extraneous 	-- gpg output about password prompts. GPG_BATCH is set by the test 	-- suite for a similar reason.@@ -29,6 +33,9 @@ 		then [] 		else ["--batch", "--no-tty", "--use-agent"] 	return $ batch ++ defaults ++ toCommand params+#else+	return $ defaults ++ toCommand params+#endif   where 	-- be quiet, even about checking the trustdb 	defaults = ["--quiet", "--trust-model", "always"]@@ -64,6 +71,7 @@  - Note that to avoid deadlock with the cleanup stage,  - the reader must fully consume gpg's input before returning. -} feedRead :: [CommandParam] -> String -> (Handle -> IO ()) -> (Handle -> IO a) -> IO a+#ifndef __WINDOWS__ feedRead params passphrase feeder reader = do 	-- pipe the passphrase into gpg on a fd 	(frompipe, topipe) <- createPipe@@ -83,6 +91,9 @@ 			feeder to 			hClose to 		reader from+#else+feedRead = error "gpg feedRead not implemented on Windows" -- TODO+#endif  {- Finds gpg public keys matching some string. (Could be an email address,  - a key id, or a name; See the section 'HOW TO SPECIFY A USER ID' of@@ -204,6 +215,7 @@ 		| public = "PUBLIC" 		| otherwise = "PRIVATE" +#ifndef mingw32_HOST_OS {- Runs an action using gpg in a test harness, in which gpg does  - not use ~/.gpg/, but a directory with the test key set up to be used. -} testHarness :: IO a -> IO a@@ -216,7 +228,7 @@ 	setup = do 		base <- getTemporaryDirectory 		dir <- mktmpdir $ base </> "gpgtmpXXXXXX"-		setEnv var dir True+		void $ setEnv var dir True 		_ <- pipeStrict [Params "--import -q"] $ unlines 			[testSecretKey, testKey] 		return dir@@ -230,3 +242,4 @@ testTestHarness = do 	keys <- testHarness $ findPubKeys testKeyId 	return $ KeyIds [testKeyId] == keys+#endif
Utility/InodeCache.hs view
@@ -8,7 +8,7 @@ module Utility.InodeCache where  import Common-import System.Posix.Types+import System.PosixCompat.Types import Utility.QuickCheck  data InodeCachePrim = InodeCachePrim FileID FileOffset EpochTime
Utility/LogFile.hs view
@@ -5,17 +5,23 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.LogFile where  import Common -import System.Posix+import System.Posix.Types  openLog :: FilePath -> IO Fd+#ifndef __WINDOWS__ openLog logfile = do 	rotateLog logfile 	openFd logfile WriteOnly (Just stdFileMode) 		defaultFileFlags { append = True }+#else+openLog = error "openLog TODO"+#endif  rotateLog :: FilePath -> IO () rotateLog logfile = go 0@@ -44,11 +50,19 @@ maxLogs = 9  redirLog :: Fd -> IO ()+#ifndef __WINDOWS__ redirLog logfd = do 	mapM_ (redir logfd) [stdOutput, stdError] 	closeFd logfd+#else+redirLog _ = error "redirLog TODO"+#endif +#ifndef __WINDOWS__ redir :: Fd -> Fd -> IO () redir newh h = do 	closeFd h 	void $ dupTo newh h+#else+redir _ _ = error "redir TODO"+#endif
Utility/Lsof.hs view
@@ -11,9 +11,9 @@  import Common import Build.SysConfig as SysConfig+import Utility.Env  import System.Posix.Types-import System.Posix.Env  data LsofOpenMode = OpenReadWrite | OpenReadOnly | OpenWriteOnly | OpenUnknown 	deriving (Show, Eq)@@ -32,7 +32,7 @@ 	when (isAbsolute cmd) $ do 		path <- getSearchPath 		let path' = takeDirectory cmd : path-		setEnv "PATH" (intercalate [searchPathSeparator] path') True+		void $ setEnv "PATH" (intercalate [searchPathSeparator] path') True  {- Checks each of the files in a directory to find open files.  - Note that this will find hard links to files elsewhere that are open. -}
Utility/Misc.hs view
@@ -5,6 +5,8 @@  - Licensed under the GNU GPL version 3 or higher.  -} +{-# LANGUAGE CPP #-}+ module Utility.Misc where  import System.IO@@ -13,7 +15,9 @@ import Data.Char import Data.List import Control.Applicative+#ifndef mingw32_HOST_OS import System.Posix.Process (getAnyProcessStatus)+#endif  import Utility.Exception @@ -124,7 +128,12 @@  - on a process and get back an exit status is going to be confused  - if this reap gets there first. -} reapZombies :: IO ()+#ifndef mingw32_HOST_OS reapZombies = do 	-- throws an exception when there are no child processes 	catchDefaultIO Nothing (getAnyProcessStatus False True) 		>>= maybe (return ()) (const reapZombies)++#else+reapZombies = return ()+#endif
Utility/Misc.o view

binary file changed (32432 → 19232 bytes)

Utility/Monad.o view

binary file changed (11728 → 7376 bytes)

Utility/Mounts.hsc view
@@ -3,7 +3,7 @@  - Derived from hsshellscript, originally written by  - Volker Wysk <hsss@volker-wysk.de>  - - - Modified to support BSD and Mac OS X by+ - Modified to support BSD, Mac OS X, and Android by  - Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU LGPL version 2.1 or higher.@@ -16,13 +16,18 @@ 	getMounts ) where +#ifndef __ANDROID__ import Control.Monad import Foreign import Foreign.C import GHC.IO hiding (finally, bracket) import Prelude hiding (catch)- #include "libmounts.h"+#else+import Utility.Exception+import Data.Maybe+import Control.Applicative+#endif  {- This is a stripped down mntent, containing only  - fields available everywhere. -}@@ -32,6 +37,8 @@ 	, mnt_type :: String 	} deriving (Read, Show, Eq, Ord) +#ifndef __ANDROID__+ getMounts :: IO [Mntent] getMounts = do 	h <- c_mounts_start@@ -67,3 +74,22 @@         :: Ptr () -> IO (Ptr ()) foreign import ccall unsafe "libmounts.h mounts_end" c_mounts_end         :: Ptr () -> IO CInt++#else++{- Android does not support getmntent (well, it's a no-op stub in Bionic).+ - + - But, the linux kernel's /proc/mounts is available to be parsed.+ -}+getMounts :: IO [Mntent]+getMounts = catchDefaultIO [] $+	mapMaybe (parse . words) . lines <$> readFile "/proc/mounts"+  where+  	parse (device:mountpoint:fstype:_rest) = Just $ Mntent+		{ mnt_fsname = device+		, mnt_dir = mountpoint+		, mnt_type = fstype+		}+	parse _ = Nothing++#endif
Utility/OSX.o view

binary file changed (14632 → 8808 bytes)

Utility/PartialPrelude.o view

binary file changed (8648 → 5448 bytes)

Utility/Path.hs view
@@ -1,33 +1,60 @@ {- path manipulation  -- - Copyright 2010-2011 Joey Hess <joey@kitenet.net>+ - Copyright 2010-2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -} -{-# LANGUAGE PackageImports #-}+{-# LANGUAGE PackageImports, CPP #-}  module Utility.Path where  import Data.String.Utils-import "MissingH" System.Path import System.FilePath import System.Directory import Data.List import Data.Maybe import Control.Applicative +#ifdef __WINDOWS__+import Data.Char+import qualified System.FilePath.Posix as Posix+#else+import qualified "MissingH" System.Path as MissingH+#endif+ import Utility.Monad import Utility.UserInfo -{- Returns the parent directory of a path. Parent of / is "" -}+{- Makes a path absolute if it's not already.+ - The first parameter is a base directory (ie, the cwd) to use if the path+ - is not already absolute.+ -+ - On Unix, collapses and normalizes ".." etc in the path. May return Nothing+ - if the path cannot be normalized.+ -+ - MissingH's absNormPath does not work on Windows, so on Windows+ - no normalization is done.+ -}+absNormPath :: FilePath -> FilePath -> Maybe FilePath+#ifndef __WINDOWS__+absNormPath dir path = MissingH.absNormPath dir path+#else+absNormPath dir path = Just $ combine dir path+#endif++{- Returns the parent directory of a path.+ -+ - To allow this to be easily used in loops, which terminate upon reaching the+ - top, the parent of / is "" -} parentDir :: FilePath -> FilePath parentDir dir-	| not $ null dirs = slash ++ join s (init dirs)-	| otherwise = ""+	| null dirs = ""+	| otherwise = joinDrive drive (join s $ init dirs)   where-	dirs = filter (not . null) $ split s dir-	slash = if isAbsolute dir then s else ""+	-- on Unix, the drive will be "/" when the dir is absolute, otherwise ""+	(drive, path) = splitDrive dir+	dirs = filter (not . null) $ split s path 	s = [pathSeparator]  prop_parentDir_basics :: FilePath -> Bool@@ -43,7 +70,7 @@  - are all equivilant.  -} dirContains :: FilePath -> FilePath -> Bool-dirContains a b = a == b || a' == b' || (a'++"/") `isPrefixOf` b'+dirContains a b = a == b || a' == b' || (a'++[pathSeparator]) `isPrefixOf` b'   where 	norm p = fromMaybe "" $ absNormPath p "." 	a' = norm a@@ -108,7 +135,7 @@  {- Given an original list of paths, and an expanded list derived from it,  - generates a list of lists, where each sublist corresponds to one of the- - original paths. When the original path is a direcotry, any items+ - original paths. When the original path is a directory, any items  - in the expanded list that are contained in that directory will appear in  - its segment.  -}@@ -164,3 +191,22 @@ 	| otherwise = "." `isPrefixOf` f || dotfile (takeDirectory file)   where 	f = takeFileName file++{- Converts a DOS style path to a Cygwin style path. Only on Windows.+ - Any trailing '\' is preserved as a trailing '/' -}+toCygPath :: FilePath -> FilePath+#ifndef __WINDOWS__+toCygPath = id+#else+toCygPath p+	| null drive = recombine parts+	| otherwise = recombine $ "/cygdrive" : driveletter drive : parts+  where+  	(drive, p') = splitDrive p+	parts = splitDirectories p'+  	driveletter = map toLower . takeWhile (/= ':')+	recombine = fixtrailing . Posix.joinPath+  	fixtrailing s+		| hasTrailingPathSeparator p = Posix.addTrailingPathSeparator s+		| otherwise = s+#endif
Utility/Path.o view

binary file changed (40080 → 24540 bytes)

Utility/Process.hs view
@@ -6,7 +6,7 @@  - Licensed under the GNU GPL version 3 or higher.  -} -{-# LANGUAGE Rank2Types #-}+{-# LANGUAGE CPP, Rank2Types #-}  module Utility.Process ( 	module X,@@ -42,7 +42,9 @@ import qualified Control.Exception as E import Control.Monad import Data.Maybe+#ifndef mingw32_HOST_OS import System.Posix.IO+#endif  import Utility.Misc @@ -156,6 +158,7 @@  - returns a transcript combining its stdout and stderr, and  - whether it succeeded or failed. -} processTranscript :: String -> [String] -> (Maybe String) -> IO (String, Bool)+#ifndef mingw32_HOST_OS processTranscript cmd opts input = do 	(readf, writef) <- createPipe 	readh <- fdToHandle readf@@ -189,7 +192,9 @@  	ok <- checkSuccessProcess pid 	return (transcript, ok)-+#else+processTranscript = error "processTranscript TODO"+#endif  {- Runs a CreateProcessRunner, on a CreateProcess structure, that  - is adjusted to pipe only from/to a single StdHandle, and passes
Utility/Process.o view

binary file changed (70544 → 42568 bytes)

Utility/Rsync.hs view
@@ -1,6 +1,6 @@ {- various rsync stuff  -- - Copyright 2010-2012 Joey Hess <joey@kitenet.net>+ - Copyright 2010-2013 Joey Hess <joey@kitenet.net>  -  - Licensed under the GNU GPL version 3 or higher.  -}@@ -45,9 +45,21 @@ 	, Params "-e.Lsf ." 	] +rsyncUseDestinationPermissions :: CommandParam+rsyncUseDestinationPermissions = Param "--chmod=ugo=rwX"+ rsync :: [CommandParam] -> IO Bool-rsync = boolSystem "rsync"+rsync = boolSystem "rsync" . rsyncParamsFixup +{- On Windows, rsync is from Cygwin, and expects to get Cygwin formatted+ - paths to files. (It thinks that C:foo refers to a host named "C").+ - Fix up all Files in the Params appropriately. -}+rsyncParamsFixup :: [CommandParam] -> [CommandParam]+rsyncParamsFixup = map fixup+  where+  	fixup (File f) = File (toCygPath f)+	fixup p = p+ {- Runs rsync, but intercepts its progress output and updates a meter.  - The progress output is also output to stdout.   -@@ -62,7 +74,7 @@ 	reapZombies 	return r   where-	p = proc "rsync" (toCommand params)+	p = proc "rsync" (toCommand $ rsyncParamsFixup params) 	feedprogress prev buf h = do 		s <- hGetSomeString h 80 		if null s
Utility/SafeCommand.o view

binary file changed (47136 → 28136 bytes)

Utility/Shell.hs view
@@ -9,12 +9,18 @@  module Utility.Shell where -shellPath :: FilePath+shellPath_portable :: FilePath+shellPath_portable = "/bin/sh"++shellPath_local :: FilePath #ifndef __ANDROID__-shellPath = "/bin/sh"+shellPath_local = shellPath_portable #else-shellPath = "/system/bin/sh"+shellPath_local = "/system/bin/sh" #endif -shebang :: String-shebang = "#!" ++ shellPath+shebang_portable :: String+shebang_portable = "#!" ++ shellPath_portable++shebang_local :: String+shebang_local = "#!" ++ shellPath_local
− Utility/TempFile.hs
@@ -1,58 +0,0 @@-{- temp file functions- -- - Copyright 2010-2011 Joey Hess <joey@kitenet.net>- -- - Licensed under the GNU GPL version 3 or higher.- -}--module Utility.TempFile where--import Control.Exception (bracket)-import System.IO-import System.Posix.Process-import System.Directory--import Utility.Exception-import Utility.Path-import System.FilePath--{- Runs an action like writeFile, writing to a temp file first and- - then moving it into place. The temp file is stored in the same- - directory as the final file to avoid cross-device renames. -}-viaTmp :: (FilePath -> String -> IO ()) -> FilePath -> String -> IO ()-viaTmp a file content = do-	pid <- getProcessID-	let tmpfile = file ++ ".tmp" ++ show pid-	createDirectoryIfMissing True (parentDir file)-	a tmpfile content-	renameFile tmpfile file--type Template = String--{- Runs an action with a temp file, then removes the file. -}-withTempFile :: Template -> (FilePath -> Handle -> IO a) -> IO a-withTempFile template a = bracket create remove use-  where-	create = do-		tmpdir <- catchDefaultIO "." getTemporaryDirectory-		openTempFile tmpdir template-	remove (name, handle) = do-		hClose handle-		catchBoolIO (removeFile name >> return True)-	use (name, handle) = a name handle--{- Runs an action with a temp directory, then removes the directory and- - all its contents. -}-withTempDir :: Template -> (FilePath -> IO a) -> IO a-withTempDir template = bracket create remove-  where-	remove = removeDirectoryRecursive-	create = do-		tmpdir <- catchDefaultIO "." getTemporaryDirectory-		createDirectoryIfMissing True tmpdir-		pid <- getProcessID-		makedir tmpdir (template ++ show pid) (0 :: Int)-	makedir tmpdir t n = do-		let dir = tmpdir </> t ++ "." ++ show n-		r <- tryIO $ createDirectory dir-		either (const $ makedir tmpdir t $ n + 1) (const $ return dir) r
− Utility/TempFile.o

binary file changed (18352 → absent bytes)

+ Utility/Tmp.hs view
@@ -0,0 +1,71 @@+{- Temporary files and directories.+ -+ - Copyright 2010-2013 Joey Hess <joey@kitenet.net>+ -+ - Licensed under the GNU GPL version 3 or higher.+ -}++module Utility.Tmp where++import Control.Exception (bracket)+import System.IO+import System.Directory+import Control.Monad.IfElse++import Utility.Exception+import System.FilePath++type Template = String++{- Runs an action like writeFile, writing to a temp file first and+ - then moving it into place. The temp file is stored in the same+ - directory as the final file to avoid cross-device renames. -}+viaTmp :: (FilePath -> String -> IO ()) -> FilePath -> String -> IO ()+viaTmp a file content = do+	let (dir, base) = splitFileName file+	createDirectoryIfMissing True dir+	(tmpfile, handle) <- openTempFile dir (base ++ ".tmp")+	hClose handle+	a tmpfile content+	renameFile tmpfile file++{- Runs an action with a tmp file located in the system's tmp directory+ - (or in "." if there is none) then removes the file. -}+withTmpFile :: Template -> (FilePath -> Handle -> IO a) -> IO a+withTmpFile template a = do+	tmpdir <- catchDefaultIO "." getTemporaryDirectory+	withTmpFileIn tmpdir template a++{- Runs an action with a tmp file located in the specified directory,+ - then removes the file. -}+withTmpFileIn :: FilePath -> Template -> (FilePath -> Handle -> IO a) -> IO a+withTmpFileIn tmpdir template a = bracket create remove use+  where+	create = openTempFile tmpdir template+	remove (name, handle) = do+		hClose handle+		catchBoolIO (removeFile name >> return True)+	use (name, handle) = a name handle++{- Runs an action with a tmp directory located within the system's tmp+ - directory (or within "." if there is none), then removes the tmp+ - directory and all its contents. -}+withTmpDir :: Template -> (FilePath -> IO a) -> IO a+withTmpDir template a = do+	tmpdir <- catchDefaultIO "." getTemporaryDirectory+	withTmpDirIn tmpdir template a++{- Runs an action with a tmp directory located within a specified directory,+ - then removes the tmp directory and all its contents. -}+withTmpDirIn :: FilePath -> Template -> (FilePath -> IO a) -> IO a+withTmpDirIn tmpdir template = bracket create remove+  where+	remove d = whenM (doesDirectoryExist d) $+		removeDirectoryRecursive d+	create = do+		createDirectoryIfMissing True tmpdir+		makenewdir (tmpdir </> template) (0 :: Int)+	makenewdir t n = do+		let dir = t ++ "." ++ show n+		either (const $ makenewdir t $ n + 1) (const $ return dir)+			=<< tryIO (createDirectory dir)
+ Utility/Tmp.o view

binary file changed (absent → 12272 bytes)

Utility/UserInfo.hs view
@@ -14,18 +14,31 @@ ) where  import Control.Applicative-import System.Posix.User-import System.Posix.Env+import System.PosixCompat +import Utility.Env+ {- Current user's home directory.  -  - getpwent will fail on LDAP or NIS, so use HOME if set. -} myHomeDir :: IO FilePath-myHomeDir = myVal ["HOME"] homeDirectory+myHomeDir = myVal env homeDirectory+  where+#ifndef __WINDOWS__+	env = ["HOME"]+#else+	env = ["USERPROFILE", "HOME"] -- HOME is used in Cygwin+#endif  {- Current user's user name. -} myUserName :: IO String-myUserName = myVal ["USER", "LOGNAME"] userName+myUserName = myVal env userName+  where+#ifndef __WINDOWS__+	env = ["USER", "LOGNAME"]+#else+	env = ["USERNAME", "USER", "LOGNAME"]+#endif  myUserGecos :: IO String #ifdef __ANDROID__
Utility/UserInfo.o view

binary file changed (10312 → 6304 bytes)

Utility/WebApp.hs view
@@ -10,7 +10,7 @@ module Utility.WebApp where  import Common-import Utility.TempFile+import Utility.Tmp import Utility.FileMode  import qualified Yesod
Utility/libmounts.h view
@@ -6,7 +6,7 @@ # define GETMNTINFO #else #if defined __ANDROID__-# warning mounts listing code not available for Android+/* Android is handled by the Haskell code, not here. */ # define UNKNOWN #else #if defined (__linux__) || defined (__FreeBSD_kernel__)
debian/changelog view
@@ -1,11 +1,34 @@-git-annex (4.20130502) UNRELEASED; urgency=low+git-annex (4.20130516) unstable; urgency=low    * Android: The webapp is ported and working.+  * Windows: There is a very rough Windows port. Do not trust it with+    important data.+  * git-annex-shell: Ensure that received files can be read. Files+    transferred from some Android devices may have very broken permissions+    as received.+  * direct mode: Direct mode commands now work on files staged in the index,+    they do not need to be committed to git.   * Temporarily add an upper bound to the version of yesod that can be built     with, since yesod 1.2 has a great many changes that will require extensive     work on the webapp.+  * Disable building with the haskell threaded runtime when the assistant+    is not built. This may fix builds on s390x and sparc, which are failing+    to link -lHSrts_thr+  * Avoid depending on regex-tdfa on mips, mipsel, and s390, where it fails+    to build.+  * direct: Fix a bug that could cause some files to be left in indirect mode.+  * When initializing a directory special remote with a relative path,+    the path is made absolute.+  * SHA: Add a runtime sanity check that sha commands output something+    that appears to be a real sha.+  * configure: Better checking that sha commands output in the desired format.+  * rsync special remotes: When sending from a crippled filesystem, use+    the destination's default file permissions, as the local ones can+    be arbitrarily broken. (Ie, ----rwxr-x for files on Android)+  * migrate: Detect if a file gets corrupted while it's being migrated.+  * Debian: Add a menu file. - -- Joey Hess <joeyh@debian.org>  Thu, 02 May 2013 20:39:19 -0400+ -- Joey Hess <joeyh@debian.org>  Thu, 16 May 2013 11:03:35 -0400  git-annex (4.20130501) unstable; urgency=low 
debian/control view
@@ -9,7 +9,7 @@ 	libghc-hslogger-dev, 	libghc-pcre-light-dev, 	libghc-sha-dev,-	libghc-regex-tdfa-dev,+	libghc-regex-tdfa-dev [!mips !mipsel !s390], 	libghc-dataenc-dev, 	libghc-utf8-string-dev, 	libghc-hs3-dev (>= 0.5.6),@@ -17,6 +17,7 @@ 	libghc-quickcheck2-dev, 	libghc-monad-control-dev (>= 0.3), 	libghc-lifted-base-dev,+	libghc-unix-compat-dev, 	libghc-dlist-dev, 	libghc-uuid-dev, 	libghc-json-dev,@@ -40,7 +41,7 @@ 	libghc-blaze-builder-dev, 	libghc-crypto-api-dev, 	libghc-network-multicast-dev,-	libghc-network-info-dev,+	libghc-network-info-dev [linux-any kfreebsd-any], 	libghc-safesemaphore-dev, 	libghc-network-protocol-xmpp-dev (>= 0.4.3-1+b1), 	libghc-gnutls-dev (>= 0.1.4),
− debian/files
@@ -1,1 +0,0 @@-git-annex_4.20130417_amd64.deb utils optional
− debian/git-annex.debhelper.log
@@ -1,47 +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_installinit-dh_installmenu-dh_installmime-dh_installmodules-dh_installlogcheck-dh_installlogrotate-dh_installpam-dh_installppp-dh_installudev-dh_installwm-dh_installxfonts-dh_installgsettings-dh_bugfiles-dh_ucf-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-dh_builddeb
− debian/git-annex.substvars
@@ -1,2 +0,0 @@-shlibs:Depends=libc6 (>= 2.7), libffi5 (>= 3.0.4), libgmp10, libgnutls26 (>= 2.12.17-0), libgsasl7 (>= 1.4), libidn11 (>= 1.13), libxml2 (>= 2.7.4), libyaml-0-2, zlib1g (>= 1:1.1.4)-misc:Depends=
− debian/git-annex/DEBIAN/control
@@ -1,24 +0,0 @@-Package: git-annex-Version: 4.20130417-Architecture: amd64-Maintainer: Joey Hess <joeyh@debian.org>-Installed-Size: 46054-Depends: libc6 (>= 2.7), libffi5 (>= 3.0.4), libgmp10, libgnutls26 (>= 2.12.17-0), libgsasl7 (>= 1.4), libidn11 (>= 1.13), libxml2 (>= 2.7.4), libyaml-0-2, zlib1g (>= 1:1.1.4), git (>= 1:1.7.7.6), rsync, wget, curl, openssh-client (>= 1:5.6p1)-Recommends: lsof, gnupg, bind9-host-Suggests: graphviz, bup, libnss-mdns-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, 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,228 +0,0 @@-16246dcc37ffdde88c1512632cf4564b  usr/bin/git-annex-2ef419c4a13022ede5561da5b1914f62  usr/share/doc-base/git-annex-008556d24900b7f08cfeea8da49cd464  usr/share/doc/git-annex/NEWS.Debian.gz-ad375de4fdc0a30dc1c682a6360f4d8c  usr/share/doc/git-annex/changelog.gz-dfc4775bd2a7d941b819e734ec9b7e73  usr/share/doc/git-annex/copyright-dedf6671d7ec5d249ad5a99d9bdbacbe  usr/share/doc/git-annex/html/assistant.html-6713a86e655998384c46fb7460988b57  usr/share/doc/git-annex/html/assistant/addsshserver.png-ebcfa646439b9df0b54cb7bd31ae20ec  usr/share/doc/git-annex/html/assistant/android/appinstalled.png-9fd3bdafbdc2f5d4266bd313f9b655e8  usr/share/doc/git-annex/html/assistant/android/install.png-e2677873f5ac5d5c97e82e361aca711a  usr/share/doc/git-annex/html/assistant/android/terminal.png-729d0e63a114001e2c7684cae5bdf0be  usr/share/doc/git-annex/html/assistant/archival_walkthrough.html-07f39d17b252a39776f1bd2dbd9cda90  usr/share/doc/git-annex/html/assistant/buddylist.png-cb7d4d4757a8e6989a77a843e4f867d2  usr/share/doc/git-annex/html/assistant/cloudnudge.png-e8ca3cd2f32161a83ac41bdcd93fdd56  usr/share/doc/git-annex/html/assistant/combinerepos.png-5013fbf9e1bf92e53a1e70bfcc2b222f  usr/share/doc/git-annex/html/assistant/controlmenu.png-95ce2bd3ae2466242e470396a99b096a  usr/share/doc/git-annex/html/assistant/crashrecovery.png-3494483bd7625aad928c02dbd75507f4  usr/share/doc/git-annex/html/assistant/dashboard.png-a1518dea95aab7eac446bb3d64f7f024  usr/share/doc/git-annex/html/assistant/deleterepository.png-4e6daf0f77faf92c456f93431e0dad32  usr/share/doc/git-annex/html/assistant/example.png-313ee85d8109ce5535f669eada6e48a7  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough.html-17b6d14b4f3225c9dcf2cbab8a754f8f  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/addrepository.png-e6d3761647be986783f96722e9243098  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/pairing.png-479f35f53a4bdf29d849a90ae13a5196  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/pairrequest.png-ebf723435dae6e2c94846a8a30f77bd5  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/secret.png-1a1cec71fad74012c37ebd7c6ba30288  usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/secretempty.png-6410869a6b0d0d359f59367f9f928098  usr/share/doc/git-annex/html/assistant/logs.png-bdc41ce7b9f8b67552614bc36aad9080  usr/share/doc/git-annex/html/assistant/makerepo.png-4f5f4f7879d518cf5a759110dfef4ec5  usr/share/doc/git-annex/html/assistant/menu.png-34fc0ab10ba4736b0e28a94784ca8885  usr/share/doc/git-annex/html/assistant/osx-app.png-2e98430eef3a73aa2c6537727e2e6b2a  usr/share/doc/git-annex/html/assistant/preferences.png-590f25e827d02d53b37f2097a9eb27e7  usr/share/doc/git-annex/html/assistant/quickstart.html-b164f881382408424134aa52e9866850  usr/share/doc/git-annex/html/assistant/release_notes.html-b97ea87a3dba9329fb42147827d7a71b  usr/share/doc/git-annex/html/assistant/remote_sharing_walkthrough.html-c3b25c8a79014b28a0487a1812be6a86  usr/share/doc/git-annex/html/assistant/repogroup.png-52ec95dc090b11a246dd1026e7cd86fc  usr/share/doc/git-annex/html/assistant/repogroups.png-9fc46bce83b5019646e4853065fec9a2  usr/share/doc/git-annex/html/assistant/repositories.png-dcddb85e4ec4dda2ec030ca4307d5bfd  usr/share/doc/git-annex/html/assistant/rsync.net.png-2ec2114e89c70340ea64d582396a2773  usr/share/doc/git-annex/html/assistant/running.png-fb613b836edc313358f1d801e1d9c43f  usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough.html-5cef90a6c7681efe04db89e4cabb9df1  usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/buddylist.png-91e3719633fb46bd36b7330d4bb2a1e2  usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/pairing.png-db44e11831135b45d578ac6e51b2fe71  usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/repolist.png-4f28f7cdc46d08a70c99b04901f5abd2  usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/xmppalert.png-b3f48493cb313da1299769a0a88b26d4  usr/share/doc/git-annex/html/assistant/thanks.html-3904b3966640d84f23bcf9c3d3cc3051  usr/share/doc/git-annex/html/assistant/thumbnail.png-2f8c80fcf1340e81979cbd4e9aae951f  usr/share/doc/git-annex/html/assistant/xmpp.png-f07e8d8fcc01836de290c0fbc3ea0c92  usr/share/doc/git-annex/html/assistant/xmppnudge.png-eef6deb5ab3028057671f5ff74d1cb10  usr/share/doc/git-annex/html/assistant/xmpppairingend.png-9ac3188c29aa365c0d24ad568e631504  usr/share/doc/git-annex/html/backends.html-3eb339561f742000263adf9367d3da12  usr/share/doc/git-annex/html/bare_repositories.html-b2337cc994e1245e3f9bb21cc902aaf5  usr/share/doc/git-annex/html/coding_style.html-466803edb94ea4370795fae7d6f3e073  usr/share/doc/git-annex/html/comments.html-4cda7bd2c40ee654a1908b00c3a1ded3  usr/share/doc/git-annex/html/contact.html-55f64a075c5f293966b40649d93d1b87  usr/share/doc/git-annex/html/copies.html-9e802bc81dcfbf1742d288a9f31f8855  usr/share/doc/git-annex/html/design.html-8d23e8435f297ae114ccdeb897f6b7ef  usr/share/doc/git-annex/html/design/assistant.html-bcff6fe1600a07a8ee26562a8eccd5cb  usr/share/doc/git-annex/html/design/assistant/OSX.html-8ce17a8330dbb9cb96a18aa278b05c3e  usr/share/doc/git-annex/html/design/assistant/android.html-cbdb25c7ec89b1a32dfb3f2d7b29fb18  usr/share/doc/git-annex/html/design/assistant/cloud.html-33be00e17a7ffba05645dc8d09198694  usr/share/doc/git-annex/html/design/assistant/configurators.html-39b89dd3a4ba2863b72d17467f6089d9  usr/share/doc/git-annex/html/design/assistant/deltas.html-81752d54c1f771aa98091353839baf4c  usr/share/doc/git-annex/html/design/assistant/desymlink.html-3ed8c70dcf4a40a22b896edb5a9429d2  usr/share/doc/git-annex/html/design/assistant/encrypted_git_remotes.html-95f76be22a4a02c4f798fa8b76821800  usr/share/doc/git-annex/html/design/assistant/inotify.html-1095fed9931e91cf5f0d368f840b96e2  usr/share/doc/git-annex/html/design/assistant/leftovers.html-e0ef86064e457d0bd73e3e26ed877267  usr/share/doc/git-annex/html/design/assistant/more_cloud_providers.html-218e7eebb4a9f010a2ebe8b932cbb8e4  usr/share/doc/git-annex/html/design/assistant/pairing.html-4ed1c0405641b159d7cd3cfacaf7824c  usr/share/doc/git-annex/html/design/assistant/partial_content.html-56d7545afaacd20719ce59c94b845c19  usr/share/doc/git-annex/html/design/assistant/polls.html-cfe5636ccc5fcf4d71fcef66d5621ec5  usr/share/doc/git-annex/html/design/assistant/polls/Android.html-9d14de8debe853061756dd73d5aa035e  usr/share/doc/git-annex/html/design/assistant/polls/goals_for_April.html-2894cfe72e98dcfd7a119c568665ca6c  usr/share/doc/git-annex/html/design/assistant/polls/prioritizing_special_remotes.html-01b679992d9ebdafb82b697ec914b51d  usr/share/doc/git-annex/html/design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html-749a52361206b9d2f6b58c7f97c2df46  usr/share/doc/git-annex/html/design/assistant/progressbars.html-e46632ef0f32a0554b4478e729c2f209  usr/share/doc/git-annex/html/design/assistant/rate_limiting.html-db9dde8542ade8b669f7c939b0bcc965  usr/share/doc/git-annex/html/design/assistant/screenshot/firstrun.png-fd2bf9e02e1bcc91ef40b80099592caf  usr/share/doc/git-annex/html/design/assistant/screenshot/intro.png-c38ae833c6dfb8857dca0a6cac79f41c  usr/share/doc/git-annex/html/design/assistant/syncing.html-401d56bbef7e4f834e49e144ed240196  usr/share/doc/git-annex/html/design/assistant/transfer_control.html-5ba30a696f2a68591818b0a7ee9111b6  usr/share/doc/git-annex/html/design/assistant/webapp.html-b0295c7c350b5d0fb702923ad6273d6e  usr/share/doc/git-annex/html/design/assistant/windows.html-7e522c25167c6407d8ec0ec8e86a4acb  usr/share/doc/git-annex/html/design/assistant/xmpp.html-6de7af3334b64c378acc5d4bebba4a3b  usr/share/doc/git-annex/html/design/encryption.html-dcf68209c0787e8c5c0a56514a82c227  usr/share/doc/git-annex/html/direct_mode.html-914b2d4bd6b0748aea59ba4ee7a10224  usr/share/doc/git-annex/html/distributed_version_control.html-04d583703191255f43d379f2ed765db5  usr/share/doc/git-annex/html/download.html-9b6103fc86087f71e3967fb41cefb829  usr/share/doc/git-annex/html/encryption.html-146f97002d28c80a3b783ce50dbad93b  usr/share/doc/git-annex/html/favicon.ico-8d9f31e7f913c1e511ab87fc04035da2  usr/share/doc/git-annex/html/feeds.html-ba0016398d6e9b8d6d5f5c2f15627ffe  usr/share/doc/git-annex/html/footer/column_a.html-36cb6c4529bf23554eee5073829fdef7  usr/share/doc/git-annex/html/footer/column_b.html-6f1ef31b1cc3a98c49c09e8a6ba39b7b  usr/share/doc/git-annex/html/future_proofing.html-e194c2c439f436869b8cf4f01fbeb117  usr/share/doc/git-annex/html/git-annex-shell.html-c106d7b90a3e56931371d7f3dec4eaa6  usr/share/doc/git-annex/html/git-annex.html-54e75044a2840e0296d4098661a35fd3  usr/share/doc/git-annex/html/git-union-merge.html-365320869f7e9ca2e4e053d2be065055  usr/share/doc/git-annex/html/how_it_works.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-afaa4c38712a1805f79fb930f2177c08  usr/share/doc/git-annex/html/index.html-e83980341eb0b89a519cf7b53cf6398b  usr/share/doc/git-annex/html/install.html-ff8f301c93b6a1d12296a4cd15d30220  usr/share/doc/git-annex/html/install/Android.html-20d16bef5d64869f044e608a08ea799a  usr/share/doc/git-annex/html/install/ArchLinux.html-59d67cf75de0355f6ae48918ea146145  usr/share/doc/git-annex/html/install/Debian.html-f1c340b3596ba1453a9a49aa85204288  usr/share/doc/git-annex/html/install/Fedora.html-5e8b78918385f354a6696e6fcfff3a5d  usr/share/doc/git-annex/html/install/FreeBSD.html-c95ed84f3ea9f8ba7957da3515d72df1  usr/share/doc/git-annex/html/install/Gentoo.html-92521d161ca5a6af686548aab769a0ae  usr/share/doc/git-annex/html/install/Linux_standalone.html-4769deab931e8a1f4bad23b37c72e396  usr/share/doc/git-annex/html/install/NixOS.html-56286356d8df54578248e07016665ac5  usr/share/doc/git-annex/html/install/OSX.html-abd8fc315442a65db2aa459ecb6cf0f0  usr/share/doc/git-annex/html/install/OSX/old_comments.html-1939faaed691097a0e6381bd26f55ace  usr/share/doc/git-annex/html/install/ScientificLinux5.html-6fde89e241a6e67a850e013dad29ea2f  usr/share/doc/git-annex/html/install/Ubuntu.html-de09edc6a897b9dd5a3e87f19f9c889d  usr/share/doc/git-annex/html/install/cabal.html-cf1474276345c541b993c9a9795be52a  usr/share/doc/git-annex/html/install/fromscratch.html-1b1e1d43ad6c3c1dc508a681a23776d5  usr/share/doc/git-annex/html/install/openSUSE.html-c12fb140009655df3c3a4e0ee36366e7  usr/share/doc/git-annex/html/internals.html-db63e59dba5e3bdc07056af6c34520b7  usr/share/doc/git-annex/html/internals/hashing.html-59497f909e322bcb09e0938f6e5a148e  usr/share/doc/git-annex/html/internals/key_format.html-cc455557211946a3e05c20e96a5cb55c  usr/share/doc/git-annex/html/license.html-55e7b8cb55b0cc3efdde9ee52cce4c3b  usr/share/doc/git-annex/html/license/AGPL.gz-4e0ca2bc63e61797836c39b9a6e33ddc  usr/share/doc/git-annex/html/license/GPL.gz-68f10b63c785bc6767f61275f6a65da9  usr/share/doc/git-annex/html/license/LGPL.gz-c4d57f4479c1f5ffdbc47f5cce7a4901  usr/share/doc/git-annex/html/links/key_concepts.html-3c46c4240ae5902f0c8792e024cfb683  usr/share/doc/git-annex/html/links/other_stuff.html-62937d018ccadff16cfd36d5138c5143  usr/share/doc/git-annex/html/links/the_details.html-550ca9383584fe78d2bee0c3e306da74  usr/share/doc/git-annex/html/location_tracking.html-d29fa683faf26b4eeaf7e2df5ccc9067  usr/share/doc/git-annex/html/logo-bw.svg-da7ef72c147208844c47996d3701b552  usr/share/doc/git-annex/html/logo.png-0e7352e76622961cbe82145534500c9d  usr/share/doc/git-annex/html/logo.svg-bd3617363704ae91f84398a9d113b067  usr/share/doc/git-annex/html/logo_small.png-9ee5f7dbb882268b6b9c40d446b8188f  usr/share/doc/git-annex/html/meta.html-b9b8d4a69d0b10141a629bdc63352e8b  usr/share/doc/git-annex/html/news.html-3bc359b1087e4fb81281b0ccde1b4493  usr/share/doc/git-annex/html/not.html-e0fb93deb8a9b2624a989550f714714d  usr/share/doc/git-annex/html/preferred_content.html-f6bf213ce33de7163bd65fc69f53071c  usr/share/doc/git-annex/html/related_software.html-99c8387075783f9d4260a525ff0c3950  usr/share/doc/git-annex/html/repomap.png-787b49e0eda206605fedf58b2c8fc731  usr/share/doc/git-annex/html/scalability.html-653a65dc513eecea105cc5af922c34df  usr/share/doc/git-annex/html/sidebar.html-963dd1209b9cfb805cfd5d90509a4e0e  usr/share/doc/git-annex/html/sitemap.html-93739e63677f2f7b9cd016d79b68035d  usr/share/doc/git-annex/html/special_remotes.html-ea046b3b40e395bcf36c4920013a6d70  usr/share/doc/git-annex/html/special_remotes/S3.html-4054190ce62387219e2788b794ffddb5  usr/share/doc/git-annex/html/special_remotes/bup.html-a26623c67dd5940257864827b2f7f8cd  usr/share/doc/git-annex/html/special_remotes/directory.html-ba3eb361fb781d58df7cbadb3ae61c45  usr/share/doc/git-annex/html/special_remotes/glacier.html-4595ac5b9e2b75bcab93c973ec6c70a1  usr/share/doc/git-annex/html/special_remotes/hook.html-015c4427e988917d90f61af983ff1e67  usr/share/doc/git-annex/html/special_remotes/rsync.html-91bcf22f8ae50108d821482e6f940f19  usr/share/doc/git-annex/html/special_remotes/web.html-1ccd2ef4c978b66712b36e08d2e632aa  usr/share/doc/git-annex/html/special_remotes/webdav.html-310b57c106602b1780d1155ce0f1810e  usr/share/doc/git-annex/html/special_remotes/xmpp.html-544503961d1cba606f5c401f928051ff  usr/share/doc/git-annex/html/summary.html-55fcdbf4a5a6e8eebb0486eee32de6fb  usr/share/doc/git-annex/html/sync.html-40ff84996d93191b8b2477ba4684b68f  usr/share/doc/git-annex/html/templates/bare.tmpl-fd4053eb8be4e1a659d95deb9b1df2f2  usr/share/doc/git-annex/html/templates/bugtemplate.html-977b742d9da88d36e4dd927c4c069658  usr/share/doc/git-annex/html/templates/walkthrough.tmpl-6ba1652d9ae7c1a09251c8d9638e62a0  usr/share/doc/git-annex/html/testimonials.html-767d3df7127d5fc7ce3eadd62602a1ad  usr/share/doc/git-annex/html/tips.html-e553b61175b15e1db211df77c81bdc97  usr/share/doc/git-annex/html/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html-fe6a2125e4e2d48dff6d4b72463e6b84  usr/share/doc/git-annex/html/tips/Decentralized_repository_behind_a_Firewall.html-9303cbf8d625114cdf9d014a21363dfa  usr/share/doc/git-annex/html/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.html-da126363e988bbb1c2029434afcc074e  usr/share/doc/git-annex/html/tips/Internet_Archive_via_S3.html-3b07049f68a94d6e12c5809fb58f284e  usr/share/doc/git-annex/html/tips/Using_Git-annex_as_a_web_browsing_assistant.html-a11a1250cf1e3c6a5c82904fc7f5c9ce  usr/share/doc/git-annex/html/tips/assume-unstaged.html-c126a4d317f08fd8d43755ab2cf3d20f  usr/share/doc/git-annex/html/tips/automatically_getting_files_on_checkout.html-696a6f3f5f2f52569e9ecec8ad0d94aa  usr/share/doc/git-annex/html/tips/centralised_repository:_starting_from_nothing.html-de4578646bc3b7a8f3bd4d0af499ac9e  usr/share/doc/git-annex/html/tips/centralized_git_repository_tutorial.html-027c8efcc1a9c03a6ef6a4a80e127462  usr/share/doc/git-annex/html/tips/emacs_integration.html-108b999387a7de2ff4d8ae53500ea8cd  usr/share/doc/git-annex/html/tips/finding_duplicate_files.html-adee13342f4d60e364579d2a6cfcf2dc  usr/share/doc/git-annex/html/tips/migrating_data_to_a_new_backend.html-b88debb958799599abed290b006a2375  usr/share/doc/git-annex/html/tips/powerful_file_matching.html-94259379fc668106dca8223e7d511270  usr/share/doc/git-annex/html/tips/recover_data_from_lost+found.html-3ae70e1eb0812cd4796af14c3983027f  usr/share/doc/git-annex/html/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html-e4a7db1a35d2033ce8267ef674dfe939  usr/share/doc/git-annex/html/tips/setup_a_public_repository_on_a_web_site.html-d1e6d33155d7ac68a8539351a5ad4326  usr/share/doc/git-annex/html/tips/untrusted_repositories.html-4c73de1034928b2f0bf5febd4f0184c9  usr/share/doc/git-annex/html/tips/using_Amazon_Glacier.html-5291749ff0acbfdd6057399dea4a2a7a  usr/share/doc/git-annex/html/tips/using_Amazon_S3.html-cb8bd698cd43c5c031082b50aefa4eec  usr/share/doc/git-annex/html/tips/using_Google_Cloud_Storage.html-0650b20442eb4dfddb9baf8e9996cf2d  usr/share/doc/git-annex/html/tips/using_box.com_as_a_special_remote.html-b0f0e743aaca0c7ba15168abc4a72036  usr/share/doc/git-annex/html/tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html-b7479da4c4d71763f1e2325be3200433  usr/share/doc/git-annex/html/tips/using_gitolite_with_git-annex.html-66b6d9fe6def3367c38eb07c31ae9802  usr/share/doc/git-annex/html/tips/using_the_SHA1_backend.html-204f4c897832b06ebfbc2c291138c6ef  usr/share/doc/git-annex/html/tips/using_the_web_as_a_special_remote.html-cd580aa02a8204f51d4a5fdae5e43c32  usr/share/doc/git-annex/html/tips/visualizing_repositories_with_gource.html-919131bcd8658ae2c2670849953945a2  usr/share/doc/git-annex/html/tips/visualizing_repositories_with_gource/screenshot.jpg-313149a6f3cf0939263eef6da49b79df  usr/share/doc/git-annex/html/tips/what_to_do_when_a_repository_is_corrupted.html-d8f4ff1e7d35ec2b09ee81982f1cc994  usr/share/doc/git-annex/html/tips/what_to_do_when_you_lose_a_repository.html-1e58adc871a07107cd56057197b1af0b  usr/share/doc/git-annex/html/transferring_data.html-f7ad8a50509a8d0f8ef37ad97565111f  usr/share/doc/git-annex/html/trust.html-b0d8986b2472aaee300a1b567077ad33  usr/share/doc/git-annex/html/upgrades.html-f6c97d0651c7a5acf8f59c0fc310cd20  usr/share/doc/git-annex/html/upgrades/SHA_size.html-8e217f7cc0d1973807481661dbd2bdc1  usr/share/doc/git-annex/html/use_case/Alice.html-2d7a5fdb1016a57ae9a00fb83173d035  usr/share/doc/git-annex/html/use_case/Bob.html-5e836dcedc1b25bfbf48d6dac7810ce3  usr/share/doc/git-annex/html/users.html-8e6ba607564550ca0467532a3027a135  usr/share/doc/git-annex/html/users/chrysn.html-dbb3ca851afc39980944344f597d1bce  usr/share/doc/git-annex/html/users/fmarier.html-a22903aca0886e1ecdaef5c3778149f9  usr/share/doc/git-annex/html/users/gebi.html-7208b3071785ad698ab4c5aaebd0438c  usr/share/doc/git-annex/html/users/joey.html-743391440135199e70044e97322051fb  usr/share/doc/git-annex/html/videos.html-2423df4764aced36bb632e028b705b26  usr/share/doc/git-annex/html/videos/FOSDEM2012.html-85bc3b286086e1f7e906aad3d8389a66  usr/share/doc/git-annex/html/videos/LCA2013.html-b474ac826f7e8acb684823f8f02971b1  usr/share/doc/git-annex/html/videos/git-annex_assistant_archiving.html-49ed3bf9ee79500b629bd73725a75047  usr/share/doc/git-annex/html/videos/git-annex_assistant_introduction.html-56126b607227a182e7a772273b287576  usr/share/doc/git-annex/html/videos/git-annex_assistant_remote_sharing.html-3a301cd8e6eb3b29bf380c2e775cee37  usr/share/doc/git-annex/html/videos/git-annex_assistant_sync_demo.html-268ff933732798a4e7807debb75765fe  usr/share/doc/git-annex/html/videos/git-annex_watch_demo.html-fc5532b490cee25f57a977a767e97f87  usr/share/doc/git-annex/html/videos/git-annex_weppapp_demo.html-d798ae857754a90a2a53e980c6af0eb9  usr/share/doc/git-annex/html/walkthrough.html-03d8415b3143efe76eacbb7e5c837403  usr/share/doc/git-annex/html/walkthrough/adding_a_remote.html-33f436aa1b44dfef282ca546764c1e34  usr/share/doc/git-annex/html/walkthrough/adding_files.html-22da998647d5c37cba452f733a441838  usr/share/doc/git-annex/html/walkthrough/automatically_managing_content.html-caeaeeaea85feee563943dad3a84da12  usr/share/doc/git-annex/html/walkthrough/backups.html-3d73e09e90d0f85dd15ded89625bfa2e  usr/share/doc/git-annex/html/walkthrough/creating_a_repository.html-98b54e9bf4e04d7cee3bfb3985be482e  usr/share/doc/git-annex/html/walkthrough/fsck:_verifying_your_data.html-6d1abc65429df9a7c1d87b65a30ec950  usr/share/doc/git-annex/html/walkthrough/fsck:_when_things_go_wrong.html-e4410117cff03b8a9f0ec87b4590b083  usr/share/doc/git-annex/html/walkthrough/getting_file_content.html-cd8b5ef502c25c2b421a6203502dd8f8  usr/share/doc/git-annex/html/walkthrough/modifying_annexed_files.html-c811dc97b861f08bdd2bc27acde4a356  usr/share/doc/git-annex/html/walkthrough/more.html-2f329b6821030c0287f868ff684c3817  usr/share/doc/git-annex/html/walkthrough/moving_file_content_between_repositories.html-6cbdae72514a4907cac8846c65099156  usr/share/doc/git-annex/html/walkthrough/removing_files.html-33aef95c4a4b15d1b57efda2e5b5b121  usr/share/doc/git-annex/html/walkthrough/removing_files:_When_things_go_wrong.html-5ca66a6912647361cac8da91506d2d45  usr/share/doc/git-annex/html/walkthrough/renaming_files.html-7ee72345527052122996f0cf3c2ca1b1  usr/share/doc/git-annex/html/walkthrough/syncing.html-3a99d4e12d425cbb45f28951c8eb7d1f  usr/share/doc/git-annex/html/walkthrough/transferring_files:_When_things_go_wrong.html-ed1c0a08473bf439b5d1692d5e5ade85  usr/share/doc/git-annex/html/walkthrough/unused_data.html-411865f3015512c3f561271fc452ee59  usr/share/doc/git-annex/html/walkthrough/using_bup.html-751895de1877010e57d322d9eb425189  usr/share/doc/git-annex/html/walkthrough/using_ssh_remotes.html-c0d91beb3dfd17a071524d8fafcd27af  usr/share/man/man1/git-annex-shell.1.gz-64f0e285f9c90fc85b91013dca618f0c  usr/share/man/man1/git-annex.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/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 (681 → absent bytes)

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

binary file changed (28780 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/copyright
@@ -1,783 +0,0 @@-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/-Source: native package--Files: *-Copyright: © 2010-2013 Joey Hess <joey@kitenet.net>-License: GPL-3+--Files: Assistant/WebApp.hs Assistant/WebApp/* templates/* static/*-Copyright: © 2012-2013 Joey Hess <joey@kitenet.net>-License: AGPL-3+--Files: Utility/ThreadScheduler.hs-Copyright: 2011 Bas van Dijk & Roel van Dijk-           2012 Joey Hess <joey@kitenet.net>-License: GPL-3+--Files: Utility/Gpg/Types.hs-Copyright: 2013 guilhem <guilhem@fripost.org>-License: GPL-3+--Files: doc/logo* */favicon.ico standalone/osx/git-annex.app/Contents/Resources/git-annex.icns-Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>-           2010 Joey Hess <joey@kitenet.net>-License: other-  Free to modify and redistribute with due credit, and obviously free to use.--Files: Utility/Mounts.hsc-Copyright: Volker Wysk <hsss@volker-wysk.de>-License: LGPL-2.1+--Files: Utility/libmounts.c-Copyright: 1980, 1989, 1993, 1994 The Regents of the University of California-           2001 David Rufino <daverufino@btinternet.com>-           2012 Joey Hess <joey@kitenet.net>-License: BSD-3-clause- * Copyright (c) 1980, 1989, 1993, 1994- *      The Regents of the University of California.  All rights reserved.- * Copyright (c) 2001- *      David Rufino <daverufino@btinternet.com>- * Copyright 2012- *      Joey Hess <joey@kitenet.net>- *- * 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 University nor the names of its 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 REGENTS 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.--Files: static/jquery*-Copyright: © 2005-2011 by John Resig, Branden Aaron & Jörn Zaefferer-           © 2011 The Dojo Foundation-License: MIT or GPL-2- The full text of version 2 of the GPL is distributed in- /usr/share/common-licenses/GPL-2 on Debian systems. The text of the MIT- license follows:- .- Permission is hereby granted, free of charge, to any person obtaining- a copy of this software and associated documentation files (the- "Software"), to deal in the Software without restriction, including- without limitation the rights to use, copy, modify, merge, publish,- distribute, sublicense, and/or sell copies of the Software, and to- permit persons to whom the Software is furnished to do so, subject to- the following conditions:- .- The above copyright notice and this permission notice shall be- included in all copies or substantial portions of the Software.- .- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.--Files: static/*/bootstrap* static/img/glyphicons-halflings*-Copyright: 2012 Twitter, Inc.-License: Apache-2.0- Licensed under the Apache License, Version 2.0 (the "License");- you may not use this file except in compliance with the License.- You may obtain a copy of the License at- .-        http://www.apache.org/licenses/LICENSE-2.0- .- Unless required by applicable law or agreed to in writing, software- distributed under the License is distributed on an "AS IS" BASIS,- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- See the License for the specific language governing permissions and- limitations under the License.- .- The complete text of the Apache License is distributed in- /usr/share/common-licenses/Apache-2.0 on Debian systems.--License: GPL-3+- The full text of version 3 of the GPL is distributed as doc/license/GPL in- this package's source, or in /usr/share/common-licenses/GPL-3 on- Debian systems.--License: LGPL-2.1+- The full text of version 2.1 of the LGPL is distributed as doc/license/LGPL- in this package's source, or in /usr/share/common-licenses/LGPL-2.1- on Debian systems.--License: AGPL-3+-                      GNU AFFERO GENERAL PUBLIC LICENSE-                         Version 3, 19 November 2007- .-   Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>-   Everyone is permitted to copy and distribute verbatim copies-   of this license document, but changing it is not allowed.- .-                              Preamble- .-    The GNU Affero General Public License is a free, copyleft license for-  software and other kinds of works, specifically designed to ensure-  cooperation with the community in the case of network server software.- .-    The licenses for most software and other practical works are designed-  to take away your freedom to share and change the works.  By contrast,-  our General Public Licenses are intended to guarantee your freedom to-  share and change all versions of a program--to make sure it remains free-  software for all its users.- .-    When we speak of free software, we are referring to freedom, not-  price.  Our General Public Licenses are designed to make sure that you-  have the freedom to distribute copies of free software (and charge for-  them if you wish), that you receive source code or can get it if you-  want it, that you can change the software or use pieces of it in new-  free programs, and that you know you can do these things.- .-    Developers that use our General Public Licenses protect your rights-  with two steps: (1) assert copyright on the software, and (2) offer-  you this License which gives you legal permission to copy, distribute-  and/or modify the software.- .-    A secondary benefit of defending all users' freedom is that-  improvements made in alternate versions of the program, if they-  receive widespread use, become available for other developers to-  incorporate.  Many developers of free software are heartened and-  encouraged by the resulting cooperation.  However, in the case of-  software used on network servers, this result may fail to come about.-  The GNU General Public License permits making a modified version and-  letting the public access it on a server without ever releasing its-  source code to the public.- .-    The GNU Affero General Public License is designed specifically to-  ensure that, in such cases, the modified source code becomes available-  to the community.  It requires the operator of a network server to-  provide the source code of the modified version running there to the-  users of that server.  Therefore, public use of a modified version, on-  a publicly accessible server, gives the public access to the source-  code of the modified version.- .-    An older license, called the Affero General Public License and-  published by Affero, was designed to accomplish similar goals.  This is-  a different license, not a version of the Affero GPL, but Affero has-  released a new version of the Affero GPL which permits relicensing under-  this license.- .-    The precise terms and conditions for copying, distribution and-  modification follow.- .-                         TERMS AND CONDITIONS- .-    0. Definitions.- .-    "This License" refers to version 3 of the GNU Affero General Public License.- .-    "Copyright" also means copyright-like laws that apply to other kinds of-  works, such as semiconductor masks.- .-    "The Program" refers to any copyrightable work licensed under this-  License.  Each licensee is addressed as "you".  "Licensees" and-  "recipients" may be individuals or organizations.- .-    To "modify" a work means to copy from or adapt all or part of the work-  in a fashion requiring copyright permission, other than the making of an-  exact copy.  The resulting work is called a "modified version" of the-  earlier work or a work "based on" the earlier work.- .-    A "covered work" means either the unmodified Program or a work based-  on the Program.- .-    To "propagate" a work means to do anything with it that, without-  permission, would make you directly or secondarily liable for-  infringement under applicable copyright law, except executing it on a-  computer or modifying a private copy.  Propagation includes copying,-  distribution (with or without modification), making available to the-  public, and in some countries other activities as well.- .-    To "convey" a work means any kind of propagation that enables other-  parties to make or receive copies.  Mere interaction with a user through-  a computer network, with no transfer of a copy, is not conveying.- .-    An interactive user interface displays "Appropriate Legal Notices"-  to the extent that it includes a convenient and prominently visible-  feature that (1) displays an appropriate copyright notice, and (2)-  tells the user that there is no warranty for the work (except to the-  extent that warranties are provided), that licensees may convey the-  work under this License, and how to view a copy of this License.  If-  the interface presents a list of user commands or options, such as a-  menu, a prominent item in the list meets this criterion.- .-    1. Source Code.- .-    The "source code" for a work means the preferred form of the work-  for making modifications to it.  "Object code" means any non-source-  form of a work.- .-    A "Standard Interface" means an interface that either is an official-  standard defined by a recognized standards body, or, in the case of-  interfaces specified for a particular programming language, one that-  is widely used among developers working in that language.- .-    The "System Libraries" of an executable work include anything, other-  than the work as a whole, that (a) is included in the normal form of-  packaging a Major Component, but which is not part of that Major-  Component, and (b) serves only to enable use of the work with that-  Major Component, or to implement a Standard Interface for which an-  implementation is available to the public in source code form.  A-  "Major Component", in this context, means a major essential component-  (kernel, window system, and so on) of the specific operating system-  (if any) on which the executable work runs, or a compiler used to-  produce the work, or an object code interpreter used to run it.- .-    The "Corresponding Source" for a work in object code form means all-  the source code needed to generate, install, and (for an executable-  work) run the object code and to modify the work, including scripts to-  control those activities.  However, it does not include the work's-  System Libraries, or general-purpose tools or generally available free-  programs which are used unmodified in performing those activities but-  which are not part of the work.  For example, Corresponding Source-  includes interface definition files associated with source files for-  the work, and the source code for shared libraries and dynamically-  linked subprograms that the work is specifically designed to require,-  such as by intimate data communication or control flow between those-  subprograms and other parts of the work.- .-    The Corresponding Source need not include anything that users-  can regenerate automatically from other parts of the Corresponding-  Source.- .-    The Corresponding Source for a work in source code form is that-  same work.- .-    2. Basic Permissions.- .-    All rights granted under this License are granted for the term of-  copyright on the Program, and are irrevocable provided the stated-  conditions are met.  This License explicitly affirms your unlimited-  permission to run the unmodified Program.  The output from running a-  covered work is covered by this License only if the output, given its-  content, constitutes a covered work.  This License acknowledges your-  rights of fair use or other equivalent, as provided by copyright law.- .-    You may make, run and propagate covered works that you do not-  convey, without conditions so long as your license otherwise remains-  in force.  You may convey covered works to others for the sole purpose-  of having them make modifications exclusively for you, or provide you-  with facilities for running those works, provided that you comply with-  the terms of this License in conveying all material for which you do-  not control copyright.  Those thus making or running the covered works-  for you must do so exclusively on your behalf, under your direction-  and control, on terms that prohibit them from making any copies of-  your copyrighted material outside their relationship with you.- .-    Conveying under any other circumstances is permitted solely under-  the conditions stated below.  Sublicensing is not allowed; section 10-  makes it unnecessary.- .-    3. Protecting Users' Legal Rights From Anti-Circumvention Law.- .-    No covered work shall be deemed part of an effective technological-  measure under any applicable law fulfilling obligations under article-  11 of the WIPO copyright treaty adopted on 20 December 1996, or-  similar laws prohibiting or restricting circumvention of such-  measures.- .-    When you convey a covered work, you waive any legal power to forbid-  circumvention of technological measures to the extent such circumvention-  is effected by exercising rights under this License with respect to-  the covered work, and you disclaim any intention to limit operation or-  modification of the work as a means of enforcing, against the work's-  users, your or third parties' legal rights to forbid circumvention of-  technological measures.- .-    4. Conveying Verbatim Copies.- .-    You may convey verbatim copies of the Program's source code as you-  receive it, in any medium, provided that you conspicuously and-  appropriately publish on each copy an appropriate copyright notice;-  keep intact all notices stating that this License and any-  non-permissive terms added in accord with section 7 apply to the code;-  keep intact all notices of the absence of any warranty; and give all-  recipients a copy of this License along with the Program.- .-    You may charge any price or no price for each copy that you convey,-  and you may offer support or warranty protection for a fee.- .-    5. Conveying Modified Source Versions.- .-    You may convey a work based on the Program, or the modifications to-  produce it from the Program, in the form of source code under the-  terms of section 4, provided that you also meet all of these conditions:- .-      a) The work must carry prominent notices stating that you modified-      it, and giving a relevant date.- .-      b) The work must carry prominent notices stating that it is-      released under this License and any conditions added under section-      7.  This requirement modifies the requirement in section 4 to-      "keep intact all notices".- .-      c) You must license the entire work, as a whole, under this-      License to anyone who comes into possession of a copy.  This-      License will therefore apply, along with any applicable section 7-      additional terms, to the whole of the work, and all its parts,-      regardless of how they are packaged.  This License gives no-      permission to license the work in any other way, but it does not-      invalidate such permission if you have separately received it.- .-      d) If the work has interactive user interfaces, each must display-      Appropriate Legal Notices; however, if the Program has interactive-      interfaces that do not display Appropriate Legal Notices, your-      work need not make them do so.- .-    A compilation of a covered work with other separate and independent-  works, which are not by their nature extensions of the covered work,-  and which are not combined with it such as to form a larger program,-  in or on a volume of a storage or distribution medium, is called an-  "aggregate" if the compilation and its resulting copyright are not-  used to limit the access or legal rights of the compilation's users-  beyond what the individual works permit.  Inclusion of a covered work-  in an aggregate does not cause this License to apply to the other-  parts of the aggregate.- .-    6. Conveying Non-Source Forms.- .-    You may convey a covered work in object code form under the terms-  of sections 4 and 5, provided that you also convey the-  machine-readable Corresponding Source under the terms of this License,-  in one of these ways:- .-      a) Convey the object code in, or embodied in, a physical product-      (including a physical distribution medium), accompanied by the-      Corresponding Source fixed on a durable physical medium-      customarily used for software interchange.- .-      b) Convey the object code in, or embodied in, a physical product-      (including a physical distribution medium), accompanied by a-      written offer, valid for at least three years and valid for as-      long as you offer spare parts or customer support for that product-      model, to give anyone who possesses the object code either (1) a-      copy of the Corresponding Source for all the software in the-      product that is covered by this License, on a durable physical-      medium customarily used for software interchange, for a price no-      more than your reasonable cost of physically performing this-      conveying of source, or (2) access to copy the-      Corresponding Source from a network server at no charge.- .-      c) Convey individual copies of the object code with a copy of the-      written offer to provide the Corresponding Source.  This-      alternative is allowed only occasionally and noncommercially, and-      only if you received the object code with such an offer, in accord-      with subsection 6b.- .-      d) Convey the object code by offering access from a designated-      place (gratis or for a charge), and offer equivalent access to the-      Corresponding Source in the same way through the same place at no-      further charge.  You need not require recipients to copy the-      Corresponding Source along with the object code.  If the place to-      copy the object code is a network server, the Corresponding Source-      may be on a different server (operated by you or a third party)-      that supports equivalent copying facilities, provided you maintain-      clear directions next to the object code saying where to find the-      Corresponding Source.  Regardless of what server hosts the-      Corresponding Source, you remain obligated to ensure that it is-      available for as long as needed to satisfy these requirements.- .-      e) Convey the object code using peer-to-peer transmission, provided-      you inform other peers where the object code and Corresponding-      Source of the work are being offered to the general public at no-      charge under subsection 6d.- .-    A separable portion of the object code, whose source code is excluded-  from the Corresponding Source as a System Library, need not be-  included in conveying the object code work.- .-    A "User Product" is either (1) a "consumer product", which means any-  tangible personal property which is normally used for personal, family,-  or household purposes, or (2) anything designed or sold for incorporation-  into a dwelling.  In determining whether a product is a consumer product,-  doubtful cases shall be resolved in favor of coverage.  For a particular-  product received by a particular user, "normally used" refers to a-  typical or common use of that class of product, regardless of the status-  of the particular user or of the way in which the particular user-  actually uses, or expects or is expected to use, the product.  A product-  is a consumer product regardless of whether the product has substantial-  commercial, industrial or non-consumer uses, unless such uses represent-  the only significant mode of use of the product.- .-    "Installation Information" for a User Product means any methods,-  procedures, authorization keys, or other information required to install-  and execute modified versions of a covered work in that User Product from-  a modified version of its Corresponding Source.  The information must-  suffice to ensure that the continued functioning of the modified object-  code is in no case prevented or interfered with solely because-  modification has been made.- .-    If you convey an object code work under this section in, or with, or-  specifically for use in, a User Product, and the conveying occurs as-  part of a transaction in which the right of possession and use of the-  User Product is transferred to the recipient in perpetuity or for a-  fixed term (regardless of how the transaction is characterized), the-  Corresponding Source conveyed under this section must be accompanied-  by the Installation Information.  But this requirement does not apply-  if neither you nor any third party retains the ability to install-  modified object code on the User Product (for example, the work has-  been installed in ROM).- .-    The requirement to provide Installation Information does not include a-  requirement to continue to provide support service, warranty, or updates-  for a work that has been modified or installed by the recipient, or for-  the User Product in which it has been modified or installed.  Access to a-  network may be denied when the modification itself materially and-  adversely affects the operation of the network or violates the rules and-  protocols for communication across the network.- .-    Corresponding Source conveyed, and Installation Information provided,-  in accord with this section must be in a format that is publicly-  documented (and with an implementation available to the public in-  source code form), and must require no special password or key for-  unpacking, reading or copying.- .-    7. Additional Terms.- .-    "Additional permissions" are terms that supplement the terms of this-  License by making exceptions from one or more of its conditions.-  Additional permissions that are applicable to the entire Program shall-  be treated as though they were included in this License, to the extent-  that they are valid under applicable law.  If additional permissions-  apply only to part of the Program, that part may be used separately-  under those permissions, but the entire Program remains governed by-  this License without regard to the additional permissions.- .-    When you convey a copy of a covered work, you may at your option-  remove any additional permissions from that copy, or from any part of-  it.  (Additional permissions may be written to require their own-  removal in certain cases when you modify the work.)  You may place-  additional permissions on material, added by you to a covered work,-  for which you have or can give appropriate copyright permission.- .-    Notwithstanding any other provision of this License, for material you-  add to a covered work, you may (if authorized by the copyright holders of-  that material) supplement the terms of this License with terms:- .-      a) Disclaiming warranty or limiting liability differently from the-      terms of sections 15 and 16 of this License; or- .-      b) Requiring preservation of specified reasonable legal notices or-      author attributions in that material or in the Appropriate Legal-      Notices displayed by works containing it; or- .-      c) Prohibiting misrepresentation of the origin of that material, or-      requiring that modified versions of such material be marked in-      reasonable ways as different from the original version; or- .-      d) Limiting the use for publicity purposes of names of licensors or-      authors of the material; or- .-      e) Declining to grant rights under trademark law for use of some-      trade names, trademarks, or service marks; or- .-      f) Requiring indemnification of licensors and authors of that-      material by anyone who conveys the material (or modified versions of-      it) with contractual assumptions of liability to the recipient, for-      any liability that these contractual assumptions directly impose on-      those licensors and authors.- .-    All other non-permissive additional terms are considered "further-  restrictions" within the meaning of section 10.  If the Program as you-  received it, or any part of it, contains a notice stating that it is-  governed by this License along with a term that is a further-  restriction, you may remove that term.  If a license document contains-  a further restriction but permits relicensing or conveying under this-  License, you may add to a covered work material governed by the terms-  of that license document, provided that the further restriction does-  not survive such relicensing or conveying.- .-    If you add terms to a covered work in accord with this section, you-  must place, in the relevant source files, a statement of the-  additional terms that apply to those files, or a notice indicating-  where to find the applicable terms.- .-    Additional terms, permissive or non-permissive, may be stated in the-  form of a separately written license, or stated as exceptions;-  the above requirements apply either way.- .-    8. Termination.- .-    You may not propagate or modify a covered work except as expressly-  provided under this License.  Any attempt otherwise to propagate or-  modify it is void, and will automatically terminate your rights under-  this License (including any patent licenses granted under the third-  paragraph of section 11).- .-    However, if you cease all violation of this License, then your-  license from a particular copyright holder is reinstated (a)-  provisionally, unless and until the copyright holder explicitly and-  finally terminates your license, and (b) permanently, if the copyright-  holder fails to notify you of the violation by some reasonable means-  prior to 60 days after the cessation.- .-    Moreover, your license from a particular copyright holder is-  reinstated permanently if the copyright holder notifies you of the-  violation by some reasonable means, this is the first time you have-  received notice of violation of this License (for any work) from that-  copyright holder, and you cure the violation prior to 30 days after-  your receipt of the notice.- .-    Termination of your rights under this section does not terminate the-  licenses of parties who have received copies or rights from you under-  this License.  If your rights have been terminated and not permanently-  reinstated, you do not qualify to receive new licenses for the same-  material under section 10.- .-    9. Acceptance Not Required for Having Copies.- .-    You are not required to accept this License in order to receive or-  run a copy of the Program.  Ancillary propagation of a covered work-  occurring solely as a consequence of using peer-to-peer transmission-  to receive a copy likewise does not require acceptance.  However,-  nothing other than this License grants you permission to propagate or-  modify any covered work.  These actions infringe copyright if you do-  not accept this License.  Therefore, by modifying or propagating a-  covered work, you indicate your acceptance of this License to do so.- .-    10. Automatic Licensing of Downstream Recipients.- .-    Each time you convey a covered work, the recipient automatically-  receives a license from the original licensors, to run, modify and-  propagate that work, subject to this License.  You are not responsible-  for enforcing compliance by third parties with this License.- .-    An "entity transaction" is a transaction transferring control of an-  organization, or substantially all assets of one, or subdividing an-  organization, or merging organizations.  If propagation of a covered-  work results from an entity transaction, each party to that-  transaction who receives a copy of the work also receives whatever-  licenses to the work the party's predecessor in interest had or could-  give under the previous paragraph, plus a right to possession of the-  Corresponding Source of the work from the predecessor in interest, if-  the predecessor has it or can get it with reasonable efforts.- .-    You may not impose any further restrictions on the exercise of the-  rights granted or affirmed under this License.  For example, you may-  not impose a license fee, royalty, or other charge for exercise of-  rights granted under this License, and you may not initiate litigation-  (including a cross-claim or counterclaim in a lawsuit) alleging that-  any patent claim is infringed by making, using, selling, offering for-  sale, or importing the Program or any portion of it.- .-    11. Patents.- .-    A "contributor" is a copyright holder who authorizes use under this-  License of the Program or a work on which the Program is based.  The-  work thus licensed is called the contributor's "contributor version".- .-    A contributor's "essential patent claims" are all patent claims-  owned or controlled by the contributor, whether already acquired or-  hereafter acquired, that would be infringed by some manner, permitted-  by this License, of making, using, or selling its contributor version,-  but do not include claims that would be infringed only as a-  consequence of further modification of the contributor version.  For-  purposes of this definition, "control" includes the right to grant-  patent sublicenses in a manner consistent with the requirements of-  this License.- .-    Each contributor grants you a non-exclusive, worldwide, royalty-free-  patent license under the contributor's essential patent claims, to-  make, use, sell, offer for sale, import and otherwise run, modify and-  propagate the contents of its contributor version.- .-    In the following three paragraphs, a "patent license" is any express-  agreement or commitment, however denominated, not to enforce a patent-  (such as an express permission to practice a patent or covenant not to-  sue for patent infringement).  To "grant" such a patent license to a-  party means to make such an agreement or commitment not to enforce a-  patent against the party.- .-    If you convey a covered work, knowingly relying on a patent license,-  and the Corresponding Source of the work is not available for anyone-  to copy, free of charge and under the terms of this License, through a-  publicly available network server or other readily accessible means,-  then you must either (1) cause the Corresponding Source to be so-  available, or (2) arrange to deprive yourself of the benefit of the-  patent license for this particular work, or (3) arrange, in a manner-  consistent with the requirements of this License, to extend the patent-  license to downstream recipients.  "Knowingly relying" means you have-  actual knowledge that, but for the patent license, your conveying the-  covered work in a country, or your recipient's use of the covered work-  in a country, would infringe one or more identifiable patents in that-  country that you have reason to believe are valid.- .-    If, pursuant to or in connection with a single transaction or-  arrangement, you convey, or propagate by procuring conveyance of, a-  covered work, and grant a patent license to some of the parties-  receiving the covered work authorizing them to use, propagate, modify-  or convey a specific copy of the covered work, then the patent license-  you grant is automatically extended to all recipients of the covered-  work and works based on it.- .-    A patent license is "discriminatory" if it does not include within-  the scope of its coverage, prohibits the exercise of, or is-  conditioned on the non-exercise of one or more of the rights that are-  specifically granted under this License.  You may not convey a covered-  work if you are a party to an arrangement with a third party that is-  in the business of distributing software, under which you make payment-  to the third party based on the extent of your activity of conveying-  the work, and under which the third party grants, to any of the-  parties who would receive the covered work from you, a discriminatory-  patent license (a) in connection with copies of the covered work-  conveyed by you (or copies made from those copies), or (b) primarily-  for and in connection with specific products or compilations that-  contain the covered work, unless you entered into that arrangement,-  or that patent license was granted, prior to 28 March 2007.- .-    Nothing in this License shall be construed as excluding or limiting-  any implied license or other defenses to infringement that may-  otherwise be available to you under applicable patent law.- .-    12. No Surrender of Others' Freedom.- .-    If conditions are imposed on you (whether by court order, agreement or-  otherwise) that contradict the conditions of this License, they do not-  excuse you from the conditions of this License.  If you cannot convey a-  covered work so as to satisfy simultaneously your obligations under this-  License and any other pertinent obligations, then as a consequence you may-  not convey it at all.  For example, if you agree to terms that obligate you-  to collect a royalty for further conveying from those to whom you convey-  the Program, the only way you could satisfy both those terms and this-  License would be to refrain entirely from conveying the Program.- .-    13. Remote Network Interaction; Use with the GNU General Public License.- .-    Notwithstanding any other provision of this License, if you modify the-  Program, your modified version must prominently offer all users-  interacting with it remotely through a computer network (if your version-  supports such interaction) an opportunity to receive the Corresponding-  Source of your version by providing access to the Corresponding Source-  from a network server at no charge, through some standard or customary-  means of facilitating copying of software.  This Corresponding Source-  shall include the Corresponding Source for any work covered by version 3-  of the GNU General Public License that is incorporated pursuant to the-  following paragraph.- .-    Notwithstanding any other provision of this License, you have-  permission to link or combine any covered work with a work licensed-  under version 3 of the GNU General Public License into a single-  combined work, and to convey the resulting work.  The terms of this-  License will continue to apply to the part which is the covered work,-  but the work with which it is combined will remain governed by version-  3 of the GNU General Public License.- .-    14. Revised Versions of this License.- .-    The Free Software Foundation may publish revised and/or new versions of-  the GNU Affero General Public License from time to time.  Such new versions-  will be similar in spirit to the present version, but may differ in detail to-  address new problems or concerns.- .-    Each version is given a distinguishing version number.  If the-  Program specifies that a certain numbered version of the GNU Affero General-  Public License "or any later version" applies to it, you have the-  option of following the terms and conditions either of that numbered-  version or of any later version published by the Free Software-  Foundation.  If the Program does not specify a version number of the-  GNU Affero General Public License, you may choose any version ever published-  by the Free Software Foundation.- .-    If the Program specifies that a proxy can decide which future-  versions of the GNU Affero General Public License can be used, that proxy's-  public statement of acceptance of a version permanently authorizes you-  to choose that version for the Program.- .-    Later license versions may give you additional or different-  permissions.  However, no additional obligations are imposed on any-  author or copyright holder as a result of your choosing to follow a-  later version.- .-    15. Disclaimer of Warranty.- .-    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY-  APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT-  HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY-  OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,-  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-  PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM-  IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF-  ALL NECESSARY SERVICING, REPAIR OR CORRECTION.- .-    16. Limitation of Liability.- .-    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING-  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS-  THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY-  GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE-  USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF-  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD-  PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),-  EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF-  SUCH DAMAGES.- .-    17. Interpretation of Sections 15 and 16.- .-    If the disclaimer of warranty and limitation of liability provided-  above cannot be given local legal effect according to their terms,-  reviewing courts shall apply local law that most closely approximates-  an absolute waiver of all civil liability in connection with the-  Program, unless a warranty or assumption of liability accompanies a-  copy of the Program in return for a fee.- .-                       END OF TERMS AND CONDITIONS- .-              How to Apply These Terms to Your New Programs- .-    If you develop a new program, and you want it to be of the greatest-  possible use to the public, the best way to achieve this is to make it-  free software which everyone can redistribute and change under these terms.- .-    To do so, attach the following notices to the program.  It is safest-  to attach them to the start of each source file to most effectively-  state the exclusion of warranty; and each file should have at least-  the "copyright" line and a pointer to where the full notice is found.- .-      <one line to give the program's name and a brief idea of what it does.>-      Copyright (C) <year>  <name of author>- .-      This program is free software: you can redistribute it and/or modify-      it under the terms of the GNU Affero General Public License as published by-      the Free Software Foundation, either version 3 of the License, or-      (at your option) any later version.- .-      This program is distributed in the hope that it will be useful,-      but WITHOUT ANY WARRANTY; without even the implied warranty of-      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the-      GNU Affero General Public License for more details.- .-      You should have received a copy of the GNU Affero General Public License-      along with this program.  If not, see <http://www.gnu.org/licenses/>.- .-  Also add information on how to contact you by electronic and paper mail.- .-    If your software can interact with users remotely through a computer-  network, you should also make sure that it provides a way for users to-  get its source.  For example, if your program is a web application, its-  interface could display a "Source" link that leads users to an archive-  of the code.  There are many ways you could offer source, and different-  solutions will be better for different programs; see section 13 for the-  specific requirements.- .-    You should also get your employer (if you work as a programmer) or school,-  if any, to sign a "copyright disclaimer" for the program, if necessary.-  For more information on this, and how to apply and follow the GNU AGPL, see-  <http://www.gnu.org/licenses/>.
− debian/git-annex/usr/share/doc/git-annex/html/assistant.html
@@ -1,211 +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>assistant</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">-assistant--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><span class="selflink">assistant</span></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The git-annex assistant creates a folder on each of your computers,-removable drives, and cloud services, which-it keeps synchronised, so its contents are the same everywhere.-It's very easy to use, and has all the power of git and git-annex.</p>--<h2>installation</h2>--<p>The git-annex assistant comes as part of git-annex, starting with version-3.20120924. See <a href="./install.html">install</a> to get it installed.</p>--<p>Note that the git-annex assistant is still beta quality code. See-the <a href="./assistant/release_notes.html">release notes</a> for known infelicities and upgrade instructions.</p>--<h2>intro screencast</h2>--<p><video controls width="400">-<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">-</video><br>-A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">8 minute screencast</a>-introducing the <span class="selflink">git-annex assistant</span></a>.</p>-----<h2>documentation</h2>--<ul>-<li><a href="./assistant/quickstart.html">Basic usage</a></li>-<li>Want to make two nearby computers share the same synchronised folder?<br/>-Follow the <a href="./assistant/local_pairing_walkthrough.html">local pairing walkthrough</a>.</li>-<li>Or perhaps you want to share files between computers in different-locations, like home and work?<br/>-Follow the <a href="./assistant/remote_sharing_walkthrough.html">remote sharing walkthrough</a>.</li>-<li>Want to share a synchronised folder with a friend?<br/>-Follow the <a href="./assistant/share_with_a_friend_walkthrough.html">share with a friend walkthrough</a>.</li>-<li>Want to archive data to a drive or the cloud?<br/>-Follow the <a href="./assistant/archival_walkthrough.html">archival walkthrough</a>.</li>-</ul>---<h2>colophon</h2>--<p>The git-annex assistant is being-<a href="http://www.kickstarter.com/projects/joeyh/git-annex-assistant-like-dropbox-but-with-your-own/">crowd funded on-Kickstarter</a>.-<a href="./assistant/thanks.html">Thanks</a> to all my backers.</p>--<p>I blog about my work on the git-annex assistant on a daily basis-in <span class="createlink">this blog</span>. Follow along!</p>--<p>See also: The <a href="./design/assistant.html">design</a> pages.</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/assistant.html">design/assistant</a>--<a href="./direct_mode.html">direct mode</a>--<a href="./install/OSX.html">install/OSX</a>--<a href="./install/fromscratch.html">install/fromscratch</a>--<a href="./not.html">not</a>--<a href="./preferred_content.html">preferred content</a>--<a href="./related_software.html">related software</a>--<a href="./sidebar.html">sidebar</a>--<a href="./special_remotes/xmpp.html">special remotes/xmpp</a>---<span class="popup">...-<span class="balloon">--<a href="./summary.html">summary</a>--<a href="./sync/comment_4_cf29326408e62575085d1f980087c923.html">sync/comment 4 cf29326408e62575085d1f980087c923</a>--<a href="./tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html">tips/replacing Sparkleshare or dvcs-autosync with the assistant</a>--<a href="./videos/git-annex_assistant_archiving.html">videos/git-annex assistant archiving</a>--<a href="./videos/git-annex_assistant_introduction.html">videos/git-annex assistant introduction</a>--</span>-</span>--</div>-------<div class="pagedate">-Last edited <span class="date">Tue Apr  2 17:32:07 2013</span>-<!-- Created <span class="date">Tue Apr  2 17:32:07 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/assistant/addsshserver.png

binary file changed (31740 → absent bytes)

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

binary file changed (4347 → absent bytes)

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

binary file changed (7332 → absent bytes)

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

binary file changed (10677 → absent bytes)

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

binary file changed (8863 → absent bytes)

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

binary file changed (6594 → absent bytes)

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

binary file changed (41061 → absent bytes)

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

binary file changed (110994 → absent bytes)

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

binary file changed (33631 → absent bytes)

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

binary file changed (32061 → absent bytes)

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

binary file changed (22921 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/assistant/osx-app.png

binary file changed (2604 → absent bytes)

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

binary file changed (22815 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/assistant/quickstart.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>quickstart</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="../assistant.html">assistant</a>/ --</span>-<span class="title">-quickstart--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h2>first run</h2>--<p>To get started with the git-annex assistant, just pick it from-your system's list of applications.</p>--<p><a href="./menu.png"><img src="./menu.png" width="385" height="307" class="img" /></a>-<a href="./osx-app.png"><img src="./osx-app.png" width="87" height="98" class="img" /></a></p>--<p>It'll prompt you to set up a folder:</p>--<p><a href="./makerepo.png"><img src="./makerepo.png" width="588" height="476" class="img" /></a></p>--<p>Then any changes you make to its folder will automatically be committed to-git, and synced to repositories on other computers. You can use the-interface to add repositories and control the git-annex assistant.</p>--<p><a href="./running.png"><img src="./running.png" width="614" height="366" class="img" /></a></p>--<h2>starting on boot</h2>--<p>The git-annex assistant will automatically be started when you log in to-desktop environments like Mac OS X, Gnome, XFCE, and KDE, and the menu item-shown above can be used to open the webapp. On other systems, you may need-to start it by hand.</p>--<p>To start the webapp, run <code>git annex webapp</code> at the command line.</p>--<p>To start the assistant without opening the webapp,-you can run the command "git annex assistant --autostart". This is a-good thing to configure your system to run automatically when you log in.</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="../assistant.html">assistant</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Apr  2 17:32:07 2013</span>-<!-- Created <span class="date">Tue Apr  2 17:32:07 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/assistant/release_notes.html
@@ -1,553 +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>release notes</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="../assistant.html">assistant</a>/ --</span>-<span class="title">-release notes--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h2>version 4.20130323, 4.20130405</h2>--<p>These versions continue fixing bugs and adding features.</p>--<h2>version 4.20130314</h2>--<p>This version makes a great many improvements and bugfixes, and is-a recommended upgrade.</p>--<p>If you have already used the webapp to locally pair two computers,-a bug caused the paired repository to not be given an appropriate cost.-To fix this, go into the Repositories page in the webapp, and drag the-repository for the locally paired computer to come before any repositories-that it's more expensive to transfer data to.</p>--<h2>version 4.20130227</h2>--<p>This release fixes a bug with globbing that broke preferred content expressions.-So, it is a recommended upgrade from the previous release, which introduced-that bug.</p>--<p>In this release, the assistant is fully working on Android, although-it must be set up using the command line.</p>--<p>Repositories can now be placed on filesystems that lack support for symbolic-links; FAT support is complete.</p>--<h2>version 3.20130216</h2>--<p>This adds a port to Android. Only usable at the command line so far;-beta qualitty.</p>--<p>Also a bugfix release, and improves support for FAT.</p>--<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>No Android app yet.</li>-<li>On BSD operating systems (but not on OS X), the assistant uses kqueue to-watch files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">this bug</span>-for a workaround.</li>-<li>Also on systems with kqueue, modifications to existing files in direct-mode will not be noticed.</li>-</ul>---<h2>version 3.20130107, 3.20130114, 3.20130124, 3.20130207</h2>--<p>These are bugfix releases.</p>--<h2>version 3.20130102</h2>--<p>This release makes several significant improvements to the git-annex-assistant, which is still in beta.</p>--<p>The main improvement is direct mode. This allows you to directly edit files-in the repository, and the assistant will automatically commit and sync-your changes. Direct mode is the default for new repositories created-by the assistant. To convert your existing repository to use direct mode,-manually run <code>git annex direct</code> inside the repository.</p>--<h2>version 3.20121211</h2>--<p>This release of the git-annex assistant (which is still in beta)-consists of mostly bugfixes, user interface improvements, and improvements-to existing features.</p>--<p>In general, anything you can configure with the assistant's web app-will work. Some examples of use cases supported by this release include:</p>--<ul>-<li>Using Box.com's 5 gigabytes of free storage space as a cloud transfer-point between between repositories that cannot directly contact-one-another. (Many other cloud providers are also supported, from Rsync.net-to Amazon S3, to your own ssh server.)</li>-<li>Archiving or backing up files to Amazon Glacier. See <a href="./archival_walkthrough.html">archival walkthrough</a>.</li>-<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>-contacted through a Jabber server (such as Google Talk).</li>-<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local-network (or VPN) and automatically keeping the files in the annex in-sync as changes are made to them.</li>-<li>Cloning your repository to removable drives, USB keys, etc. The assistant-will notice when the drive is mounted and keep it in sync.-Such a drive can be stored as an offline backup, or transported between-computers to keep them in sync.</li>-</ul>---<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>The Max OSX standalone app may not work on all versions of Max OSX.-Please test!</li>-<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch-files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>-for a workaround.</li>-</ul>---<h2>version 3.20121126</h2>--<p>This adds several features to the git-annex assistant, which is still in beta.</p>--<p>In general, anything you can configure with the assistant's web app-will work. Some examples of use cases supported by this release include:</p>--<ul>-<li>Using Box.com's 5 gigabytes of free storage space as a cloud transfer-point between between repositories that cannot directly contact-one-another. (Many other cloud providers are also supported, from Rsync.net-to Amazon S3, to your own ssh server.)</li>-<li>Archiving or backing up files to Amazon Glacier.</li>-<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>-contacted through a Jabber server (such as Google Talk).</li>-<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local-network (or VPN) and automatically keeping the files in the annex in-sync as changes are made to them.</li>-<li>Cloning your repository to removable drives, USB keys, etc. The assistant-will notice when the drive is mounted and keep it in sync.-Such a drive can be stored as an offline backup, or transported between-computers to keep them in sync.</li>-</ul>---<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>The Max OSX standalone app does not work on all versions of Max OSX.</li>-<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch-files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>-for a workaround.</li>-<li>Retrieval of files from Amazon Glacier is not fully automated; the-assistant does not automatically retry in the 4 to 5 hours period-when Glacier makes the files available.</li>-</ul>---<h2>version 3.20121112</h2>--<p>This is a major upgrade of the git-annex assistant, which is still in beta.</p>--<p>In general, anything you can configure with the assistant's web app-will work. Some examples of use cases supported by this release include:</p>--<ul>-<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>-contacted through a Jabber server (such as Google Talk).</li>-<li>Setting up cloud repositories, that are used as backups, archives,-or transfer points between repositories that cannot directly contact-one-another.</li>-<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local-network (or VPN) and automatically keeping the files in the annex in-sync as changes are made to them.</li>-<li>Cloning your repository to removable drives, USB keys, etc. The assistant-will notice when the drive is mounted and keep it in sync.-Such a drive can be stored as an offline backup, or transported between-computers to keep them in sync.</li>-</ul>---<p>The following upgrade notes apply if you're upgrading from a previous version:</p>--<ul>-<li>For best results, edit the configuration of repositories you set-up with older versions, and place them in a repository group.-This lets the assistant know how you want to use the repository; for backup,-archival, as a transfer point for clients, etc. Go to Configuration -&gt;-Manage Repositories, and click in the "configure" link to edit a repository's-configuration.</li>-<li>If you set up a cloud repository with an older version, and have multiple-clients using it, you are recommended to configure an Jabber account,-so that clients can use it to communicate when sending data to the-cloud repository. Configure Jabber by opening the webapp, and going to-Configuration -&gt; Configure jabber account</li>-<li>When setting up local pairing, the assistant did not limit the paired-computer to accessing a single git repository. This new version does,-by setting GIT_ANNEX_SHELL_DIRECTORY in <code>~/.ssh/authorized_keys</code>.</li>-</ul>---<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch-files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>-for a workaround.</li>-</ul>---<h2>version 3.20121009</h2>--<p>This is a maintenance release of the git-annex assistant, which is still in-beta.</p>--<p>In general, anything you can configure with the assistant's web app-will work. Some examples of use cases supported by this release include:</p>--<ul>-<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local-network (or VPN) and automatically keeping the files in the annex in-sync as changes are made to them.</li>-<li>Cloning your repository to removable drives, USB keys, etc. The assistant-will notice when the drive is mounted and keep it in sync.-Such a drive can be stored as an offline backup, or transported between-computers to keep them in sync.</li>-<li>Cloning your repository to a remote server, running ssh, and uploading-changes made to your files to the server. There is special support-for using the rsync.net cloud provider this way, or any shell account-on a typical unix server, such as a Linode VPS can be used.</li>-</ul>---<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch-files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>-for a workaround.</li>-<li>In order to ensure that all multiple repositories are kept in sync,-each computer with a repository must be running the git-annex assistant.</li>-<li>The assistant does not yet always manage to keep repositories in sync-when some are hidden from others behind firewalls.</li>-</ul>---<h2>version 3.20120924</h2>--<p>This is the first beta release of the git-annex assistant.</p>--<p>In general, anything you can configure with the assistant's web app-will work. Some examples of use cases supported by this release include:</p>--<ul>-<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local-network (or VPN) and automatically keeping the files in the annex in-sync as changes are made to them.</li>-<li>Cloning your repository to removable drives, USB keys, etc. The assistant-will notice when the drive is mounted and keep it in sync.-Such a drive can be stored as an offline backup, or transported between-computers to keep them in sync.</li>-<li>Cloning your repository to a remote server, running ssh, and uploading-changes made to your files to the server. There is special support-for using the rsync.net cloud provider this way, or any shell account-on a typical unix server, such as a Linode VPS can be used.</li>-</ul>---<p>The following are known limitations of this release of the git-annex-assistant:</p>--<ul>-<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch-files. Kqueue has to open every directory it watches, so too many-directories will run it out of the max number of open files (typically-1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>-for a workaround.</li>-<li>In order to ensure that all multiple repositories are kept in sync,-each computer with a repository must be running the git-annex assistant.</li>-<li>The assistant does not yet always manage to keep repositories in sync-when some are hidden from others behind firewalls.</li>-<li>If a file is checked into git as a normal file and gets modified-(or merged, etc), it will be converted into an annexed file. So you-should not mix use of the assistant with normal git files in the same-repository yet.</li>-<li>If you <code>git annex unlock</code> a file, it will immediately be re-locked.-See <span class="createlink">watcher commits unlocked files</span>.</li>-</ul>---</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-750d9d9679548f9c107b86463ffc6c63">----<div class="comment-subject">--<a href="/assistant/release_notes.html#comment-750d9d9679548f9c107b86463ffc6c63">OSX 10.8&#x27;s gatekeeper does not like git-annex</a>--</div>--<div class="inlinecontent">-<p>Trying to run this release on OSX results in an error message from Gatekeeper:</p>--<blockquote><p>"git-annex" can't be opened because it is from an unidentified developer.</p>--<p>Your security preferences allow installation of only apps from the Mac App Store and identified developers.</p></blockquote>--<p>It would be nice if the binary could be signed to make Gatekeeper happy. Until then a note in the installation instructions might be useful.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://wiggy.net/">Wichert</a>-</span>---&mdash; <span class="date">Tue Nov 13 10:47:52 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-4ec347a82669fabb94e58d4b5c462884">----<div class="comment-subject">--<a href="/assistant/release_notes.html#comment-4ec347a82669fabb94e58d4b5c462884">git-annex not runnable on OSX 10.8</a>--</div>--<div class="inlinecontent">-<p>After telling Gatekeeper that I really want to run git-annex it still fails:</p>--<p>[fog;~]-131&gt; open Applications/git-annex.app-LSOpenURLsWithRole() failed with error -10810 for the file /Users/wichert/Applications/git-annex.app.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://wiggy.net/">Wichert</a>-</span>---&mdash; <span class="date">Tue Nov 13 10:49:35 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-bf41641d0dfc2a217615673f62d1e10e">----<div class="comment-subject">--<a href="/assistant/release_notes.html#comment-bf41641d0dfc2a217615673f62d1e10e">comment 3</a>--</div>--<div class="inlinecontent">-<p>This has been previously reported: <span class="createlink">OSX git-annex.app error:  LSOpenURLsWithRole&#40;&#41;</span></p>--<p>No clue what that error is supposed to mean.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue Nov 13 13:11:51 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-6cc0fc47b477d4906add9ddf5f983733">----<div class="comment-subject">--<a href="/assistant/release_notes.html#comment-6cc0fc47b477d4906add9ddf5f983733">comment 4</a>--</div>--<div class="inlinecontent">-sadly i only have a 10.7 machine to create the builds, so I have no experience with 10.8. I haven't had a 10.6 machine in a while to create the builds. Anyone else want to work together in setting up another 10.6 or 10.8 builder for others?--</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 Nov 16 09:02:40 2012</span>-</div>----<div style="clear: both"></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="../assistant.html">assistant</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Apr  5 17:31:52 2013</span>-<!-- Created <span class="date">Fri Apr  5 17:31:52 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/assistant/repogroup.png

binary file changed (10986 → absent bytes)

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

binary file changed (18490 → absent bytes)

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

binary file changed (63405 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/assistant/rsync.net.png

binary file changed (61465 → absent bytes)

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

binary file changed (24664 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/assistant/thanks.html
@@ -1,379 +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>thanks</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="../assistant.html">assistant</a>/ --</span>-<span class="title">-thanks--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The development of the git-annex assistant was made possible by the-generous donations of many people. I want to say "Thank You!" to each of-you individually, but until I meet all 951 of you, this page will have to-do. You have my most sincere thanks. --<span class="createlink">Joey</span></p>--<p>(If I got your name wrong, or you don't want it publically posted here,-email <a href="mailto:joey@kitenet.net">&#x6a;&#x6f;&#x65;&#x79;&#64;&#107;&#105;&#x74;&#x65;&#110;&#x65;&#116;&#x2e;&#110;&#101;&#116;</a>.)</p>--<h2>Major Backers</h2>--<p>These people are just inspiring in their enthusiasm and generosity to this-project.</p>--<ul>-<li>Jason Scott</li>-<li>strager</li>-</ul>---<h2>Beta Testers</h2>--<p>Whole weeks of my time were made possible thanks to each of these-people, and their testing is invaluable to the development of-the git-annex assistant.</p>--<ul>-<li>Jimmy Tang</li>-<li>David Pollak</li>-<li>Pater</li>-<li>Francois Marier</li>-<li>Paul Sherwood</li>-<li>Fred Epma</li>-<li>Robert Ristroph</li>-<li>Josh Triplett</li>-<li>David Haslem</li>-<li>AJ Ashton</li>-<li>Svenne Krap</li>-<li>Drew Hess</li>-<li>Peter van Westen</li>-</ul>---<h2>Prioritizers</h2>--<p>These forward-thinking people contributed generously just to help-set my priorities in which parts of the git-annex assistant were most-important to develop.</p>--<p>Paul C. Bryan, Paul Tötterman, Don Marti, Dean Thompson, Djoume, David Johnston-Asokan Pichai, Anders Østhus, Dominik Wagenknecht, Charlie Fox, Yazz D. Atlas,-fenchel, Erik Penninga, Richard Hartmann, Graham, Stan Yamane, Ben Skelton,-Ian McEwen, asc, Paul Tagliamonte, Sherif Abouseda, Igor Támara, Anne Wind,-Mesar Hameed, Brandur K. Holm Petersen, Takahiro Inoue, Kai Hendry,-Stephen Youndt, Lee Roberson, Ben Strawbridge, Andrew Greenberg, Alfred Adams-Andrew, Aaron De Vries, Monti Knazze, Jorge Canseco, Hamish, Mark Eichin,-Sherif Abouseda, Ben Strawbridge, chee rabbits, Pedro Côrte-Real</p>--<p>And special thanks to Kevin McKenzie, who also gave me a login to a Mac OSX-machine, which has proven invaluable, and Jimmy Tang who has helped-with Mac OSX autobuilding and packaging.</p>--<h2>Other Backers</h2>--<p>Most of the success of the Kickstarter is thanks to these folks. Some of-them spent significant amounts of money in the guise of getting some-swag. For others, being listed here, and being crucial to making the-git-annex assistant happen was reward enough. Large or small, these-contributions are, literally, my bread and butter this year.</p>--<p>Amitai Schlair, mvime, Romain Lenglet, James Petts, Jouni Uuksulainen,-Wichert Akkerman, Robert Bellus, Kasper Souren, rob, Michiel Buddingh',-Kevin, Rob Avina, Alon Levy, Vikash, Michael Alan Dorman, Harley Pig,-Andreas Olsson, Pietpiet, Christine Spang, Liz Young, Oleg Kosorukov,-Allard Hoeve, Valentin Haenel, Joost Baaij, Nathan Yergler, Nathan Howell,-Frédéric Schütz, Matti Eskelinen, Neil McGovern, Lane Lillquist, db48x,-Stuart Prescott, Mark Matienzo, KarlTheGood, leonm, Drew Slininger,-Andreas Fuchs, Conrad Parker, Johannes Engelke, Battlegarden, Justin Kelly,-Robin Wagner, Thad Ward, crenquis, Trudy Goold, Mike Cochrane, Adam Venturella,-Russell Foo, furankupan, Giorgio Occhioni, andy, mind, Mike Linksvayer,-Stefan Strahl, Jelmer Vernooij, Markus Fix, David Hicks, Justin Azoff,-Iain Nicol, Bob Ippolito, Thomas Lundstrøm, Jason Mandel, federico2,-Edd Cochran, Jose Ortega, Emmett Agnew, Rudy Garcia, Kodi, Nick Rusnov,-Michael Rubin, Tom de Grunt, Richard Murray, Peter, Suzanne Pierce, Jared-Marcotte, folk, Eamon, Jeff Richards, Leo Sutedja, dann frazier, Mikkel-kristiansen, Matt Thomas, Kilian Evang, Gergely Risko, Kristian Rumberg,-Peter Kropf, Mark Hepburn, greymont, D. Joe Anderson, Jeremy Zunker, ctebo,-Manuel Roumain, Jason Walsh, np, Shawn, Johan Tibell, Branden Tyree, Dinyar-Rabady, Andrew Mason, damond armstead, Ethan Aubin, TomTom Tommie, Jimmy-Kaplowitz, Steven Zakulec, mike smith, Jacob Kirkwood, Mark Hymers, Nathan-Collins, Asbjørn Sloth Tønnesen, Misty De Meo, James Shubin,-Jim Paris, Adam Sjøgren, miniBill, Taneli, Kumar Appaiah, Greg Grossmeier,-Sten Turpin, Otavio Salvador, Teemu Hukkanen, Brian Stengaard, bob walker,-bibeneus, andrelo, Yaroslav Halchenko, hesfalling, Tommy L, jlargentaye,-Serafeim Zanikolas, Don Armstrong, Chris Cormack, shayne.oneill, Radu-Raduta, Josh S, Robin Sheat, Henrik Mygind, kodx, Christian, Geoff-Crompton, Brian May, Olivier Berger, Filippo Gadotti, Daniel Curto-Millet,-Eskild Hustvedt, Douglas Soares de Andrade, Tom L, Michael Nacos, Michaël-P., William Roe, Joshua Honeycutt, Brian Kelly, Nathan Rasch, jorge, Martin-Galese, alex cox, Avery Brooks, David Whittington, Dan Martinez, Forrest-Sutton, Jouni K. Seppänen, Arnold Cano, Robert Beaty, Daniel, Kevin Savetz,-Randy, Ernie Braganza, Aaron Haviland, Brian Brunswick, asmw, sean, Michael-Williams, Alexander, Dougal Campbell, Robert Bacchas, Michael Lewis, Collin-Price, Wes Frazier, Matt Wall, Brandon Barclay, Derek van Vliet, Martin-DeMello, kitt hodsden, Stephen Kitt, Leif Bergman, Simon Lilburn, Michael-Prokop, Christiaan Conover, Nick Coombe, Tim Dysinger, Brandon Robinson,-Philip Newborough, keith, Mike Fullerton, Kyle, Phil Windley, Tyler Head,-George V. Reilly, Matthew, Ali Gündüz, Vasyl Diakonov, Paolo Capriotti,-allanfranta, Martin Haeberli, msingle, Vincent Sanders, Steven King, Dmitry-Gribanov, Brandon High, Ben Hughes, Mike Dank, JohnE, Diggory Hardy,-Michael Hanke, valhalla, Samuli Tuomola, Jeff Rau, Benjamin Lebsanft, John-Drago, James, Aidan Cooper, rondie, Paul Kohler, Matthew Knights, Aaron-Junod, Patrick R McDonald, Christopher Browne, Daniel Engel, John SJ-Anderson, Peter Sarossy, Mike Prasad, Christoph Ender, Jan Dittberner,-Zohar, Alexander Jelinek, stefan, Danny O'Brien, Matthew Thode, Nicole-Aptekar, maurice gaston, Chris Adams, Mike Klemencic, Reedy, Subito, Tobias-Gruetzmacher, Ole-Morten Duesund, André Koot, mp, gdop, Cole Scott, Blaker,-Matt Sottile, W. Craig Trader, Louis-Philippe Dubrule, Brian Boucheron,-Duncan Smith, Brenton Buchbach, Kyle Stevenson, Eliot Lash, Egon Elbre,-Praveen, williamji, Thomas Schreiber, Neil Ford, Ryan Pratt, Joshua Brand,-Peter Cox, Markus Engstrom, John Sutherland, Dean Bailey, Ed Summers,-Hillel Arnold, David Fiander, Kurt Yoder, Trevor Muñoz, keri, Ivan-Sergeyenko, Shad Bolling, Tal Kelrich, Steve Presley, gerald ocker, Essex-Taylor, Josh Thomson, Trevor Bramble, Lance Higgins, Frank Motta, Dirk-Kraft, soundray, Joe Haskins, nmjk, Apurva Desai, Colin Dean, docwhat,-Joseph Costello, Jst, flamsmark, Alex Lang, Bill Traynor, Anthony David,-Marc-André Lureau, AlNapp, Giovanni Moretti, John Lawrence, João Paulo-Pizani Flor, Jim Ray, Gregory Thrush, Alistair McGann, Andrew Wied,-Koutarou Furukawa, Xiscu Ignacio, Aaron Sachs, Matt, Quirijn, Chet-Williams, Chris Gray, Bruce Segal, Tom Conder, Louis Tovar, Alex Duryee,-booltox, d8uv, Decklin Foster, Rafael Cervantes, Micah R Ledbetter, Kevin-Sjöberg, Johan Strombom, Zachary Cohen, Jason Lewis, Yves Bilgeri, Ville-Aine, Mark Hurley, Marco Bonetti, Maximilian Haack, Hynek Schlawack,-Michael Leinartas, Andreas Liebschner, Duotrig, Nat Fairbanks, David-Deutsch, Colin Hayhurst, calca, Kyle Goodrick, Marc Bobillier, Robert-Snook, James Kim, Olivier Serres, Jon Redfern, Itai Tavor, Michael-Fladischer, Rob, Jan Schmid, Thomas H., Anders Söderbäck, Abhishek-Dasgupta, Jeff Goeke-Smith, Tommy Thorn, bonuswavepilot, Philipp Edelmann,-Nick, Alejandro Navarro Fulleda, Yann Lallemant, andrew brennan,-Dave Allen Barker Jr, Fabian, Lukas Anzinger, Carl Witty, Andy Taylor,-Andre Klärner, Andrew Chilton, Adam Gibbins, Alexander Wauck, Shane O'Dea,-Paul Waite, Iain McLaren, Maggie Ellen Robin Hess, Willard Korfhage,-Nicolas, Eric Nikolaisen, Magnus Enger, Philipp Kern, Andrew Alderwick,-Raphael Wimmer, Benjamin Schötz, Ana Guerrero, Pete, Pieter van der Eems,-Aaron Suggs, Fred Benenson, Cedric Howe, Lance Ivy, Tieg Zaharia, Kevin-Cooney, Jon Williams, Anton Kudris, Roman Komarov, Brad Hilton, Rick Dakan,-Adam Whitcomb, Paul Casagrande, Evgueni Baldin, Robert Sanders, Kagan-Kayal, Dean Gardiner, micah altman, Cameron Banga, Ross Mcnairn, Oscar-Vilaplana, Robin Graham, Dan Gervais, Jon Åslund, Ragan Webber, Noble Hays,-stephen brown, Sean True, Maciek Swiech, faser, eikenberry, Kai Laborenz,-Sergey Fedoseev, Chris Fournier, Svend Sorensen, Greg K, wojtek, Johan-Ribenfors, Anton, Benjamin, Oleg Tsarev, PsychoHazard, John Cochrane,-Kasper Lauritzen, Patrick Naish, Rob, Keith Nasman, zenmaster, David Royer,-Max Woolf, Dan Gabber, martin rhoads, Martin Schmidinger, Paul-Scott-Wilson, Tom Gromak, Andy Webster, Dale Webb, Jim Watson, Stephen-Hansen, Mircea, Dan Goodenberger, Matthias Fink, Andy Gott, Daniel, Jai-Nelson, Shrayas Rajagopal, Vladimir Rutsky, Alexander, Thorben Westerhuys,-hiruki, Tao Neuendorffer Flaherty, Elline, Marco Hegenberg, robert, Balda,-Brennen Bearnes, Richard Parkins, David Gwilliam, Mark Johnson, Jeff Eaton,-Reddawn90, Heather Pusey, Chris Heinz, Colin, Phatsaphong Thadabusapa,-valunthar, Michael Martinez, redlukas, Yury V. Zaytsev, Blake, Tobias-"betabrain" A., Leon, sopyer, Steve Burnett, bessarabov, sarble, krsch.com,-Jack Self, Jeff Welch, Sam Pettiford, Jimmy Stridh, Diego Barberá, David-Steele, Oscar Ciudad, John Braman, Jacob, Nick Jenkins, Ben Sullivan, Brian-Cleary, James Brosnahan, Darryn Ten, Alex Brem, Jonathan Hitchcock, Jan-Schmidle, Wolfrzx99, Steve Pomeroy, Matthew Sitton, Finkregh, Derek Reeve,-GDR!, Cory Chapman, Marc Olivier Chouinard, Andreas Ryland, Justin, Andreas-Persenius, Games That Teach, Walter Somerville, Bill Haecker, Brandon-Phenix, Justin Shultz, Colin Scroggins, Tim Goddard, Ben Margolin, Michael-Martinez, David Hobbs, Andre Le, Jason Roberts, Bob Lopez, Gert Van Gool,-Robert Carnel, Anders Lundqvist, Aniruddha Sathaye, Marco Gillies, Basti-von Bejga, Esko Arajärvi, Dominik Deobald, Pavel Yudaev, Fionn Behrens,-Davide Favargiotti, Perttu Luukko, Silvan Jegen, Marcelo Bittencourt,-Leonard Peris, smercer, Alexandre Dupas, Solomon Matthews, Peter Hogg,-Richard E. Varian, Ian Oswald, James W. Sarvey, Ed Grether, Frederic-Savard, Sebastian Nerz, Hans-Chr. Jehg, Matija Nalis, Josh DiMauro, Jason-Harris, Adam Byrtek, Tellef, Magnus, Bart Schuurmans, Giel van Schijndel,-Ryan, kiodos, Richard 'maddog' Collins, PawZubr, Jason Gassel, Alex-Boisvert, Richard Thompson, maddi bolton, csights, Aaron Bryson, Jason Chu,-Maxime Côté, Kineteka Systems, Joe Cabezas, Mike Czepiel, Rami Nasra,-Christian Simonsen, Wouter Beugelsdijk, Adam Gibson, Gal Buki, James-Marble, Alan Chambers, Bernd Wiehle, Simon Korzun, Daniel Glassey, Eero af-Heurlin, Mikael, Timo Engelhardt, Wesley Faulkner, Jay Wo, Mike Belle,-David Fowlkes Jr., Karl-Heinz Strass, Ed Mullins, Sam Flint,-Hendrica, Mark Emer Anderson, Joshua Cole, Jan Gondol, Henrik Lindhe,-Albert Delgado, Patrick, Alexa Avellar, Chris, sebsn1349, Maxim Kachur,-Andrew Marshall, Navjot Narula, Alwin Mathew, Christian Mangelsdorf, Avi-Shevin, Kevin S., Guillermo Sanchez Estrada, Alex Krieger, Luca Meier, Will-Jessop, Nick Ruest, Lani Aung, Ulf Benjaminsson, Rudi Engelbrecht, Miles-Matton, Cpt_Threepwood, Adam Kuyper, reacocard, David Kilsheimer, Peter-Olson, Bill Fischofer, Prashant Shah, Simon Bonnick, Alexander Grudtsov,-Antoine Boegli, Richard Warren, Sebastian Rust, AlmostHuman, Timmy-Crawford, PC, Marek Belski, pontus, Douglas S Butts, Eric Wallmander, Joe-Pelar, VIjay, Trahloc, Vernon Vantucci, Matthew baya, Viktor Štujber,-Stephen Akiki, Daniil Zamoldinov, Atley, Chris Thomson, Jacob Briggs, Falko-Richter, Andy Schmitz, Sergi Sagas, Peder Refsnes, Jonatan, Ben, Bill-Niblock, Agustin Acuna, Jeff Curl, Tim Humphrey, bib, James Zarbock,-Lachlan Devantier, Michal Berg, Jeff Lucas, Sid Irish, Franklyn, Jared-Dickson, Olli Jarva, Adam Gibson, Lukas Loesche, Jukka Määttä, Alexander-Lin, Dao Tran, Kirk, briankb, Ryan Villasenor, Daniel Wong, barista, Tomas-Jungwirth, Jesper Hansen, Nivin Singh, Alessandro Tieghi, Billy Roessler,-Peter Fetterer, Pallav Laskar, jcherney, Tyler Wang, Steve, Gigahost, Beat-Wolf, Hannibal Skorepa, aktiveradio, Mark Nunnikhoven, Bret Comnes, Alan-Ruttenberg, Anthony DiSanti, Adam Warkiewicz, Brian Bowman, Jonathan, Mark-Filley, Tobias Mohr, Christian St. Cyr, j. faceless user, Karl Miller,-Thomas Taimre, Vikram, Jason Mountcastle, Jason, Paul Elliott, Alexander,-Stephen Farmer, rayslava, Peter Leurs, Sky Kruse, JP Reeves, John J Schatz,-Martin Sandmair, Will Thompson, John Hergenroeder, Thomas, Christophe-Ponsart, Wolfdog, Eagertolearn, LukasM, Federico Hernandez, Vincent Bernat,-Christian Schmidt, Cameron Colby Thomson, Josh Duff, James Brown, Theron-Trowbridge, Falke, Don Meares, tauu, Greg Cornford, Max Fenton, Kenneth-Reitz, Bruce Bensetler, Mark Booth, Herb Mann, Sindre Sorhus, Chris-Knadler, Daniel Digerås, Derek, Sin Valentine, Ben Gamari, david-lampenscherf, fardles, Richard Burdeniuk, Tobias Kienzler, Dawid Humbla,-Bruno Barbaroxa, D Malt, krivar, James Valleroy, Peter, Tim Geddings,-Matthias Holzinger, Hanen, Petr Vacek, Raymond, Griff Maloney, Andreas-Helveg Rudolph, Nelson Blaha, Colonel Fubar, Skyjacker Captain Gavin-Phoenix, shaun, Michael, Kari Salminen, Rodrigo Miranda, Alan Chan, Justin-Eugene Evans, Isaac, Ben Staffin, Matthew Loar, Magos, Roderik, Eugenio-Piasini, Nico B, Scott Walter, Lior Amsalem, Thongrop Rodsavas, Alberto de-Paola, Shawn Poulen, John Swiderski, lluks, Waelen, Mark Slosarek, Jim-Cristol, mikesol, Bilal Quadri, LuP, Allan Nicolson, Kevin Washington,-Isaac Wedin, Paul Anguiano, ldacruz, Jason Manheim, Sawyer, Jason-Woofenden, Joe Danziger, Declan Morahan, KaptainUfolog, Vladron, bart, Jeff-McNeill, Christian Schlotter, Ben McQuillan, Anthony, Julian, Martin O,-altruism, Eric Solheim, MarkS, ndrwc, Matthew, David Lehn, Matthew-Cisneros, Mike Skoglund, Kristy Carey, fmotta, Tom Lowenthal, Branden-Tyree, Aaron Whitehouse</p>--<h2>Also thanks to</h2>--<ul>-<li>The Kickstarter team, who have unleashed much good on the world.</li>-<li>The Haskell developers, who toiled for 20 years in obscurity-before most of us noticed them, and on whose giant shoulders I now stand,-in awe of the view.</li>-<li>The Git developers, for obvious reasons.</li>-<li>All of git-annex's early adopters, who turned it from a personal-toy project into something much more, and showed me the interest was there.</li>-<li>Rsync.net, for providing me a free account so I can make sure git-annex-works well with it.</li>-<li>LeastAuthority.com, for providing me a free Tahoe-LAFS grid account,-so I can test git-annex with that, and back up the git-annex assistant-screencasts.</li>-<li>Anna and Mark, for the loan of the video camera; as well as the rest of-my family, for your support. Even when I couldn't explain what I was-working on.</li>-<li>The Hodges, for providing such a congenial place for me to live and work-on these first world problems, while you're off helping people in the-third world.</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="../assistant.html">assistant</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Apr  3 23:37:44 2013</span>-<!-- Created <span class="date">Wed Apr  3 23:37:44 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/assistant/thumbnail.png

binary file changed (3491 → absent bytes)

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

binary file changed (27753 → absent bytes)

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

binary file changed (6156 → absent bytes)

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

binary file changed (34379 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/backends.html
@@ -1,285 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>SHA256E</code> -- The default backend for new files. 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>SHA256</code> -- Does not include the file extension in the key, which can-lead to better deduplication.</li>-<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 the least expensive backend, recommended for really large-files or slow systems.</li>-<li><code>SHA512</code>, <code>SHA512E</code> -- Best currently available hash, for the very paranoid.</li>-<li><code>SHA1</code>, <code>SHA1E</code> -- Smaller hash than <code>SHA256</code> for those who want a checksum- but are not concerned about security.</li>-<li><code>SHA384</code>, <code>SHA384E</code>, <code>SHA224</code>, <code>SHA224E</code> -- Hashes for people who like-unusual sizes.</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 SHA256E backend for sound files, which tend to be-smallish and might be modified or copied over time,-while using the WORM backend for everything else, you could set-in <code>.gitattributes</code>:</p>--<pre><code>* annex.backend=WORM-*.mp3 annex.backend=SHA256E-*.ogg annex.backend=SHA256E-</code></pre>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-3c1cd45d2a015b4fc412dd813293ad7d">----<div class="comment-subject">--<a href="/backends.html#comment-3c1cd45d2a015b4fc412dd813293ad7d">SHA performance</a>--</div>--<div class="inlinecontent">-<p>It turns out that (at least on x86-64 machines) <code>SHA512</code> <a href="https://community.emc.com/community/edn/rsashare/blog/2010/11/01/sha-2-algorithms-when-sha-512-is-more-secure-and-faster">is faster than</a> <code>SHA256</code>. In some benchmarks I performed<sup>1</sup> <code>SHA256</code> was 1.8–2.2x slower than <code>SHA1</code> while <code>SHA512</code> was only 1.5–1.6x slower.</p>--<p><code>SHA224</code> and <code>SHA384</code> are effectively just truncated versions of <code>SHA256</code> and <code>SHA512</code> so their performance characteristics are identical.</p>--<p><sup>1</sup> <code>time head -c 100000000 /dev/zero | shasum -a 512</code></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://nanotech.nanotechcorp.net/">NanoTech</a>-</span>---&mdash; <span class="date">Fri Aug 10 00:37:32 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f1af10fa62cec23b61a688a3f8191f53">----<div class="comment-subject">--<a href="/backends.html#comment-f1af10fa62cec23b61a688a3f8191f53">Tracking remote copies not even stored locally / URL backend turned into a &#x22;special remote&#x22;.</a>--</div>--<div class="inlinecontent">-<p>In case you came here looking for the URL backend.</p>--<h2>The URL backend</h2>--<p>Several documents on the web refer to a special "URL backend", e.g. <a href="http://lwn.net/Articles/419241/">Large file management with git-annex [LWN.net]</a>.  Historical content will never be updated yet it drives people to living places.</p>--<h2>Why a URL backend ?</h2>--<p>It is interesting because you can:</p>--<ul>-<li>let <code>git-annex</code> rest on the fact that some documents are available as extra copies available at any time (but from something that is not a git repository).</li>-<li>track these documents like your own with all git features, which opens up some truly marvelous combinations, which this margin is too narrow to contain (Pierre d.F. wouldn't disapprove ;-).</li>-</ul>---<h2>How/Where now ?</h2>--<p><code>git-annex</code> used to have a URL backend. It seems that the design changed into a "special remote" feature, not limited to the web. You can now track files available through plain directories, rsync, webdav, some cloud storage, etc, even clay tablets. For details see <a href="./special_remotes.html">special remotes</a>.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawm7eqCMh_B7mxE0tnchbr0JoYu11FUAFRY">Stéphane</a>-</span>---&mdash; <span class="date">Thu Jan  3 06:59:35 2013</span>-</div>----<div style="clear: both"></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="./how_it_works.html">how it works</a>--<a href="./internals.html">internals</a>--<a href="./internals/key_format.html">internals/key format</a>--<a href="./links/the_details.html">links/the details</a>--<a href="./scalability.html">scalability</a>--<a href="./tips/Internet_Archive_via_S3.html">tips/Internet Archive via S3</a>--<a href="./tips/using_the_SHA1_backend.html">tips/using the SHA1 backend</a>--<a href="./upgrades.html">upgrades</a>--<a href="./upgrades/SHA_size.html">upgrades/SHA size</a>--<a href="./walkthrough/fsck:_verifying_your_data.html">walkthrough/fsck: verifying your data</a>---<span class="popup">...-<span class="balloon">--<a href="./walkthrough/unused_data.html">walkthrough/unused data</a>--</span>-</span>--</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/bare_repositories.html
@@ -1,223 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>It took a while, but bare repositories are now supported exactly as well-as non-bare repositories. Except for these caveats:</p>--<ul>-<li><code>git annex fsck</code> works in a bare repository, but does not display-warnings about insufficient-<a href="./copies.html">copies</a>. To get those warnings, just run it in one of the non-bare-checkouts.</li>-<li><code>git annex unused</code> in a bare repository only knows about keys used in-branches that have been pushed to the bare repository. So use it with care..</li>-<li>Commands that need a work tree, like <code>git annex add</code> won't work in a bare-repository, of course.</li>-</ul>---<hr />--<p>Here is a quick example of how to set this up, using <code>origin</code> as the remote name, and assuming <code>~/annex</code> contains an annex:</p>--<p>On the server:</p>--<pre><code>git init --bare bare-annex.git-git annex init origin-</code></pre>--<p>Now configure the remote and do the initial push:</p>--<pre><code>cd ~/annex-git remote add origin example.com:bare-annex.git-git push origin master git-annex-</code></pre>--<p>Now <code>git annex status</code> should show the configured bare remote. If it does not, you may have to pull from the remote first (older versions of <code>git-annex</code>)</p>--<p>If you wish to configure git such that you can push/pull without arguments, set the upstream branch:</p>--<pre><code>git branch master --set-upstream origin/master-</code></pre>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-6e007e9304d6f09aaf40ff942f429025">----<div class="comment-subject">--<a href="/bare_repositories.html#comment-6e007e9304d6f09aaf40ff942f429025">How to convert bare repositories to non-bare</a>--</div>--<div class="inlinecontent">-<p>I made a repository bare and later wanted to convert it, this would have worked with just plain git:</p>--<pre><code>cd bare-repo.git-mkdir .git-mv .??* * .git/-git config --unset core.bare-git reset --hard-</code></pre>--<p>But because git-annex uses different hashing directories under bare repositories all the files in the repo will point to files you don't have. Here's how you can fix that up assuming you're using a backend that assigns unique hashes based on file content (e.g. the SHA256 backend):</p>--<pre><code>mv .git/annex/objects from-bare-repo-git annex add from-bare-repo-git rm -f from-bare-repo-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmraN_ldJplGunVGmnjjLN6jL9s9TrVMGE">Ævar Arnfjörð</a>-</span>---&mdash; <span class="date">Sun Nov 11 16:14:44 2012</span>-</div>----<div style="clear: both"></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="./links/the_details.html">links/the details</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Oct 22 14:30:32 2012</span>-<!-- Created <span class="date">Mon Oct 22 14:30:32 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/coding_style.html
@@ -1,225 +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>coding style</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">-coding style--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>If you do nothing else, avoid use of partial functions from the Prelude!-<code>import Utility.PartialPrelude</code> helps avoid this by defining conflicting-functions for all the common ones. Also avoid <code>!!</code>, it's partial too.</p>--<p>Use tabs for indentation. The one exception to this rule are-the Hamlet format files in <code>templates/*</code>. Hamlet, infuriatingly, refuses-to allow tabs to be used for indentation.</p>--<p>Code should make sense with any tab stop setting, but 8 space tabs are-the default. With 8 space tabs, code should not exceed 80 characters-per line. (With larger tabs, it may of course.)</p>--<p>Use spaces for layout. For example, here spaces (indicated with <code>.</code>)-are used after the initial tab to make the third test line up with-the others.</p>--<pre><code>    when (foo_test || bar_test ||-    ......some_other_long_test)-        print "hi"-</code></pre>--<p>As a special Haskell-specific rule, "where" clauses are indented with two-spaces, rather than a tab. This makes them stand out from the main body-of the function, and avoids excessive indentation of the where cause content.-The definitions within the where clause should be put on separate lines,-each indented with a tab.</p>--<pre><code>main = do-    foo-    bar-    foo-  where-    foo = ...-    bar = ...-</code></pre>--<p>Where clauses for instance definitions and modules tend to appear at the end-of a line, rather than on a separate line.</p>--<pre><code>module Foo (Foo, mkFoo, unFoo) where-instance MonadBaseControl IO Annex where-</code></pre>--<p>When a function's type signature needs to be wrapped to another line,-it's typical to switch to displaying one parameter per line.</p>--<pre><code>foo :: Bar -&gt; Baz -&gt; (Bar -&gt; Baz) -&gt; IO Baz--foo'-    :: Bar-    -&gt; Baz-    -&gt; (Bar -&gt; Baz)-    -&gt; IO Baz-</code></pre>--<p>Note that the "::" then starts its own line. It is not put on the same-line as the function name because then it would not be guaranteed to line-up with the "-&gt;" at all tab width settings. Similarly, guards are put-on their own lines:</p>--<pre><code>splat i-    | odd i = error "splat!"-    | otherwise = i-</code></pre>--<p>Multiline lists and record syntax are written with leading commas,-that line up with the open and close punctuation.</p>--<pre><code>list =-    [ item1-    , item2-    , item3-    ]--foo = DataStructure-    { name = "bar"-    , address = "baz"-    }-</code></pre>--<p>Module imports are separated into two blocks, one for third-party modules,-and one for modules that are part of git-annex. (Additional blocks can be used-if it makes sense.)</p>--<p>Using tabs for indentation makes use of <code>let .. in</code> particularly tricky.-There's no really good way to bind multiple names in a let clause with-tab indentation. Instead, a where clause is typically used. To bind a single-name in a let clause, this is sometimes used:</p>--<pre><code>foo = let x = 42-    in x + (x-1) + x-</code></pre>--<hr />--<p>If you feel that this coding style leads to excessive amounts of horizontal-or vertical whitespace around your code, making it hard to fit enough of it-on the screen, consider finding a better abstraction, so the code that-does fit on the screen is easily understandable. ;)</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="./download.html">download</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Mar 30 14:31:09 2013</span>-<!-- Created <span class="date">Sat Mar 30 14:31:09 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/comments.html
@@ -1,554 +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  class="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  class="feedlink">---</div>-<div class="comment" id="comment-a7e65f545755de544dc069536c1fff4a">----<div class="comment-subject">--<a href="/special_remotes/xmpp.html#comment-a7e65f545755de544dc069536c1fff4a">User defined server</a>--</div>--<div class="inlinecontent">-<p>It would be nice if you could expand the XMPP setup in the assistant to support an "advanced" settings view where a custom server could be defined.</p>--<p>Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA">Tobias</a>-</span>---&mdash; <span class="date">Wed Apr 17 05:45:59 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-b45fd847f89e1ef6d0eefc86d0007f12">----<div class="comment-subject">--<a href="/install/OSX.html#comment-b45fd847f89e1ef6d0eefc86d0007f12">comment 17</a>--</div>--<div class="inlinecontent">-<p>@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.</p>--<p>You can certainly use the rest of git-annex on Snow Leopard without FSEvents.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 16 16:31:10 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-509b6646daee0dfe1c72f898b12532db">----<div class="comment-subject">--<a href="/design/assistant/xmpp.html#comment-509b6646daee0dfe1c72f898b12532db">Plans for two factor authentication or oath?</a>--</div>--<div class="inlinecontent">-Are there plans to support google's two factor authentication?  Right now I have to use an application specific password.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>-</span>---&mdash; <span class="date">Sun Apr 14 20:58:04 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-1cf81a381a3b69c1e0b371b38f562e1c">----<div class="comment-subject">--<a href="/install/OSX.html#comment-1cf81a381a3b69c1e0b371b38f562e1c">Snow Leopard Issues</a>--</div>--<div class="inlinecontent">-<p>I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies).  Woohoo!</p>--<p>The way I was able to fully build on a 32-bit 10.6 machine was this</p>--<ol>-<li>Delete ~/.ghc and ~/.cabal.  They were full of random things and were causing problems.</li>-<li><code>brew uninstall ghc and haskell-platform</code></li>-<li><code>brew update</code></li>-<li><code>brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code></li>-<li><code>brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code> (Some of these were already installed/up to date.</li>-<li><code>brew link libxml2</code></li>-<li><code>brew install haskell-platform</code>  (This takes a long, long time).</li>-<li><code>cabal update</code> (assuming you have added <code>~/.cabal/bin</code> to your path</li>-<li><code>cabal install cablal-install</code></li>-<li><code>cabal install c2hs</code></li>-<li><code>cabal install git-annex</code></li>-</ol>---<p>It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system.  Thats also neat.</p>--<p>The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp:-Running-<code>git annex webapp</code>-The browser starts up, and I get 3 of these errors:-<code>Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents</code></p>--<p>Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.</p>--<p>Also on a side note, when running <code>git annex webapp</code> it triggers the opening of an html file in whatever the default html file handler is.  I edit a lot of html, so for me that is usually a text editor.  I had to change the file handler to open html files with my web browser for the <code>git annex webapp</code> to actually work.  Is there a way to change that so that <code>git annex webapp</code> uses the default web browser for the system rather than the default html file handler?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>-</span>---&mdash; <span class="date">Sun Apr 14 16:17:17 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-ca2ab6884c22d13e862d5099b4ac90c0">----<div class="comment-subject">--<a href="/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html#comment-ca2ab6884c22d13e862d5099b4ac90c0">comment 4</a>--</div>--<div class="inlinecontent">-<p>Like it says in the tip, <code>git annex add</code> will add the large files to git. You can add the small files with <code>git add</code>; git-annex won't do that for you.</p>--<p>To automatically add both sorts of files, you can use the <code>git annex watch</code> or <code>git annex assistant</code> daemons. The latter also keeps files in sync between repositories automatically.</p>--<p>(Why did the picture show up as a new file in git? Because you hadn't committed it. This is the same as when you <code>git add</code> a file;-it's only staged in the index; <code>git status</code> will show it is new until you <code>git commit</code>)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Sun Apr 14 14:37:50 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-9f3ea3d7e938a485afa72fa86308f49f">----<div class="comment-subject">--<a href="/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html#comment-9f3ea3d7e938a485afa72fa86308f49f">Trying this feature</a>--</div>--<div class="inlinecontent">-<p>I just gave this feature a try, but it seems it doesn't work as expected or maybe I don't understand it:</p>--<pre><code>~/annex/largefilestest % git init-~/annex/largefilestest (git)-[master] % git annex init "test repo"-~/annex/largefilestest (git)-[master] % git config annex.largefiles "not include=*.txt"-</code></pre>--<p>Now I copy two files to this directory and add both to the annex</p>--<pre><code>~/annex/largefilestest (git)-[master] % ll-total 100--rw-rw-r-- 1 tobru tobru 93709 Oct 19 16:14 dpkg-get-selections.txt--rw-rw-r-- 1 tobru tobru  7256 Jan  6 15:52 x3400.jpg-~/annex/largefilestest (git)-[master] % git annex add .-add x3400.jpg (checksum...) ok-(Recording state in git...)-~/annex/largefilestest (git)-[master] % git status-# On branch master-#-# Initial commit-#-# Changes to be committed:-#   (use "git rm --cached &lt;file&gt;..." to unstage)-#-#       new file:   x3400.jpg-#-# Untracked files:-#   (use "git add &lt;file&gt;..." to include in what will be committed)-#-#       dpkg-get-selections.txt-~/annex/largefilestest (git)-[master] % ll-total 96--rw-rw-r-- 1 tobru tobru 93709 Oct 19 16:14 dpkg-get-selections.txt-lrwxrwxrwx 1 tobru tobru   192 Jan  6 15:52 x3400.jpg -&gt; .git/annex/objects/vf/QX/SHA256E-s7256--60e5b69ade5619e37f7fcaa964626da9c415959d861241aa13e2516fffc2dddf.jpg/SHA256E-s7256--60e5b69ade5619e37f7fcaa964626da9c415959d861241aa13e2516fffc2dddf.jpg-</code></pre>--<p>So the picture is added to the annex as expected. But the .txt file is not added to git. Do I have to manually add this to git? And why is the picture seen as new file by git?</p>--<p>The second question could be answered by: "run git annex sync". Is this correct? Because after running this command, git does not see this file as a new file anymore:</p>--<pre><code>~/annex/largefilestest (git)-[master] % git annex sync-commit  -[master (root-commit) a0afb14] git-annex automatic sync- 1 file changed, 1 insertion(+)- create mode 120000 x3400.jpg-ok-git-annex: no branch is checked out-~/annex/largefilestest (git)-[master] % git status-# On branch master-# Untracked files:-#   (use "git add &lt;file&gt;..." to include in what will be committed)-#-#       dpkg-get-selections.txt-nothing added to commit but untracked files present (use "git add" to track)-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawniayrgSdVLUc3c6bf93VbO-_HT4hzxmyo">Tobias</a>-</span>---&mdash; <span class="date">Sun Apr 14 09:04:55 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-7b5aedae234ddbc43e349e18fb3c3543">----<div class="comment-subject">--<a href="/tips/using_the_web_as_a_special_remote.html#comment-7b5aedae234ddbc43e349e18fb3c3543">how to drop one of the urls?</a>--</div>--<div class="inlinecontent">-<p>is there a way to remove one of the urls? e.g. if I have</p>--<pre><code>$&gt; git annex whereis fail2ban_logo.png-whereis fail2ban_logo.png (1 copy) -    00000000-0000-0000-0000-000000000001 -- web--  web: http://www.fail2ban.org/fail2ban_logo.png-  web: http://www.onerussian.com/tmp/statsmodes.png-ok-</code></pre>--<p>and would like to remove the fail2ban.org one... ?</p>---</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">Fri Apr 12 10:53:29 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-18ee66a322dee292bddd66916c68ddb5">----<div class="comment-subject">--<a href="/special_remotes.html#comment-18ee66a322dee292bddd66916c68ddb5">Re: Webhook special remote</a>--</div>--<div class="inlinecontent">-@Alex: You might see if the newly-added <span class="createlink">wishlist: allow configuration of downloader for addurl</span> could be made to do what you need... I've not played around with it yet, but perhaps you could set the downloader to be something that can sort out the various URLs and send them to the correct downloading tool?--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=andy&amp;do=goto">andy</a>--</span>---&mdash; <span class="date">Fri Apr 12 04:54:47 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-0370458f6b53772c4f90859d397fc2bc">----<div class="comment-subject">--<a href="/tips/Using_Git-annex_as_a_web_browsing_assistant.html#comment-0370458f6b53772c4f90859d397fc2bc">comment 1</a>--</div>--<div class="inlinecontent">-As of my last commit, you don't really need a separate download manager. The webapp will now display urls that <code>git annex addurl</code> is downloading in amoung the other transfers.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Thu Apr 11 16:16:02 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-904c03f2de30340c297379a762529702">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-904c03f2de30340c297379a762529702">comment 7</a>--</div>--<div class="inlinecontent">-<p><code>bup-split</code> uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.</p>--<p>Yes, it would be possible to make git-annex store this in the git-annex branch instead.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  2 17:24:06 2013</span>-</div>----<div style="clear: both"></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="./sidebar.html">sidebar</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/contact.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></li>-<li><a href="./comments.html">comments</a></li>-<li><span class="selflink">contact</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Joey Hess <a href="mailto:joey@kitenet.net">&#x6a;&#111;&#101;&#121;&#64;&#x6b;&#x69;&#116;&#101;&#x6e;&#x65;&#x74;&#46;&#110;&#x65;&#x74;</a> is the author of git-annex. If you need to-talk about something privately, email me.</p>--<p>The <span class="createlink">forum</span> is the best place to discuss git-annex.</p>--<p>For realtime chat, use the <code>#git-annex</code> channel on irc.oftc.net.-You can also watch incoming commits there.</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>--</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="./sidebar.html">sidebar</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Apr 17 06:41:17 2013</span>-<!-- Created <span class="date">Wed Apr 17 06:41:17 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/copies.html
@@ -1,178 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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-$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="./bare_repositories.html">bare repositories</a>--<a href="./future_proofing.html">future proofing</a>--<a href="./preferred_content.html">preferred content</a>--<a href="./special_remotes/S3.html">special remotes/S3</a>--<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</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>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>--<p>See <a href="./design/assistant.html">assistant</a> for the design site for the git-annex <a href="./assistant.html">assistant</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="./links/the_details.html">links/the details</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Oct 24 11:31:17 2012</span>-<!-- Created <span class="date">Wed Oct 24 11:31:17 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant.html
@@ -1,756 +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>assistant</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">-assistant--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This is the design site for the git-annex <a href="../assistant.html">assistant</a>.</p>--<p>Parts of the design is still being fleshed out, still many ideas-and use cases to add. Feel free to chip in with comments! --<span class="createlink">Joey</span></p>--<h2>roadmap</h2>--<ul>-<li>Month 1 "like dropbox": [[!traillink  inotify]] [[!traillink  syncing]]</li>-<li>Month 2 "shiny webapp": [[!traillink  webapp]] [[!traillink  progressbars]]</li>-<li>Month 3 "easy setup": [[!traillink  configurators]] [[!traillink  pairing]]</li>-<li>Month 4 "cloud": [[!traillink  cloud]] [[!traillink  transfer_control]]</li>-<li>Month 5 "cloud continued": [[!traillink  xmpp]] [[!traillink  more_cloud_providers]]</li>-<li>Month 6 "9k bonus round": [[!traillink  desymlink]]</li>-<li>Month 7: user-driven features and polishing;-<a href="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">presentation at LCA2013</a></li>-<li>Month 8: [[!traillink  Android]]</li>-<li>Month 9: <a href="../videos.html">screencasts</a> and polishing</li>-</ul>---<p>We are, approximately, here:</p>--<ul>-<li>Months 10-11: more user-driven features and polishing</li>-<li>Month 12: "Windows purgatory" <a href="./assistant/windows.html">Windows</a></li>-</ul>---<h2>porting</h2>--<ul>-<li><a href="./assistant/OSX.html">OSX</a> port is in fairly good shape, but still has some room for improvement</li>-<li><a href="./assistant/android.html">android</a> port is just getting started</li>-<li>Windows port does not exist yet</li>-</ul>---<h2>not yet on the map:</h2>--<ul>-<li><a href="./assistant/rate_limiting.html">rate limiting</a></li>-<li><a href="./assistant/partial_content.html">partial content</a></li>-<li><a href="./assistant/encrypted_git_remotes.html">encrypted git remotes</a></li>-<li><a href="./assistant/deltas.html">deltas</a></li>-<li><a href="./assistant/leftovers.html">leftovers</a></li>-<li><span class="createlink">other todo items</span></li>-</ul>---<h2>polls</h2>--<p>I post <a href="./assistant/polls.html">polls</a> occasionally to make decisions. You can vote!</p>--<h2>blog</h2>--<p>I'm blogging about my progress in the <span class="createlink">blog</span> on a semi-daily basis.-Follow along!</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-2dc9d65b6aca226e578eb7af2a8c8f3c">----<div class="comment-subject">--<a href="/design/assistant.html#comment-2dc9d65b6aca226e578eb7af2a8c8f3c">comment 1</a>--</div>--<div class="inlinecontent">-Will statically linked binaries be provided for say Linux, OSX and *BSD?  I think having some statically linked binaries will certainly help and appeal to a lot of users.--</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 Jun  2 08:06:37 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-071a8a4e7402d22af45051da70f9ccae">----<div class="comment-subject">--<a href="/design/assistant.html#comment-071a8a4e7402d22af45051da70f9ccae">comment 2</a>--</div>--<div class="inlinecontent">-Jimmy, I hope to make it as easy as possible to install. I've been focusing on getting it directly into popular Linux distributions, rather than shipping my own binary. The OSX binary is static, and while I lack a OSX machine, I would like to get it easier to distribute to OSX users.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Mon Jun  4 15:45:00 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5a552c09975efea1fa4d81e2722bec4d">----<div class="comment-subject">--<a href="/design/assistant.html#comment-5a552c09975efea1fa4d81e2722bec4d">comment 3</a>--</div>--<div class="inlinecontent">-I'd agree getting it into the main distros is the way to go, if you need OSX binaries, I could volunteer to setup an autobuilder to generate binaries for OSX users, however it would rely on users to have macports with the correct ports installed to use it (things like coreutils etc...)--</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 Jun  7 16:22:55 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e56bb71b2f6a200d167ee6b1bee6587e">----<div class="comment-subject">--<a href="/design/assistant.html#comment-e56bb71b2f6a200d167ee6b1bee6587e">comment 4</a>--</div>--<div class="inlinecontent">-<p>I always appreciate your OSX work Jimmy...</p>--<p>Could it be put into macports?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Jun  7 21:56:52 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c8c6ecfeff30f972792690a5bef58908">----<div class="comment-subject">--<a href="/design/assistant.html#comment-c8c6ecfeff30f972792690a5bef58908">comment 5</a>--</div>--<div class="inlinecontent">-<p>In relation to macports, I often found that haskell in macports are often behind other distros, and I'm not willing to put much effort into maintaining or updating those ports. I found that to build git-annex, installing macports manually and then installing haskell-platform from the upstream to be the best way to get the most up to date dependancies for git-annex.</p>--<p>fyi in macports ghc is at version 6.10.4 and haskell platform is at version 2009.2, so there are a significant number of ports to update.</p>--<p>I was thinking about this a bit more and I reckon it might be easier to try and build a self contained .pkg package and have all the needed binaries in a .app styled package, that would work well when the webapp comes along. I will take a look at it in a week or two (currently moving house so I dont have much time)</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 Jun  8 03:22:34 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-77e54e7ebfbd944c370173014b535c91">----<div class="comment-subject">--<a href="/design/assistant.html#comment-77e54e7ebfbd944c370173014b535c91">comment 6</a>--</div>--<div class="inlinecontent">-<p>It's not much for now... but see <a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/">http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/</a> I'm ignoring the debian-stable and pristine-tar branches for now, as I am just building and testing on osx 10.7.</p>--<p>Hope the autobuilder will help you develop the OSX side of things without having direct access to an osx machine! I will try and get gitbuilder to spit out appropriately named tarballs of the compiled binaries in a few days when I have more time.</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 Jun  8 11:21:18 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-135a31b1e86ecc315f121fe53da32276">----<div class="comment-subject">--<a href="/design/assistant.html#comment-135a31b1e86ecc315f121fe53da32276">comment 7</a>--</div>--<div class="inlinecontent">-Thanks, that's already been useful to me. You might as well skip the debian-specific "bpo" tags too.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Jun  9 14:07:51 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f65cad7d6e0a76a18b1801d27cd8de01">----<div class="comment-subject">--<a href="/design/assistant.html#comment-f65cad7d6e0a76a18b1801d27cd8de01">macports</a>--</div>--<div class="inlinecontent">-<p>The average OSX user has a) no idea what macports is, and b) will not be able to install it. Anything that requires a user to do anything with a commandline (or really anything other than using a GUI installer) is effectively a dealbreaker. For our use cases OSX is definitely a requirement, but it must only use standard OSX installation methods in order to be usable. Being in the appstore would be ideal, but standard dmg/pkg installers are still common enough that they are also acceptable.</p>--<p>FWIW this is the same reason many git GUIs were not usable for our OSX users: they required separate installation of the git commandline tools.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://wiggy.net/">Wichert</a>-</span>---&mdash; <span class="date">Tue Jun 12 09:00:34 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-52daf652d7b7629489f942063cec87b7">----<div class="comment-subject">--<a href="/design/assistant.html#comment-52daf652d7b7629489f942063cec87b7">Watch also possible with git?</a>--</div>--<div class="inlinecontent">-<p>Hi,</p>--<p>it seems that you put a lot of efforts in handling race conditions. Thats great. I wonder if the watch can also be used with git (i.e. changes are commited into git and not as annex)? I know that other projects follow this idea but why using different tools if the git-annex assistant could handle both...</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://www.klomp.eu/">klomp.eu</a>-</span>---&mdash; <span class="date">Fri Jun 15 13:25:30 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-bcf6c709883506c83aa3111cc23bc7ff">----<div class="comment-subject">--<a href="/design/assistant.html#comment-bcf6c709883506c83aa3111cc23bc7ff">Homebrew instead of MacPorts</a>--</div>--<div class="inlinecontent">-<p><a href="http://mxcl.github.com/homebrew/">Homebrew</a> is a much better package manager than MacPorts IMO.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawldKnauegZulM7X6JoHJs7Gd5PnDjcgx-E">Matt</a>-</span>---&mdash; <span class="date">Fri Jun 22 00:26:02 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-bbcaeb83ceffab6ec34d34db157a489e">----<div class="comment-subject">--<a href="/design/assistant.html#comment-bbcaeb83ceffab6ec34d34db157a489e">comment 11</a>--</div>--<div class="inlinecontent">-<p>Yeah definately go with homebrew rather than macports if possible. macports and fink, whilst great systems, have a tendency to sort of create their own alternative-dimension of files within the system that just dont always feel particularly well integrated. As a result "brew" has become increasingly more popular to the point its almost ubuquitous now.</p>--<p>Plus its brew-doctor thing is awesome.</p>--<p>The best approach though thats agnostic to distro systems is to simply go for a generic installer.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawneJXwhacIb0YvvdYFxhlNVpz6Wpg6V7AA">Shayne</a>-</span>---&mdash; <span class="date">Sun Aug 12 20:37:35 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f953069e70bcd5f6a3f05d1eb306325b">----<div class="comment-subject">--<a href="/design/assistant.html#comment-f953069e70bcd5f6a3f05d1eb306325b">Multiple annexes?</a>--</div>--<div class="inlinecontent">-<p>Thank you for this great piece of software which is now becoming even better with the assistant.</p>--<p>Just one question: will one instance of the assistant be able to track multiple git annex repositories each building up their own network of annexes OR would I need to run multiple instances of the assistant?</p>--<p>Thanks,-Jörn</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4">Jörn</a>-</span>---&mdash; <span class="date">Thu Sep 20 12:10:29 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-6ddc18af9685a7ddbbe6e639e7b15feb">----<div class="comment-subject">--<a href="/design/assistant.html#comment-6ddc18af9685a7ddbbe6e639e7b15feb">comment 13</a>--</div>--<div class="inlinecontent">-@Jörn, two days ago I added support in the webapp for multiple independent repositories. So you can create independent repos using it, and switch between them from a menu. Under the hood there are multiple git-annex assistant daemons running, but this is an implementation detail; it's not like these use any more memory or other resources than would a single daemon that managed multiple repositories.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Sep 20 12:21:11 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a38695b8a047c997862345ffe881d952">----<div class="comment-subject">--<a href="/design/assistant.html#comment-a38695b8a047c997862345ffe881d952">you rock! &#x26; roadmap update?</a>--</div>--<div class="inlinecontent">-<p>joey, you rock. I just want to push on that point - it doesn't seem like there's that many tools that do what git-annex is trying to do out there, and you seem to be doing an incredible job at doing it, so this is great, keep going!</p>--<p>i was wondering - i am glad to see the progress, but it is unclear to me where you actually are in the roadmap. are things going according to plan? are we at month 3? 4? or 1-4? :) just little updates on that roadmap section above would be quite useful!</p>--<p>thanks again!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://id.koumbit.net/anarcat">anarcat [id.koumbit.net]</a>-</span>---&mdash; <span class="date">Fri Sep 21 00:25:58 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-269c4c315e1dac0d6c18069a9616c767">----<div class="comment-subject">--<a href="/design/assistant.html#comment-269c4c315e1dac0d6c18069a9616c767">comment 15</a>--</div>--<div class="inlinecontent">-<p>We're on month 4 of work, and most of months 1-3 is done well enough for a first pass. Very little of what's listed in month 4 has happened yet, due to my being maybe 2 weeks behind schedule, but bits of <a href="./assistant/cloud.html">cloud</a> are being planned.</p>--<p>I've made a small adjustment, I think it'll make sense to spend a month on user-driven features before getting into Android.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Fri Sep 21 01:25:53 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f5af9f1fe608daa7eb6f45a4539311d0">----<div class="comment-subject">--<a href="/design/assistant.html#comment-f5af9f1fe608daa7eb6f45a4539311d0">Maybe a DEB?2</a>--</div>--<div class="inlinecontent">-Month 3 was all about easy setup, so I kind of expected to download a deb package and just install it, not to download a whole bunch of haskell libraries. Is there a chance that you will release some packages?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://launchpad.net/~gdr-go2">gdr-go2</a>-</span>---&mdash; <span class="date">Thu Sep 27 05:44:14 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-3f7c7b52d5fadcf2e8a38e741d44ed61">----<div class="comment-subject">--<a href="/design/assistant.html#comment-3f7c7b52d5fadcf2e8a38e741d44ed61">comment 17</a>--</div>--<div class="inlinecontent">-@gdr A package with the assistant is available in Debian unstable.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Sep 27 14:44:11 2012</span>-</div>----<div style="clear: both"></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="../assistant.html">assistant</a>--<a href="../design.html">design</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Apr  2 17:32:07 2013</span>-<!-- Created <span class="date">Tue Apr  2 17:32:07 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/OSX.html
@@ -1,196 +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="../../design.html">design</a>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-OSX--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Misc OSX porting things:</p>--<ul>-<li>autostart the assistant on OSX, using launchd <strong>done</strong></li>-<li>icon to start webapp <strong>done</strong></li>-<li>use FSEvents to detect file changes (better than kqueue) <strong>done</strong></li>-<li>Use OSX's "network reachability functionality" to detect when on a network-<a href="http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065">http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065</a></li>-</ul>---<p>Bugs:</p>--<div  class="feedlink">---</div>------</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-7295a75b6b4af9abb6a6437381580f2f">----<div class="comment-subject">--<a href="/design/assistant/OSX.html#comment-7295a75b6b4af9abb6a6437381580f2f">Mount detection</a>--</div>--<div class="inlinecontent">-<p>regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?</p>--<p>Details see:</p>--<ol>-<li><a href="http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x">http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x</a></li>-<li><a href="http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c">http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c</a></li>-<li><a href="https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438">https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438</a></li>-</ol>----</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4">Jörn</a>-</span>---&mdash; <span class="date">Fri Sep 21 05:23:34 2012</span>-</div>----<div style="clear: both"></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="../assistant.html">assistant</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Mar 27 17:32:15 2013</span>-<!-- Created <span class="date">Wed Mar 27 17:32:15 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/cloud.html
@@ -1,324 +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>cloud</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>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-cloud--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The <a href="./syncing.html">syncing</a> design assumes the network is connected. But it's often-not in these pre-IPV6 days, so the cloud needs to be used to bridge between-LANS.</p>--<h2>The cloud notification problem (<strong>done</strong>)</h2>--<p>Alice and Bob have repos, and there is a cloud remote they both share.-Alice adds a file; the assistant transfers it to the cloud remote.-How does Bob find out about it?</p>--<p>There are two parts to this problem. Bob needs to find out that there's-been a change to Alice's git repo. Then he needs to pull from Alice's git repo,-or some other repo in the cloud she pushed to. Once both steps are done,-the assistant will transfer the file from the cloud to Bob.</p>--<ul>-<li>dvcs-autosync uses xmppp; all repos need to have the same xmpp account-configured, and send self-messages. An alternative would be to have-different accounts that join a channel or message each other. Still needs-account configuration.</li>-<li>irc could be used. With a default irc network, and an agreed-upon channel,-no configuration should be needed. IRC might be harder to get through-some firewalls, and is prone to netsplits, etc. IRC networks have reasons-to be wary of bots using them. Only basic notifications could be done over-irc, as it has little security.</li>-<li>When there's a ssh server involved, code could be run on it to notify-logged-in clients. But this is not a general solution to this problem.</li>-<li>pubsubhubbub does not seem like an option; its hubs want to pull down-a feed over http.</li>-</ul>---<p>See <a href="./xmpp.html">xmpp</a> for design of git-annex's use of xmpp for push notifications.</p>--<h2>storing git repos in the cloud <strong>done for XMPP</strong></h2>--<p>Of course, one option is to just use github etc to store the git repo.</p>--<p>Two things can store git repos in Amazon S3:-* <a href="http://gabrito.com/post/storing-git-repositories-in-amazon-s3-for-high-availability">http://gabrito.com/post/storing-git-repositories-in-amazon-s3-for-high-availability</a>-* <a href="http://wiki.cs.pdx.edu/oss2009/index/projects/gits3.html">http://wiki.cs.pdx.edu/oss2009/index/projects/gits3.html</a></p>--<p>Another option is to not store the git repo in the cloud, but push/pull-peer-to-peer. When peers cannot directly talk to one-another, this could be-bounced through something like XMPP. This is <strong>done</strong> for <a href="./xmpp.html">xmpp</a>!</p>--<p>Another option: Use <a href="https://github.com/blake2-ppc/git-remote-gcrypt">https://github.com/blake2-ppc/git-remote-gcrypt</a> to store-git repo encrypted on cloud storage.</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-bff38388465cb7c83fd1440853a45410">----<div class="comment-subject">--<a href="/design/assistant/cloud.html#comment-bff38388465cb7c83fd1440853a45410">is ftp an option?</a>--</div>--<div class="inlinecontent">-for people only having ftp-access to there storage.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawn7Oyqusvn0oONFtVhCx5gRAcvPjyRMcBI">Michaël</a>-</span>---&mdash; <span class="date">Wed May 30 06:44:12 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5aea3eb7e8aec1e2110b6a4f1a843433">----<div class="comment-subject">--<a href="/design/assistant/cloud.html#comment-5aea3eb7e8aec1e2110b6a4f1a843433">Cloud Service Limitations</a>--</div>--<div class="inlinecontent">-<p>Hey Joey!</p>--<p>I'm not very tech savvy, but here is my question.-I think for all cloud service providers, there is an upload limitation on how big one file may be.-For example, I can't upload a file bigger than 100 MB on box.net.-Does this affect git-annex at all? Will git-annex automatically split the file depending on the cloud provider or will I have to create small RAR archives of one large file to upload them?</p>--<p>Thanks!-James</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkq0-zRhubO6kR9f85-5kALszIzxIokTUw">James</a>-</span>---&mdash; <span class="date">Sun Jun 10 22:15:04 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c0b4e1ebdb4ac122b1b1e8723336544e">----<div class="comment-subject">--<a href="/design/assistant/cloud.html#comment-c0b4e1ebdb4ac122b1b1e8723336544e">re: cloud</a>--</div>--<div class="inlinecontent">-Yes, git-annex has to split files for certian providers. I already added support for this as part of my first pass at supporting box.com, see <a href="../../tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Mon Jun 11 00:48:08 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5e27fcb1377b57315d90fc31268e4abb">----<div class="comment-subject">--<a href="/design/assistant/cloud.html#comment-5e27fcb1377b57315d90fc31268e4abb">OwnCloud</a>--</div>--<div class="inlinecontent">-<p>“Google drive (attractive because it's free, only 5 gb tho)”</p>--<p>Just in case somebody also wants their 5GB of disk space in the cloud, consider using some of the <a href="http://owncloud.org/providers/">owncloud providers</a>. They also offer that amount, but they use free software for everything, using standard protocols (WebDav mostly, because is well supported in all OS).</p>--<p>Git Annex works with them through davfs2, but it would be great if it could support this other program/protocol (OwnCloud/WebDAV) in a more integrated way.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawk9XEh8pxrJxZxIkyK7lWaA7QG1UWt9lgU">Gugelplus</a>-</span>---&mdash; <span class="date">Mon Aug 27 16:43:19 2012</span>-</div>----<div style="clear: both"></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="./comment_15_68c98a27083567f20c2e6bc2a760991b.html">comment 15 68c98a27083567f20c2e6bc2a760991b</a>--<a href="./polls/prioritizing_special_remotes.html">polls/prioritizing special remotes</a>--<a href="./xmpp.html">xmpp</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Jan 29 17:30:51 2013</span>-<!-- Created <span class="date">Tue Jan 29 17:30:51 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/deltas.html
@@ -1,176 +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>deltas</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>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-deltas--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Speed up syncing of modified versions of existing files.</p>--<p>One simple way is to find the key of the old version of a file that's-being transferred, so it can be used as the basis for rsync, or any-other similar transfer protocol.</p>--<p>For remotes that don't use rsync, a poor man's version could be had by-chunking each object into multiple parts. Only modified parts need be-transferred. Sort of sub-keys to the main key being stored.</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-16106e3d96459d2de00f385071acaff5">----<div class="comment-subject">--<a href="/design/assistant/deltas.html#comment-16106e3d96459d2de00f385071acaff5">zsync?</a>--</div>--<div class="inlinecontent">-zsync.moria.org.uk may have broken some of the ground here.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkfHTPsiAcHEEN7Xl7WxiZmYq-vX7azxFY">Vincent</a>-</span>---&mdash; <span class="date">Mon Sep 10 08:35:45 2012</span>-</div>----<div style="clear: both"></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="../assistant.html">assistant</a>--<a href="./polls/goals_for_April.html">polls/goals for April</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/polls.html
@@ -1,333 +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>polls</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>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-polls--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<div  class="feedlink">---</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./polls/what_is_preventing_me_from_using_git-annex_assistant.html">what is preventing me from using git-annex assistant</a>--</span>-</div>--<div class="inlinecontent">-<p>My goal for this month is to get more people using the git-annex assistant,-and fix issues that might be blocking you from using it. To do this,-I'd like to get an idea about whether you're already using it,-or what's keeping you from using it.</p>--<p>If you use <code>git-annex</code> at the command line and have no reason to use the-assistant, please instead fill in this poll on behalf of less technically-adept friends or family -- what's preventing you from introducing them to-the assistant?</p>--<p>[[!poll  open=yes expandable=yes 8 "I'm using the assistant!" 27 "I need a Windows port" 30 "I need an Android port" 3 "I need an IPhone port (not holding my breath)" 2 "Well, it's still in beta..." 11 "I want to, but have not had the time to try it" 5 "Just inertia. I've got this dropbox/whatever that already works.." 3 "It's too hard to install (please say why in comments)" 2 "Perceived recent increase of bug reports and thus sitting it out." 25 "Initially the lack of direct-mode. Now concerns about the safety of direct mode. Perhaps after the next release." 9 "I haven't always well understood the differences between commandline operation &amp; the assistant, so the differences would confuse me, and I found the command line more understandable &amp; less scary.  Now trying to learn to like &amp; trust the assistant. :)" 21 "An Ubuntu PPA would be supercool! Thanks for your great work!!" 18 "Not yet in Debian sid amd64" 6 "Waiting for Fedora/CentOS rpm repository." 2 "throttling transfers, it upsets people when I saturate the connection" 2 "partial content" 1 "Not yet available in macports" 4 "No build yet for Nokia N9" 3 "Using only git-annex webapp to config does not seem to work: Create walkthough?" 5 "No build for OSX 10.6" 5 "Needs more focus on the UI." 1 "Just inertia. I don't have a Dropbox/whatever." 4 "Replaces files with a symlink mess." 2 "configurable option to only annex files meeting certian size or filename criteria" 4 "I'm really confused about how to make it sync with a remote NON-bare repository. I'm even afraid to try <code>git remote add</code>, since there is no clear method to completely forget a git-annex remote..." 5 "A build for te raspberry pi would be supercol!" 1 "Would be nice to exclude subfolders from the gui or through a config file" 1 "I wish I had transparently encrypted git repos in the cloud available, like jgit." 1 "too many inodes used in direct mode. maybe it's possible to keep more info as git objects instead?" 2 "I need to be able to restrict in which repo dirs changes get auto-committed" 1 "Provide .deb package" 1 "Better documentation/walkthroughs on using git-annex within an existing git repo. AKA mixed use" 1 "Union mounts to have a single view of file collection on the network" 1 "Ubuntu PPA does not build with webapp" 1 "I set it up, but am confused about what I set up! It would be great to be able to start from scratch."]]</p>--<p>Feel free to write in your own reasons, or add a comment to give me more info.</p>--</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Tue Apr 16 13:31:48 2013</span>-</span>----------</div>--</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./polls/goals_for_April.html">goals for April</a>--</span>-</div>--<div class="inlinecontent">-<p>What should I work on in April? I expect I could get perhaps two of these-features done in a month if I'm lucky. I have only 3 more funded months,-and parts of one will be spent working on porting to Windows, so choose wisely!---<span class="createlink">Joey</span></p>--<p>[[!poll  open=yes expandable=yes 4 "upload and download rate limiting" 15 "get webapp working on Android" 5 "deltas: speed up syncing modified versions of existing files" 8 "encrypted git remotes using git-remote-gcrypt" 0 "add support for more cloud storage remotes" 19 "don't work on features, work on making it easier to install and use" 2 "Handle duplicate files" 6 "direct mode (aka real files instead of symlinks) [already done --joey]" 3 "start windows port now"]]</p>--<p>References:</p>--<ul>-<li><a href="./rate_limiting.html">rate limiting</a></li>-<li><a href="./polls/Android.html">Android</a></li>-<li><a href="./deltas.html">deltas</a> to speed up syncing modified files (at least for remotes using rsync)</li>-<li><a href="./encrypted_git_remotes.html">encrypted git remotes</a></li>-<li><a href="./more_cloud_providers.html">more cloud providers</a> (OpenStack Swift, Owncloud, Google drive,-Dropbox, Mediafire, nimbus.io, Mega, etc.)</li>-<li><a href="./polls/what_is_preventing_me_from_using_git-annex_assistant.html">old poll on "what is preventing me from using git-annex assistant"</a>-(many of the items on it should be fixed now, but I have plenty of bug reports to chew on still)</li>-</ul>---</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Wed Apr  3 00:33:16 2013</span>-</span>----------</div>--</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./polls/prioritizing_special_remotes.html">prioritizing special remotes</a>--</span>-</div>--<div class="inlinecontent">-<p>Background: git-annex supports storing data in various <a href="../../special_remotes.html">special remotes</a>.-The git-annex assistant will make it easy to configure these, and easy-configurators have already been built for a few: removable drives, rsync.net,-locally paired systems, and remote servers with rsync.</p>--<p>Help me prioritize my work: What special remote would you most like-to use with the git-annex assistant?</p>--<p>[[!poll  open=yes 15 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 9 "Box.com (done)" 70 "My phone (or MP3 player)" 18 "Tahoe-LAFS" 7 "OpenStack SWIFT" 28 "Google Drive"]]</p>--<p>This poll is ordered with the options I consider easiest to build-listed first. Mostly because git-annex already supports them and they-only need an easy configurator. The ones at the bottom are likely to need-significant work. See <a href="./cloud.html">cloud</a> for detailed discussion.</p>--<p>Have another idea? Absolutely need two or more? Post comments..</p>--</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Fri Feb 22 04:35:00 2013</span>-</span>----------</div>--</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./polls/Android.html">Android</a>--</span>-</div>--<div class="inlinecontent">-<p>Help me choose a goal for the month of December. The last poll showed-a lot of interest in using the git-annex assistant with phones, etc.</p>--<p>Background: git-annex uses symbolic links in its repositories. This makes it-hard to use with filesystems, such as FAT, that do not support symbolic links.-FAT filesystems are the main storage available on some Android devices that-have a micro-SD card. Other, newer Android devices don't have a SD card and so-avoid this problem.</p>--<p>I can either work on the idea described in-<a href="./desymlink.html">desymlink</a>, which could solve the symlink problem and-also could lead to a nicer workflow to editing files that are stored in-git-annex.</p>--<p>Or, I can work on <a href="./android.html">Android porting</a>, and try to-get the assistant working on Android's built-in storage.</p>--<p>[[!poll  open=no 81 "solve the symlink problem first" 17 "port to Android first" 1 "other"]]</p>--</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Thu Dec  6 00:33:02 2012</span>-</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="../assistant.html">assistant</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/webapp.html
@@ -1,344 +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>webapp</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>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-webapp--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The webapp is a web server that displays a shiny interface.</p>--<h2>performance</h2>--<p>Having the webapp open while transfers are-running uses significant CPU just for the browser to update the progress-bar. Unsurprising, since the webapp is sending the browser a new <code>&lt;div&gt;</code>-each time. Updating the DOM instead from javascript would avoid that;-the webapp just needs to send the javascript either a full <code>&lt;div&gt;</code> or a-changed percentage and quantity complete to update a single progress bar.</p>--<p>(Another reason to do this is it'll cut down on the refreshes, which-sometimes make browsers ignore clicks on UI elements like the pause button,-if the transfer display refreshes just as the click is made.)</p>--<h2>other features</h2>--<ul>-<li>there could be a UI to export a file, which would make it be served up-over http by the web app</li>-<li>there could be a UI (some javascript thing) in the web browser to-submit urls to the web app to be added to the annex and downloaded.-See: <span class="createlink">wishlist: an &#34;assistant&#34; for web-browsing -- tracking the sources of the downloads</span></li>-<li>Display the <code>inotify max_user_watches</code> exceeded message. <strong>done</strong></li>-<li>Display something sane when kqueue runs out of file descriptors.</li>-<li>allow removing git remotes <strong>done</strong></li>-<li>allow disabling syncing to here, which should temporarily disable all-local syncing. <strong>done</strong></li>-</ul>---<h2>better headless support</h2>--<p><code>--listen</code> is insecure, and using HTTPS would still not make it 100% secure-as there would be no way for the browser to verify its certificate.</p>--<p>I do have a better idea, but it'd be hard to implement.-<code>git annex webapp --remote user@host:dir</code> could ssh to the remote host,-run the webapp there, listening only on localhost, and then send the-port the webapp chose back over the ssh connection. Then the same-ssh connection could be reused (using ssh connection caching) to set up-port forwarding from a port on the local host to the remote webapp.</p>--<p>This would need to handle the first run case too, which would require-forwarding a second port once the webapp made the repository and-the second webapp started up.</p>--<h2>first start <strong>done</strong></h2>--<ul>-<li>make git repo <strong>done</strong></li>-<li>generate a nice description like "joey@hostname Desktop/annex" <strong>done</strong></li>-<li>record repository that was made, and use it next time run <strong>done</strong></li>-<li>write a pid file, to prevent more than one first-start process running-at once <strong>done</strong></li>-</ul>---<h2>security <strong>acceptable/done</strong></h2>--<ul>-<li>Listen only to localhost. <strong>done</strong></li>-<li>Instruct the user's web browser to open an url that contains a secret-token. This guards against other users on the same system. <strong>done</strong>-(I would like to avoid passwords or other authentication methods,-it's your local system.)</li>-<li>Don't pass the url with secret token directly to the web browser,-as that exposes it to <code>ps</code>. Instead, write a html file only the user can read,-that redirects to the webapp. <strong>done</strong></li>-<li>Alternative for Linux at least would be to write a small program using-GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding-needing authentication.</li>-</ul>---</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-66f9834d5ad31c3d31c2078845cc6a0f">----<div class="comment-subject">--<a href="/design/assistant/webapp.html#comment-66f9834d5ad31c3d31c2078845cc6a0f">Secret URL token</a>--</div>--<div class="inlinecontent">-<blockquote><p>Instruct the user's web browser to open an url that contains a secret token. This guards against other users on the same system.</p></blockquote>--<p>How will you implement that? Running "sensible-browser URL" would be the obvious way, but the secret URL would show up in a well timed ps listing. (And depending on the browser, ps may show the URL the entire time it's running.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=yatesa&amp;do=goto">yatesa</a>--</span>---&mdash; <span class="date">Mon Jun 18 23:41:16 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-ded5c5608cbc936a6e5575e52e4744dd">----<div class="comment-subject">--<a href="/design/assistant/webapp.html#comment-ded5c5608cbc936a6e5575e52e4744dd">ARM support</a>--</div>--<div class="inlinecontent">-The closure of <a href="http://hackage.haskell.org/trac/ghc/ticket/5839">this</a> ticket hopefully marks the end of TH issues on ARM. As of 7.4.2, GHC's linker has enough ARM support to allow a selection of common packages compile on my PandaBoard. That being said, it hasn't had a whole lot of testing so it's possible I still need to implement a few relocation types.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlup4hyZo4eCjF8T85vfRXMKBxGj9bMdl0">Ben</a>-</span>---&mdash; <span class="date">Fri Jul 13 12:51:15 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-4af69b775df8a89c570165f608b29672">----<div class="comment-subject">--<a href="/design/assistant/webapp.html#comment-4af69b775df8a89c570165f608b29672">comment 3</a>--</div>--<div class="inlinecontent">-Using twitter-bootstrap for the webapp - this might be a wishlist item, but would it be possible to ensure that the webapp's css uses twitter-bootstrap classes. It would make theming much easier in the long run and it would give you a nice modern look with a low amount of effort.--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=jtang&amp;do=goto">jtang</a>--</span>---&mdash; <span class="date">Thu Jul 26 13:35:18 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-3a63f1e7dcdd65b98769280dc73a3d59">----<div class="comment-subject">--<a href="/design/assistant/webapp.html#comment-3a63f1e7dcdd65b98769280dc73a3d59">comment 4</a>--</div>--<div class="inlinecontent">-<p>So, Yesod's scaffolded site actually does use bootstrap, but I didn't use the scaffolded site so don't have it. I am not quite to the point of doing any theming of the webapp, but I do have this nice example of how to put in bootstrap right here..</p>--<p>By the way, if anyone would like to play with the html templates for the webapp, the main html template is <code>templates/default-layout.hamlet</code>. Uses a slightly weird template markup, but plain html will also work. And there's also the <code>static/</code> directory; every file in there will be compiled directly into the git-annex binary, and is available at <code>http://localhost:port/static/$file</code> in the webapp. See the favicon link in <code>default-layout.hamlet</code> of how to construct a type-safe link to a static file: <code>href=@{StaticR favicon_ico}</code>. That's all you really need to theme the webapp, without doing any real programming!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Jul 26 13:45:28 2012</span>-</div>----<div style="clear: both"></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="./configurators.html">configurators</a>--<a href="./progressbars.html">progressbars</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Apr  8 17:31:47 2013</span>-<!-- Created <span class="date">Mon Apr  8 17:31:47 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/assistant/xmpp.html
@@ -1,345 +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>xmpp</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>/ --<a href="../assistant.html">assistant</a>/ --</span>-<span class="title">-xmpp--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../../install.html">install</a></li>-<li><a href="../../assistant.html">assistant</a></li>-<li><a href="../../walkthrough.html">walkthrough</a></li>-<li><a href="../../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The git-annex assistant uses XMPP to communicate between peers that-cannot directly talk to one-another. A typical scenario is two users-who share a repository, that is stored in the <a href="./cloud.html">cloud</a>.</p>--<h3>TODO</h3>--<ul>-<li>Prevent idle disconnection. Probably means sending or receiving pings,-but would prefer to avoid eg pinging every 60 seconds as some clients do.</li>-<li>Do git-annex clients sharing an account with regular clients cause confusing-things to happen?-See <a href="http://git-annex.branchable.com/design/assistant/blog/day_114__xmpp/#comment-aaba579f92cb452caf26ac53071a6788">http://git-annex.branchable.com/design/assistant/blog/day_114__xmpp/#comment-aaba579f92cb452caf26ac53071a6788</a></li>-<li>Support use of a single XMPP account with several separate and-independant git-annex repos. This probably works for the simple-push notification use of XMPP, since unknown UUIDs will just be ignored.-But XMPP pairing and the pushes over XMPP assume that anyone you're-paired with is intending to sync to your repository.</li>-</ul>---<h2>design goals</h2>--<ol>-<li><p>Avoid user-visible messages. dvcs-autosync uses XMPP similarly, but-sends user-visible messages. Avoiding user-visible messages lets-the user configure git-annex to use his existing XMPP account-(eg, Google Talk).</p></li>-<li><p>Send notifications to buddies. dvcs-autosync sends only self-messages,-but that requires every node have the same XMPP account configured.-git-annex should support that mode, but it should also send notifications-to a user's buddies. (This will also allow for using XMPP for pairing-in the future.)</p></li>-<li><p>Don't make account appear active. Just because git-annex is being an XMPP-client, it doesn't mean that it wants to get chat messages, or make the-user appear active when he's not using his chat program.</p></li>-</ol>---<h2>protocol</h2>--<p>To avoid relying on XMPP extensions, git-annex communicates-using presence messages, and chat messages (with empty body tags,-so clients don't display them).</p>--<p>git-annex sets a negative presence priority, to avoid any regular messages-getting eaten by its clients. It also sets itself extended away.-Note that this means that chat messages always have to be directed at-specific git-annex clients.</p>--<p>To the presence and chat messages, it adds its own tag as-<a href="http://xmpp.org/rfcs/rfc6121.html#presence-extended">extended content</a>.-The xml namespace is "git-annex" (not an URL because I hate wasting bandwidth).</p>--<p>To indicate it's pushed changes to a git repo with a given UUID, a message-that is sent to all buddies and other clients using the account (no-explicit pairing needed), it uses a broadcast presence message containing:</p>--<pre><code>&lt;git-annex xmlns='git-annex' push="uuid[,uuid...]" /&gt;-</code></pre>--<p>Multiple UUIDs can be listed when multiple clients were pushed. If the-git repo does not have a git-annex UUID, an empty string is used.</p>--<p>To query if other git-annex clients are around, a presence message is used,-containing:</p>--<pre><code>&lt;git-annex xmlns='git-annex' query="" /&gt;-</code></pre>--<p>For pairing, a chat message is sent to every known git-annex client,-containing:</p>--<pre><code>&lt;git-annex xmlns='git-annex' pairing="PairReq|PairAck|PairDone uuid" /&gt;-</code></pre>--<h3>git push over XMPP</h3>--<p>To indicate that we could push over XMPP, a chat message is sent,-to each known client of each XMPP remote.</p>--<pre><code>&lt;git-annex xmlns='git-annex' canpush="" /&gt;-</code></pre>--<p>To request that a remote push to us, a chat message can be sent.</p>--<pre><code>&lt;git-annex xmlns='git-annex' pushrequest="" /&gt;-</code></pre>--<p>When replying to an canpush message, this is directed at the specific-client that indicated it could push. To solicit pushes from all clients,-the message has to be sent directed individually to each client.</p>--<p>When a peer is ready to send a git push, it sends:</p>--<pre><code>&lt;git-annex xmlns='git-annex' startingpush="" /&gt;-</code></pre>--<p>The receiver runs <code>git receive-pack</code>, and sends back its output in-one or more chat messages, directed to the client that is pushing:</p>--<pre><code>&lt;git-annex xmlns='git-annex' rp="N"&gt;-007b27ca394d26a05d9b6beefa1b07da456caa2157d7 refs/heads/git-annex report-status delete-refs side-band-64k quiet ofs-delta-&lt;/git-annex&gt;-</code></pre>--<p>The sender replies with the data from <code>git push</code>, in-one or more chat messages, directed to the receiver:</p>--<pre><code>&lt;git-annex xmlns='git-annex' sp="N"&gt;-data-&lt;/git-annex&gt;-</code></pre>--<p>The value of rp and sp used to be empty, but now it's a sequence number.-This indicates the sequence of this packet, counting from 1. The receiver-and sender each have their own sequence numbers. These sequence numbers-are not really used yet, but are available for debugging.</p>--<p>When <code>git receive-pack</code> exits, the receiver indicates its exit-status with a chat message, directed at the sender:</p>--<pre><code>&lt;git-annex xmlns='git-annex' rpdone="0" /&gt;-</code></pre>--<h3>security</h3>--<p>Data git-annex sends over XMPP will be visible to the XMPP-account's buddies, to the XMPP server, and quite likely to other interested-parties. So it's important to consider the security exposure of using it.</p>--<p>Even if git-annex sends only a single bit notification, this lets attackers-know when the user is active and changing files. Although the assistant's other-syncing activities can somewhat mask this.</p>--<p>As soon as git-annex does anything unlike any other client, an attacker can-see how many clients are connected for a user, and fingerprint the ones-running git-annex, and determine how many clients are running git-annex.</p>--<p>If git-annex sent the UUID of the remote it pushed to, this would let-attackers determine how many different remotes are being used,-and map some of the connections between clients and remotes.</p>--<p>An attacker could replay push notification messages, reusing UUIDs it's-observed. This would make clients pull repeatedly, perhaps as a DOS.</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-9f0899c3cbe02e70727bdf53dcf7d187">----<div class="comment-subject">--<a href="/design/assistant/xmpp.html#comment-9f0899c3cbe02e70727bdf53dcf7d187">xmlns</a>--</div>--<div class="inlinecontent">-<p>A minor point, but is saving a couple of bytes per message worth using a <a href="http://www.w3.org/TR/REC-xml-names/#iri-use">deprecated feature</a> of the namespaces specification? This is not technically <em>breaking</em> the current specification, since "git-annex" is of course still a (relative) URI reference; and anyway chances of problems are, I guess, slim. But is it the lesser of two bugs?</p>--<p>The shortest moderately sane absolute URI containing "git-annex" would probably be "data:,git-annex".</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://meep.pl/">meep.pl</a>-</span>---&mdash; <span class="date">Sun Nov 11 05:00:01 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-509b6646daee0dfe1c72f898b12532db">----<div class="comment-subject">--<a href="/design/assistant/xmpp.html#comment-509b6646daee0dfe1c72f898b12532db">Plans for two factor authentication or oath?</a>--</div>--<div class="inlinecontent">-Are there plans to support google's two factor authentication?  Right now I have to use an application specific password.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>-</span>---&mdash; <span class="date">Sun Apr 14 20:58:04 2013</span>-</div>----<div style="clear: both"></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="./cloud.html">cloud</a>--<a href="../../special_remotes/xmpp.html">special remotes/xmpp</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Apr 10 20:33:24 2013</span>-<!-- Created <span class="date">Wed Apr 10 20:33:24 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/design/encryption.html
@@ -1,524 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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="../tips/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: failed to process template <span class="createlink">note</span> </span>]]</p>--<p>Data is encrypted by GnuPG, using a symmetric cipher. The cipher is-generated by GnuPG when the special remote is created. By default the-best entropy pool is used, hence the generation may take a while; One-can use <code>initremote</code> with <code>highRandomQuality=false</code> or <code>--fast</code> options-to speed up things, but at the expense of using random numbers of a-lower quality. The generated cipher is then checked into your git-repository, encrypted using one or more OpenPGP public keys. This scheme-allows new OpenPGP 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. SHA-1 is the default, but <a href="../encryption.html">other hashes</a>-can be chosen for new remotes.</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  class="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 style="clear: both"></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 style="clear: both"></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 style="clear: both"></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 style="clear: both"></div>-</div>-<div class="comment" id="comment-f5cd94e227a4b70e41048e3b420e96dd">----<div class="comment-subject">--<a href="/design/encryption.html#comment-f5cd94e227a4b70e41048e3b420e96dd">using sshfs + cryptmount is more secure</a>--</div>--<div class="inlinecontent">-<p>"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>Better security is given by sshfs + cryptmount, which I used when I recently setup a git-annex repository on a free shell account from a provider I do not trust.</p>--<p>See http://code.cjb.net/free-secure-online-backup.html for what I did to get a really secure solution.</p>--<p>Kind regards,</p>--<p>Hans Ekbrand</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo">Hans</a>-</span>---&mdash; <span class="date">Tue Aug 14 09:41:47 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a035b1698e1253e7a5244721d73c71cf">----<div class="comment-subject">--<a href="/design/encryption.html#comment-a035b1698e1253e7a5244721d73c71cf">comment 6</a>--</div>--<div class="inlinecontent">-<p>Hans,</p>--<p>You are misunderstanding how git-annex encryption works.  The "untrusted host" and the "local machine" are not the same machine.  git-annex only transfers pre-encrypted files to the "untrusted host".</p>--<p>You should setup a git-annex encrypted remote and watch how it works so you can see for yourself that it is not insecure.</p>--<p>Your solution does not provide better security, it accomplishes the same thing as git-annex in a more complicated way.  In addition, since you are mounting the image from the client your solution will not work with multiple clients.</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">Tue Aug 14 10:10:40 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-802a6776b0b661fc53c68a3c489f09d6">----<div class="comment-subject">--<a href="/design/encryption.html#comment-802a6776b0b661fc53c68a3c489f09d6">comment 7</a>--</div>--<div class="inlinecontent">-<p>Justin,</p>--<p>thanks for clearing that up. It's great that git-annex has implemented mechanisms to work securely on untrusted hosts. My solution is thus only interesting for files that are impractical to manage with git-annex (e.g. data for/from applications that need rw-access to a large number of files). And, possibly, for providers that do not provide rsync.</p>--<p>Your remark that my solution does not work with more than one client, is not entirely accurate. No more than one client can access the repository at any given time, but as long as access is not simultaneous, any number of clients can access the repository. Still, your point is taken, it's a limitation I should mention.</p>--<p>It would be interesting to compare the performance of individually encrypted files to encrypted image-file. My intuition says that encrypted image-file should be faster, but that's just a guess.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo">Hans</a>-</span>---&mdash; <span class="date">Wed Aug 15 15:16:10 2012</span>-</div>----<div style="clear: both"></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 Apr  6 16:34:38 2013</span>-<!-- Created <span class="date">Sat Apr  6 16:34:38 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/direct_mode.html
@@ -1,355 +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>direct mode</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">-direct mode--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Normally, git-annex repositories consist of symlinks that are checked into-git, and in turn point at the content of large files that is stored in-<code>.git/annex/objects/</code>. Direct mode gets rid of the symlinks.</p>--<p>The advantage of direct mode is that you can access files directly,-including modifying them. The disadvantage is that most regular git-commands cannot safely be used, and only a subset of git-annex commands-can be used.</p>--<p>Normally, git-annex repositories start off in indirect mode. With some-exceptions:</p>--<ul>-<li>Repositories created by the <a href="./assistant.html">assistant</a> use direct mode by default.</li>-<li>Repositories on FAT and other less than stellar filesystems-that don't support things like symlinks will be automatically put-into direct mode.</li>-</ul>---<h2>enabling (and disabling) direct mode</h2>--<p>Any repository can be converted to use direct mode at any time, and if you-decide not to use it, you can convert back to indirect mode just as easily.-Also, you can have one clone of a repository using direct mode, and another-using indirect mode; direct mode interoperates.</p>--<p>To start using direct mode:</p>--<pre><code>git annex direct-</code></pre>--<p>To stop using direct mode:</p>--<pre><code>git annex indirect-</code></pre>--<h2>safety of using direct mode</h2>--<p>With direct mode, you're operating without large swathes of git-annex's-carefully constructed safety net, which ensures that past versions of-files are preserved and can be accessed (until you dropunused them).-With direct mode, any file can be edited directly, or deleted at any time,-and there's no guarantee that the old version is backed up somewhere else.</p>--<p>So if you care about preserving the history of files, you're strongly-encouraged to tell git-annex that your direct mode repository cannot be-trusted to retain the content of a file. To do so:</p>--<pre><code>git annex untrust .-</code></pre>--<p>On the other hand, if you only care about the current versions of files,-and are using git-annex with direct mode to keep files synchronised between-computers, and manage your files, this should not be a concern for you.</p>--<h2>use a direct mode repository</h2>--<p>You can use most git-annex commands as usual in a direct mode repository.-A very few commands don't work in direct mode, and will refuse to do anything.</p>--<p>Direct mode also works well with the git-annex assistant.</p>--<p>You can use <code>git commit --staged</code>, or plain <code>git commit</code>.-But not <code>git commit -a</code>, or <code>git commit &lt;file&gt;</code> ..-that'd commit whole large files into git!</p>--<h2>what doesn't work in direct mode</h2>--<p><code>git annex status</code> shows incomplete information. A few other commands,-like <code>git annex unlock</code> don't make sense in direct mode and will refuse to-run.</p>--<p>As for git commands, you can probably use some git working tree-manipulation commands, like <code>git checkout</code> and <code>git revert</code> in useful-ways... But beware, these commands can replace files that are present in-your repository with broken symlinks. If that file was the only copy you-had of something, it'll be lost.</p>--<p>This is one more reason it's wise to make git-annex untrust your direct mode-repositories. Still, you can lose data using these sort of git commands, so-use extreme caution.</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-e2f32651b81efbf28c21647fbe2ec5f9">----<div class="comment-subject">--<a href="/direct_mode.html#comment-e2f32651b81efbf28c21647fbe2ec5f9">comment 1</a>--</div>--<div class="inlinecontent">-So, just which git commands <em>are</em> safe?  It seems like I'm going to have to use direct mode, so it'd be nice to know just what I'm allowed to do, and what the workflow should be.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8">Michael</a>-</span>---&mdash; <span class="date">Mon Feb 18 19:24:11 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-57bb6513674551d20b8d382c1cf991c7">----<div class="comment-subject">--<a href="/direct_mode.html#comment-57bb6513674551d20b8d382c1cf991c7">safe and unsafe commands</a>--</div>--<div class="inlinecontent">-<p>All git commands that do not change files in the work tee (and do not stage files from the work tree), are safe. I don't have a complete list; it includes <code>git log</code>, <code>git show</code>, <code>git diff</code>, <code>git commit</code> (but not -a or with a file as a parameter), <code>git branch</code>, <code>git fetch</code>, <code>git push</code>, <code>git grep</code>, <code>git status</code>, <code>git tag</code>, <code>git mv</code> (this one is somewhat surprising, but I've tested it and it's ok)</p>--<p>git commands that change files in the work tree will replace your data with dangling symlinks. This includes things like <code>git revert</code>, <code>git checkout</code>, <code>git merge</code>, <code>git pull</code>, <code>git reset</code></p>--<p>git commands that stage files from the work tree will commit your data to git directly. This includes <code>git add</code>, <code>git commit -a</code>, and <code>git commit file</code></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Mon Feb 18 22:55:13 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-6f97f966cdafd65509aa68ab6096dd69">----<div class="comment-subject">--<a href="/direct_mode.html#comment-6f97f966cdafd65509aa68ab6096dd69">comment 3</a>--</div>--<div class="inlinecontent">-<p>So, if I edit a "content file" (change a music file's metadata, say), what's the workflow to record that fact and then synchronise it to other repositories?</p>--<p>I can't do a <code>git add</code>, so I don't understand what has to happen as a first step.  (Thanks for your quick reply above, BTW.)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8">Michael</a>-</span>---&mdash; <span class="date">Mon Feb 18 23:03:14 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-7f6b16c9fca70ac26b57542a956fd968">----<div class="comment-subject">--<a href="/direct_mode.html#comment-7f6b16c9fca70ac26b57542a956fd968">comment 4</a>--</div>--<div class="inlinecontent">-<pre>-git annex add $file-git commit -m changed-git annex sync-git annex copy $file --to otherrepo-</pre>----</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Mon Feb 18 23:05:35 2013</span>-</div>----<div style="clear: both"></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="./internals.html">internals</a>--<a href="./links/key_concepts.html">links/key concepts</a>--<a href="./upgrades.html">upgrades</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Feb 15 18:30:55 2013</span>-<!-- Created <span class="date">Fri Feb 15 18:30:55 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/download.html
@@ -1,246 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>Releases of git-annex are uploaded-<a href="http://hackage.haskell.org/package/git-annex">to hackage</a>. Get your-tarballs there, if you need them.</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>--<h2>git branches</h2>--<p>The git repository has some branches:</p>--<ul>-<li><code>ghc7.0</code> supports versions of ghc older than 7.4, which-had a major change to filename encoding.</li>-<li><code>old-monad-control</code> is for systems that don't have a newer monad-control-library.</li>-<li><code>no-ifelse</code> avoids using the IFelse library-(merge it into master if you need it)</li>-<li><code>no-bloom</code> avoids using bloom filters. (merge it into master if you need it)</li>-<li><code>no-s3</code> avoids using the S3 library (merge it into master if you need it)</li>-<li><code>debian-stable</code> contains the latest backport of git-annex to Debian-stable.</li>-<li><code>tweak-fetch</code> adds support for the git tweak-fetch hook, which has-been proposed and implemented but not yet accepted into git.</li>-<li><code>setup</code> contains configuration for this website</li>-<li><code>pristine-tar</code> contains <a href="http://kitenet.net/~joey/code/pristine-tar">pristine-tar</a>-data to create tarballs of any past git-annex release.</li>-</ul>---<hr />--<p>Developing git-annex? Patches are very welcome.-You should read <a href="./coding_style.html">coding style</a>.</p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-48efe492343c27a89c035c03da473d38">----<div class="comment-subject">--<a href="/download.html#comment-48efe492343c27a89c035c03da473d38">git clone git://git-annex.branchable.com/ gives an error</a>--</div>--<div class="inlinecontent">-<p>Thought you would want to know</p>--<p>error: unable to create file doc/forum/<strong>91</strong>Installation<strong>93</strong><em>base-3.0.3.2_requires_syb</em><strong>61</strong><strong>61</strong>0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb<em><strong>62</strong><strong>61</strong>0.3.3.mdwn (File name too long)-fatal: cannot create directory at 'doc/forum/<strong>91</strong>Installation<strong>93</strong></em>base-3.0.3.2_requires_syb<em><strong>61</strong><strong>61</strong>0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb</em><strong>62</strong><strong>61</strong>0.3.3': File name too long</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawm3uJkdiJJejvqix9dULvw_Ma7DCtB-6zA">Ian</a>-</span>---&mdash; <span class="date">Mon Aug 13 16:57:34 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-2e374c18fcc0aae22c79b090509965c7">----<div class="comment-subject">--<a href="/download.html#comment-2e374c18fcc0aae22c79b090509965c7">comment 2</a>--</div>--<div class="inlinecontent">-Ok, I've renamed that long-ish filename.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Aug 16 19:28:30 2012</span>-</div>----<div style="clear: both"></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="./install.html">install</a>--<a href="./install/cabal.html">install/cabal</a>--<a href="./install/fromscratch.html">install/fromscratch</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Oct 28 21:30:34 2012</span>-<!-- Created <span class="date">Sun Oct 28 21:30:34 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/encryption.html
@@ -1,240 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 default MAC algorithm to be applied on the filenames is HMACSHA1. A-stronger one, for instance HMACSHA512, one can be chosen upon creation-of the special remote with the option <code>mac=HMACSHA512</code>. The available-MAC algorithms are HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384, and-HMACSHA512. Note that it is not possible to change algorithm for a-non-empty remote.</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>--<h2>shared cipher mode</h2>--<p>Alternatively, you can configure git-annex to use a shared cipher to-encrypt data stored in a remote. This shared cipher is stored,-<strong>unencrypted</strong> in the git repository. So it's shared amoung every-clone of the git repository. The advantage is you don't need to set up gpg-keys. The disadvantage is that this is <strong>insecure</strong> unless you-trust every clone of the git repository with access to the encrypted data-stored in the special remote.</p>--<p>To use shared encryption, specify "encryption=shared" when first setting-up a special remote.</p>--</div>----<div id="comments">-<div  class="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 style="clear: both"></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/encryption.html">design/encryption</a>--<a href="./internals.html">internals</a>--<a href="./links/the_details.html">links/the details</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/glacier.html">special remotes/glacier</a>--<a href="./special_remotes/hook.html">special remotes/hook</a>--<a href="./special_remotes/rsync.html">special remotes/rsync</a>--<a href="./special_remotes/webdav.html">special remotes/webdav</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Mar 29 18:30:34 2013</span>-<!-- Created <span class="date">Fri Mar 29 18:30:34 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/favicon.ico

binary file changed (405 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/feeds.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>-<li>[[!aggregate  expirecount=25 name="twitter" feedurl="http://search.twitter.com/search.atom?q=git-annex" url="http://twitter.com/"]]</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/footer/column_a.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>column a</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">footer</a>/ --</span>-<span class="title">-column a--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h3>Recent <a href="../news.html">news</a></h3>-----<h3><span class="createlink">Dev blog</span></h3>-------</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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/footer/column_b.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>column b</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">footer</a>/ --</span>-<span class="title">-column b--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h3>Recent <a href="../videos.html">videos</a></h3>--<div class="archivepage">--<a href="../videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>--</span>-</div>-<div class="archivepage">--<a href="../videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>--</span>-</div>----<h3>Recent <span class="createlink">forum posts</span></h3>-------</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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/future_proofing.html
@@ -1,165 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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? Whatever you choose to use, git-annex can put files on it.-Even if you choose (ugh) FAT.</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="./tips/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="./special_remotes/S3/comment_8_0fa68d584ee7f6b5c9058fba7e911a11.html">special remotes/S3/comment 8 0fa68d584ee7f6b5c9058fba7e911a11</a>--<a href="./use_case/Bob.html">use case/Bob</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-annex-shell.html
@@ -1,248 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>--<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>--<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>-<li><p>transferinfo directory key</p>--<p>This is typically run at the same time as sendkey is sending a key-to the remote. Using it is optional, but is used to update-progress information for the transfer of the key.</p>--<p>It reads lines from standard input, each giving the number of bytes-that have been received so far.</p></li>-<li><p>commit directory</p>--<p>This commits any staged changes to the git-annex branch.-It also runs the annex-content hook.</p></li>-</ul>---<h1>OPTIONS</h1>--<p>Most options are the same as in git-annex. The ones specific-to git-annex-shell are:</p>--<ul>-<li><p>--uuid=UUID</p>--<p>git-annex uses this to specify the UUID of the repository it was expecting-git-annex-shell to access, as a sanity check.</p></li>-<li><p>-- fields=val fields=val.. --</p>--<p>Additional fields may be specified this way, to retain compatability with-past versions of git-annex-shell (that ignore these, but would choke-on new dashed options).</p>--<p>Currently used fields include remoteuuid=, associatedfile=,-and direct=</p></li>-</ul>---<h1>HOOK</h1>--<p>After content is received or dropped from the repository by git-annex-shell,-it runs a hook, <code>.git/hooks/annex-content</code> (or <code>hooks/annex-content</code> on a bare-repository). The hook is not currently passed any information about what-changed.</p>--<h1>ENVIRONMENT</h1>--<ul>-<li><p>GIT_ANNEX_SHELL_READONLY</p>--<p>If set, disallows any command that could modify the repository.</p></li>-<li><p>GIT_ANNEX_SHELL_LIMITED</p>--<p>If set, disallows running git-shell to handle unknown commands.</p></li>-<li><p>GIT_ANNEX_SHELL_DIRECTORY</p>--<p>If set, git-annex-shell will refuse to run commands that do not operate-on the specified directory.</p></li>-</ul>---<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">&#x6a;&#111;&#101;&#x79;&#64;&#x6b;&#x69;&#x74;&#x65;&#110;&#101;&#x74;&#46;&#110;&#x65;&#x74;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: Automatically converted into a man page by mdwn2man. 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="./design/assistant/pairing.html">design/assistant/pairing</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">Fri Jan 11 16:32:08 2013</span>-<!-- Created <span class="date">Fri Jan 11 16:32:08 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-annex.html
@@ -1,1144 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 annex add iso-add iso/Debian_5.0.iso ok--# git annex drop iso/Debian_4.0.iso-drop iso/Debian_4.0.iso ok--# git annex move iso --to=usbdrive-move iso/Debian_5.0.iso (moving to usbdrive...) ok-</code></pre>--<h1>COMMONLY USED 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. When no path is specified, most git-annex commands-default to acting on all relevant files in the current directory (and-subdirectories).</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.-(Use --force to add ignored files.) Dotfiles are skipped unless explicitly-listed.</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>--<p>Normally git-annex will choose which repository to copy the content from,-but you can override this using the --from option.</p></li>-<li><p>drop [path ...]</p>--<p>Drops the content of annexed files from this repository.</p>--<p>git-annex will refuse to drop content if it cannot verify it is-safe to do so. This can be overridden with the --force switch.</p>--<p>To drop content from a remote, specify --from.</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>sync [remote ...]</p>--<p>Use this command when you want to synchronize the local repository with-one or more of its remotes. You can specifiy the remotes to sync with;-the default is to sync with all remotes. Or specify --fast to sync with-the remotes with the lowest annex-cost value.</p>--<p>The sync process involves first committing all local changes (git commit -a),-then fetching and merging the <code>synced/master</code> and the <code>git-annex</code> branch-from the remote repositories and finally pushing the changes back to-those branches on the remote repositories. You can use standard git-commands to do each of those steps by hand, or if you don't want to-worry about the details, you can use sync.</p>--<p>Merge conflicts are automatically resolved by sync. When two conflicting-versions of a file have been committed, both will be added to the tree,-under different filenames. For example, file "foo" would be replaced-with "foo.somekey" and "foo.otherkey".</p>--<p>Note that syncing with a remote will not update the remote's working-tree with changes made to the local repository. However, those changes-are pushed to the remote, so can be merged into its working tree-by running "git annex sync" on the remote.</p>--<p>Note that sync does not transfer any file contents from or to the remote-repositories.</p></li>-<li><p>addurl [url ...]</p>--<p>Downloads each url to its own file, which is added to the annex.</p>--<p>To avoid immediately downloading the url, specify --fast.</p>--<p>To avoid storing the size of the url's content, and accept whatever-is there at a future point, specify --relaxed. (Implies --fast.)</p>--<p>Normally the filename is based on the full url, so will look like-"www.example.com_dir_subdir_bigfile". For a shorter filename, specify---pathdepth=N. For example, --pathdepth=1 will use "dir/subdir/bigfile",-while --pathdepth=3 will use "bigfile". It can also be negative;---pathdepth=-2 will use the last two parts of the url.</p>--<p>Or, to directly specify what file the url is added to, specify --file.-This changes the behavior; now all the specified urls are recorded as-alternate locations from which the file can be downloaded. In this mode,-addurl can be used both to add new files, or to add urls to existing files.</p></li>-<li><p>import [path ...]</p>--<p>Moves files from somewhere outside the git working copy, and adds them to-the annex. Individual files to import can be specified.-If a directory is specified, all files in it are imported, and any-subdirectory structure inside it is preserved.</p>--<p>  git annex import /media/camera/DCIM/</p></li>-<li><p>watch</p>--<p>Watches for changes to files in the current directory and its subdirectories,-and takes care of automatically adding new files, as well as dealing with-deleted, copied, and moved files. With this running as a daemon in the-background, you no longer need to manually run git commands when-manipulating your files.</p>--<p>To not daemonize, run with --foreground ; to stop a running daemon,-run with --stop</p></li>-<li><p>assistant</p>--<p>Like watch, but also automatically syncs changes to other remotes.-Typically started at boot, or when you log in.</p>--<p>With the --autostart option, the assistant is started in any repositories-it has created. These are listed in <code>~/.config/git-annex/autostart</code></p></li>-<li><p>webapp</p>--<p>Opens a web app, that allows easy setup of a git-annex repository,-and control of the git-annex assistant.</p>--<p>By default, the webapp can only be accessed from localhost, and running-it opens a browser window.</p>--<p>With the --listen=address[:port] option, the webapp can be made to listen-for connections on the specified address. This disables running a-local web browser, and outputs the url you can use to open the webapp-from a remote computer.-Note that this does not yet use HTTPS for security, so use with caution!</p></li>-</ul>---<h1>REPOSITORY SETUP COMMANDS</h1>--<ul>-<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. If you don't provide one,-one will be generated.</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-"here".</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>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 "here".</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>dead [repository ...]</p>--<p>Indicates that the repository has been irretrevably lost.-(To undo, use semitrust.)</p></li>-<li><p>group repository groupname</p>--<p>Adds a repository to a group, such as "archival", "enduser", or "transfer".-The groupname must be a single word.</p></li>-<li><p>ungroup repository groupname</p>--<p>Removes a repository from a group.</p></li>-<li><p>vicfg</p>--<p>Opens EDITOR on a temp file containing most of the above configuration-settings, and when it exits, stores any changes made back to the git-annex-branch.</p></li>-<li><p>direct</p>--<p>Switches a repository to use direct mode, where rather than symlinks to-files, the files are directly present in the repository.</p>--<p>As part of the switch to direct mode, any changed files will be committed.</p>--<p>Note that git commands that operate on the work tree are often unsafe to-use in direct mode repositories, and can result in data loss or other-bad behavior.</p></li>-<li><p>indirect</p>--<p>Switches a repository back from direct mode to the default, indirect mode.</p>--<p>As part of the switch from direct mode, any changed files will be committed.</p></li>-</ul>---<h1>REPOSITORY MAINTENANCE COMMANDS</h1>--<ul>-<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 check a remote to fsck, specify --from.</p>--<p>To avoid expensive checksum calculations (and expensive transfers when-fscking a remote), specify --fast.</p>--<p>To start a new incremental fsck, specify --incremental. Then-the next time you fsck, you can specify --more to skip over-files that have already been checked, and continue where it left off.</p>--<p>The --incremental-schedule option makes a new incremental fsck be-started a configurable time after the last incremental fsck was started.-Once the current incremental fsck has completely finished, it causes-a new one to start.</p>--<p>Maybe you'd like to run a fsck for 5 hours at night, picking up each-night where it left off. You'd like this to continue until all files-have been fscked. And once it's done, you'd like a new fsck pass to start,-but no more often than once a month. Then put this in a nightly cron job:</p>--<p>  git annex fsck --incremental-schedule 30d --time-limit 5h</p></li>-<li><p>unused</p>--<p>Checks the annex for data that does not correspond to any files present-in any tag or 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 for annexed data on a remote, specify --from.</p></li>-<li><p>dropunused [number|range ...]</p>--<p>Drops the data corresponding to the numbers, as listed by the last-<code>git annex unused</code></p>--<p>You can also specify ranges of numbers, such as "1-1000".</p>--<p>To drop the data from a remote, specify --from.</p></li>-<li><p>addunused [number|range ...]</p>--<p>Adds back files for the content corresponding to the numbers or ranges,-as listed by the last <code>git annex unused</code>. The files will have names-starting with "unused."</p></li>-<li><p>merge</p>--<p>Automatically merges remote tracking branches */git-annex 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>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,-but is done automatically when committing a change with git too.</p></li>-<li><p>upgrade</p>--<p>Upgrades the repository to current layout.</p></li>-</ul>---<h1>QUERY COMMANDS</h1>--<ul>-<li><p>version</p>--<p>Shows the version of git-annex, as well as repository version information.</p></li>-<li><p>find [path ...]</p>--<p>Outputs a list of annexed files in the specified path. With no path,-finds files in the current directory and its subdirectories.</p>--<p>By default, only lists annexed files whose content is currently present.-This can be changed by specifying file matching options. To list all-annexed files, present or not, specify --include "*". To list all-annexed files whose content is not present, specify --not --in=here</p>--<p>To output filenames terminated with nulls, for use with xargs -0,-specify --print0. Or, a custom output formatting can be specified using---format. The default output format is the same as --format='${file}\n'</p>--<p>These variables are available for use in formats: file, key, backend,-bytesize, humansize</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>log [path ...]</p>--<p>Displays the location log for the specified file or files,-showing each repository they were added to ("+") and removed from ("-").</p>--<p>To limit how far back to seach for location log changes, the options---since, --after, --until, --before, and --max-count can be specified.-They are passed through to git log. For example, --since "1 month ago"</p>--<p>To generate output suitable for the gource visualisation program,-specify --gource.</p></li>-<li><p>status [directory ...]</p>--<p>Displays some statistics and other information, including how much data-is in the annex and a list of all known repositories.</p>--<p>To only show the data that can be gathered quickly, use --fast.</p>--<p>When a directory is specified, shows only an abbreviated status-display for that directory. In this mode, all of the file matching-options can be used to filter the files that will be included in-the status.</p>--<p>For example, suppose you want to run "git annex get .", but-would first like to see how much disk space that will use.-Then run:</p>--<p>  git annex status . --not --in here</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). (To disable-this display, specify --fast)</p>--<p>This command 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>-</ul>---<h1>UTILITY COMMANDS</h1>--<ul>-<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>reinject src dest</p>--<p>Moves the src file into the annex as the content of the dest file.-This can be useful if you have obtained the content of a file from-elsewhere and want to put it in the local annex.</p>--<p>Automatically runs fsck on dest to check that the expected content was-provided.</p>--<p>Example:</p>--<p>  git annex reinject /tmp/foo.iso foo.iso</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>-</ul>---<h1>PLUMBING COMMANDS</h1>--<ul>-<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>fromkey key 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>transferkeys</p>--<p>This plumbing-level command is used by the assistant to transfer data.</p></li>-<li><p>rekey [file key ...]</p>--<p>This plumbing-level command is similar to migrate, but you specify-both the file, and the new key to use for it.</p>--<p>With --force, even files whose content is not currently available will-be rekeyed. Use with caution.</p></li>-<li><p>test</p>--<p>This runs git-annex's built-in test suite.</p></li>-<li><p>xmppgit</p>--<p>This command is used internally to perform git pulls over XMPP.</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>--auto</p>--<p>Enables automatic mode. Commands that get, drop, or move file contents-will only do so when needed to help satisfy the setting of annex.numcopies,-and preferred content configuration.</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. Note that json output is only usable with some git-annex commands,-like status and find.</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>--numcopies=n</p>--<p>Overrides the <code>annex.numcopies</code> setting, forcing git-annex to ensure the-specified number of copies exist.</p>--<p>Note that setting numcopies to 0 is very unsafe.</p></li>-<li><p>--time-limit=time</p>--<p>Limits how long a git-annex command runs. The time can be something-like "5h", or "30m" or even "45s" or "10d".</p>--<p>Note that git-annex may continue running a little past the specified-time limit, in order to finish processing a file.</p>--<p>Also, note that if the time limit prevents git-annex from doing all it-was asked to, it will exit with a special code, 101.</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>--trust-glacier-inventory</p>--<p>Amazon Glacier inventories take hours to retrieve, and may not represent-the current state of a repository. So git-annex does not trust that-files that the inventory claims are in Glacier are really there.-This switch can be used to allow it to trust the inventory.</p>--<p>Be careful using this, especially if you or someone else might have recently-removed a file from Glacier. If you try to drop the only other copy of the-file, and this switch is enabled, you could lose data!</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>--format=value</p>--<p>Specifies a custom output format. The value is a format string,-in which '${var}' is expanded to the value of a variable. To right-justify-a variable with whitespace, use '${var;width}' ; to left-justify-a variable, use '${var;-width}'; to escape unusual characters in a variable,-use '${escaped_var}'</p>--<p>Also, '\n' is a newline, '\000' is a NULL, etc.</p></li>-<li><p>-c name=value</p>--<p>Used to override git configuration settings. May be specified multiple times.</p></li>-</ul>---<h1>FILE MATCHING OPTIONS</h1>--<p>These options can all be specified multiple times, and can be combined to-limit which files git-annex acts on.</p>--<p>Arbitrarily complicated expressions can be built using these options.-For example:</p>--<pre><code>--exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)-</code></pre>--<p>The above example prevents git-annex from working on mp3 files whose-file contents are present at either of two repositories.</p>--<ul>-<li><p>--exclude=glob</p>--<p>Skips files matching the glob pattern. The glob is matched relative to-the current directory. For example:</p>--<p>  --exclude='<em>.mp3' --exclude='subdir/</em>'</p></li>-<li><p>--include=glob</p>--<p>Skips files not matching the glob pattern.  (Same as --not --exclude.)-For example, to include only mp3 and ogg files:</p>--<p>  --include='<em>.mp3' --or --include='</em>.ogg'</p></li>-<li><p>--in=repository</p>--<p>Matches only files that git-annex believes have their contents present-in a repository. Note that it does not check the repository to verify-that it still has the content.</p>--<p>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=here</p></li>-<li><p>--copies=number</p>--<p>Matches only files that git-annex believes to have the specified number-of copies, or more. Note that it does not check remotes to verify that-the copies still exist.</p></li>-<li><p>--copies=trustlevel:number</p>--<p>Matches only files that git-annex believes have the specified number of-copies, on remotes with the specified trust level. For example,-"--copies=trusted:2"</p>--<p>To match any trust level at or higher than a given level, use-'trustlevel+'. For example, "--copies=semitrusted+:2"</p></li>-<li><p>--copies=groupname:number</p>--<p>Matches only files that git-annex believes have the specified number of-copies, on remotes in the specified group. For example,-"--copies=archive:2"</p></li>-<li><p>--inbackend=name</p>--<p>Matches only files whose content is stored using the specified key-value-backend.</p></li>-<li><p>--inallgroup=groupname</p>--<p>Matches only files that git-annex believes are present in all repositories-in the specified group.</p></li>-<li><p>--smallerthan=size</p></li>-<li><p>--largerthan=size</p>--<p>Matches only files whose content is smaller than, or larger than the-specified size.</p>--<p>The size can be specified with any commonly used units, for example,-"0.5 gb" or "100 KiloBytes"</p></li>-<li><p>--not</p>--<p>Inverts the next file matching option. For example, to only act on-files with less than 3 copies, use --not --copies=3</p></li>-<li><p>--and</p>--<p>Requires that both the previous and the next file matching option matches.-The default.</p></li>-<li><p>--or</p>--<p>Requires that either the previous, or the next file matching option matches.</p></li>-<li><p>-(</p>--<p>Opens a group of file matching options.</p></li>-<li><p>-)</p>--<p>Closes a group of file matching options.</p></li>-</ul>---<h1>PREFERRED CONTENT</h1>--<p>Each repository has a preferred content setting, which specifies content-that the repository wants to have present. These settings can be configured-using <code>git annex vicfg</code>. They are used by the <code>--auto</code> option, and-by the git-annex assistant.</p>--<p>The preferred content settings are similar, but not identical to-the file matching options specified above, just without the dashes.-For example:</p>--<pre><code>exclude=archive/* and (include=*.mp3 or smallerthan=1mb)-</code></pre>--<p>The main differences are that <code>exclude=</code> and <code>include=</code> always-match relative to the top of the git repository, and that there is-no equivilant to --in.</p>--<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>--<p>Note that setting numcopies to 0 is very unsafe.</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>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.largefiles</code></p>--<p>Allows configuring which files <code>git annex add</code> and the assistant consider-to be large enough to need to be added to the annex. By default,-all files are added to the annex.</p>--<p>The value is a preferred content expression. See PREFERRED CONTENT-for details.</p>--<p>Example:</p>--<p>  annex.largefiles = largerthan=100kb and not (include=<em>.c or include=</em>.h)</p></li>-<li><p><code>annex.queuesize</code></p>--<p>git-annex builds a queue of git commands, in order to combine similar-commands for speed. By default the size of the queue is limited to-10240 commands; this can be used to change the size. If you have plenty-of memory and are working with very large numbers of files, increasing-the queue size can speed it up.</p></li>-<li><p><code>annex.bloomcapacity</code></p>--<p>The <code>git annex unused</code> command uses a bloom filter to determine-what data is no longer used. The default bloom filter is sized to handle-up to 500000 keys. If your repository is larger than that,-you can adjust this to avoid <code>git annex unused</code> not noticing some unused-data files. Increasing this will make <code>git-annex unused</code> consume more memory;-run <code>git annex status</code> for memory usage numbers.</p></li>-<li><p><code>annex.bloomaccuracy</code></p>--<p>Adjusts the accuracy of the bloom filter used by-<code>git annex unused</code>. The default accuracy is 1000 ---1 unused file out of 1000 will be missed by <code>git annex unused</code>. Increasing-the accuracy will make <code>git annex unused</code> consume more memory;-run <code>git annex status</code> for memory usage numbers.</p></li>-<li><p><code>annex.sshcaching</code></p>--<p>By default, git-annex caches ssh connections-(if built using a new enough ssh). To disable this, set to <code>false</code>.</p></li>-<li><p><code>annex.alwayscommit</code></p>--<p>By default, git-annex automatically commits data to the git-annex branch-after each command is run. To disable these commits,-set to <code>false</code>. Then data will only be committed when-running <code>git annex merge</code> (or by automatic merges) or <code>git annex sync</code>.</p></li>-<li><p><code>annex.delayadd</code></p>--<p>Makes the watch and assistant commands delay for the specified number of-seconds before adding a newly created file to the annex. Normally this-is not needed, because they already wait for all writers of the file-to close it. On Mac OSX, when not using direct mode this defaults to-1 second, to work around a bad interaction with software there.</p></li>-<li><p><code>annex.autocommit</code></p>--<p>Set to false to prevent the git-annex assistant from automatically-committing changes to files in the repository.</p></li>-<li><p><code>annex.version</code></p>--<p>Automatically maintained, and used to automate upgrades between versions.</p></li>-<li><p><code>annex.direct</code></p>--<p>Set to true when the repository is in direct mode. Should not be set-manually; use the "git annex direct" and "git annex indirect" commands-instead.</p></li>-<li><p><code>annex.crippledfilesystem</code></p>--<p>Set to true if the repository is on a crippled filesystem, such as FAT,-which does not support symbolic links, or hard links, or unix permissions.-This is automatically probed by "git annex init".</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-start-command</code></p>--<p>A command to run when git-annex begins to use the remote. This can-be used to, for example, mount the directory containing the remote.</p>--<p>The command may be run repeatedly when multiple git-annex processes-are running concurrently.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-stop-command</code></p>--<p>A command to run when git-annex is done using the remote.</p>--<p>The command will only be run once <em>all</em> running git-annex processes-are finished using the remote.</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-sync</code></p>--<p>If set to <code>false</code>, prevents git-annex sync (and the git-annex assistant)-from syncing with this remote.</p></li>-<li><p><code>remote.&lt;name&gt;.annexUrl</code></p>--<p>Can be used to specify a different url than the regular <code>remote.&lt;name&gt;.url</code>-for git-annex to use when talking with the remote. Similar to the <code>pushUrl</code>-used by git-push.</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-trustlevel</code></p>--<p>Configures a local trust level for the remote. This overrides the value-configured by the trust and untrust commands. The value can be any of-"trusted", "semitrusted" or "untrusted".</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-rsync-transport</code></p>--<p>The remote shell to use to connect to the rsync remote. Possible-values are <code>ssh</code> (the default) and <code>rsh</code>, together with their-arguments, for instance <code>ssh -p 2222 -c blowfish</code>; Note that the-remote hostname should not appear there, see rsync(1) for details.-When the transport used is <code>ssh</code>, connections are automatically cached-unless <code>annex.sshcaching</code> is unset.</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 100Kbyte/s, set it to "--bwlimit 100k"-(There is no corresponding option for bup join.)</p></li>-<li><p><code>remote.&lt;name&gt;.annex-gnupg-options</code></p>--<p>Options to pass to GnuPG for symmetric encryption. For instance, to-use the AES cipher with a 256 bits key and disable compression, set it-to "--cipher-algo AES256 --compress-algo none". (These options take-precedence over the default GnuPG configuration, which is otherwise-used.)</p></li>-<li><p><code>annex.ssh-options</code>, <code>annex.rsync-options</code>, <code>annex.bup-split-options</code>,-<code>annex.gnupg-options</code></p>--<p>Default ssh, rsync, wget/curl, bup, and GnuPG options to use if a-remote does not have specific options.</p></li>-<li><p><code>annex.web-options</code></p>--<p>Options to use when using wget or curl to download a file from the web.-(wget is always used in preference to curl if available.)-For example, to force ipv4 only, set it to "-4"</p></li>-<li><p><code>annex.http-headers</code></p>--<p>HTTP headers to send when downloading from the web. Multiple lines of-this option can be set, one per header.</p></li>-<li><p><code>annex.http-headers-command</code></p>--<p>If set, the command is run and each line of its output is used as a HTTP-header. This overrides annex.http-headers.</p></li>-<li><p><code>annex.web-download-command</code></p>--<p>Use to specify a command to run to download a file from the web.-(The default is to use wget or curl.)</p>--<p>In the command line, %url is replaced with the url to download,-and %file is replaced with the file that it should be saved to.-Note that both these values will automatically be quoted, since-the command is run in a shell.</p></li>-<li><p><code>remote.&lt;name&gt;.rsyncurl</code></p>--<p>Used by rsync special remotes, this configures-the location of the rsync repository to use. Normally this is automatically-set up by <code>git annex initremote</code>, but you can change it if needed.</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 automatically-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 automatically 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 automatically set up by <code>git annex initremote</code>.</p></li>-<li><p><code>remote.&lt;name&gt;.glacier</code></p>--<p>Used to identify Amazon Glacier special remotes.-Normally this is automatically set up by <code>git annex initremote</code>.</p></li>-<li><p><code>remote.&lt;name&gt;.webdav</code></p>--<p>Used to identify webdav special remotes.-Normally this is automatically set up by <code>git annex initremote</code>.</p></li>-<li><p><code>remote.&lt;name&gt;.annex-xmppaddress</code></p>--<p>Used to identify the XMPP address of a Jabber buddy.-Normally this is set up by the git-annex assistant when pairing over XMPP.</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 SHA256E backend for ogg files:</p>--<pre><code>* annex.backend=WORM-*.ogg annex.backend=SHA256E-</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. This overrides-any value set using <code>annex.numcopies</code> in <code>.git/config</code>.-For example, this makes two copies be needed for wav files:</p>--<pre><code>*.wav annex.numcopies=2-</code></pre>--<p>Note that setting numcopies to 0 is very unsafe.</p>--<h1>FILES</h1>--<p>These files are used by git-annex:</p>--<p><code>.git/annex/objects/</code> in your git repository contains the annexed file-contents that are currently available. Annexed files in your git-repository symlink to that content.</p>--<p><code>.git/annex/</code> in your git repository contains other run-time information-used by git-annex.</p>--<p><code>~/.config/git-annex/autostart</code> is a list of git repositories-to start the git-annex assistant in.</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">&#106;&#x6f;&#101;&#121;&#x40;&#x6b;&#x69;&#x74;&#101;&#x6e;&#x65;&#x74;&#46;&#110;&#101;&#x74;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: Automatically converted into a man page by mdwn2man. 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="./git-annex-shell.html">git-annex-shell</a>--<a href="./how_it_works.html">how it works</a>--<a href="./links/key_concepts.html">links/key concepts</a>--<a href="./preferred_content.html">preferred content</a>--<a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">tips/Using Git-annex as a web browsing assistant</a>--<a href="./walkthrough/using_ssh_remotes.html">walkthrough/using ssh remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Apr 13 19:36:46 2013</span>-<!-- Created <span class="date">Sat Apr 13 19:36:46 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/git-union-merge.html
@@ -1,165 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>Note 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;&#111;&#x65;&#x79;&#64;&#x6b;&#105;&#116;&#101;&#x6e;&#x65;&#x74;&#x2e;&#110;&#x65;&#116;</a></p>--<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>--<p>Warning: Automatically converted into a man page by mdwn2man. 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="./internals.html">internals</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/how_it_works.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>how it works</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">-how it works--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This page gives a high-level view of git-annex. For a detailed-low-level view, see <a href="./git-annex.html">the man page</a> and <a href="./internals.html">internals</a>.</p>--<p>You do not need to read this page to get started with using git-annex. The-<a href="./walkthrough.html">walkthrough</a> provides step-by-step instructions.</p>--<p>Still reading? Ok. Git's man page calls it "a stupid content-tracker". With git-annex, git is instead "a stupid filename and metadata"-tracker. The contents of large files are not stored in git, only the-names of the files and some other metadata remain there.</p>--<p>The contents of the files are kept by git-annex in a distributed key/value-store consisting of every clone of a given git repository. That's a fancy-way to say that git-annex stores the actual file content somewhere under-<code>.git/annex/</code>. (See <a href="./internals.html">internals</a> for details.)</p>--<p>That was the values; what about the keys? Well, a key is calculated for a-given file when it's first added into git-annex. Normally this uses a hash-of its contents, but various <a href="./backends.html">backends</a> can produce different sorts of-keys. The file that gets checked into git is just a symlink to the key-under <code>.git/annex/</code>. If the content of a file is modified, that produces-a different key (and the symlink is changed).</p>--<p>A file's content can be <a href="./transferring_data.html">transferred</a> from one-repository to another by git-annex. Which repositories contain a given-value is tracked by git-annex (see <a href="./location_tracking.html">location tracking</a>). It stores this-tracking information in a separate branch, named "git-annex". All you ever-do with the "git-annex" branch is push/pull it around between repositories,-to <a href="./sync.html">sync</a> up git-annex's view of the world.</p>--<p>That's really all there is to it. Oh, there are <a href="./special_remotes.html">special remotes</a> that-let values be stored other places than git repositories (anything from-Amazon S3 to a USB key), and there's a pile of commands listed in-<a href="./git-annex.html">the man page</a> to handle moving the values around and managing-them. But if you grok the description above, you can see through all that.-It's really just symlinks, keys, values, and a git-annex branch to store-additional metadata.</p>--<hr />--<p>Next: <a href="./install.html">install</a> or <a href="./walkthrough.html">walkthrough</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="./links/key_concepts.html">links/key concepts</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</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,306 +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><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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="./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, time, or disk space.</p>--<p><a href="./assistant.html"><img src="./assistant/thumbnail.png" width="216" height="28" class="img" align="right" /></a>-git-annex is designed for git users who love the command line.-For everyone else, the <a href="./assistant.html">git-annex assistant</a> turns-git-annex into an easy to use folder synchroniser.</p>--<p>To get a feel for git-annex, see the <a href="./walkthrough.html">walkthrough</a>.</p>--<table>-<tr>-<td width="33%" valign="top"><h3>key concepts</h3>--<ul>-<li><a href="./git-annex.html">git-annex man page</a></li>-<li><a href="./how_it_works.html">how it works</a></li>-<li><a href="./special_remotes.html">special remotes</a></li>-<li><a href="./sync.html">sync</a></li>-<li><a href="./direct_mode.html">direct mode</a></li>-</ul>-----</td>-<td width="33%" valign="top"><h3>the details</h3>--<ul>-<li><a href="./encryption.html">encryption</a></li>-<li><a href="./backends.html">key-value backends</a></li>-<li><a href="./bare_repositories.html">bare repositories</a></li>-<li><a href="./internals.html">internals</a></li>-<li><a href="./scalability.html">scalability</a></li>-<li><a href="./design.html">design</a></li>-</ul>-----</td>-<td width="33%" valign="top"><h3>other stuff</h3>--<ul>-<li><a href="./testimonials.html">testimonials</a></li>-<li><a href="./not.html">what git annex is not</a></li>-<li><a href="./related_software.html">related software</a></li>-<li><a href="./sitemap.html">sitemap</a></li>-</ul>-----</td>-</tr>-</table>-----<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>--<table>-<tr>-<td width="50%" valign="top"><h3>Recent <a href="./news.html">news</a></h3>--<h3><span class="createlink">Dev blog</span></h3>----</td>-<td valign="top"><h3>Recent <a href="./videos.html">videos</a></h3>--<div class="archivepage">--<a href="./videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>--</span>-</div>---<div class="archivepage">--<a href="./videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>--</span>-</div>---<h3>Recent <span class="createlink">forum posts</span></h3>----</td>-</tr>-</table>---<hr />--<p>git-annex is <a href="./license.html">Free Software</a></p>--<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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install.html
@@ -1,221 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><span class="selflink">install</span></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h2>Pick your OS</h2>--<table>-    <thead>-        <tr>-            <th>detailed instructions</th>-            <th> quick install</th>-        </tr>-    </thead>-    <tbody>-        <tr>-            <td><a href="./install/OSX.html">OSX</a></td>-            <td> <a href="http://downloads.kitenet.net/git-annex/OSX/current/">download git-annex.app</a></td>-        </tr>-        <tr>-            <td><a href="./install/Android.html">Android</a></td>-            <td> <a href="http://downloads.kitenet.net/git-annex/android/current/">download git-annex.apk</a> <strong>beta</strong></td>-        </tr>-        <tr>-            <td><a href="./install/Linux_standalone.html">Linux</a></td>-            <td> <a href="http://downloads.kitenet.net/git-annex/linux/current/">download prebuilt linux tarball</a></td>-        </tr>-        <tr>-            <td><a href="./install/Debian.html">Debian</a></td>-            <td> <code>apt-get install git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/Ubuntu.html">Ubuntu</a></td>-            <td> <code>apt-get install git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/Fedora.html">Fedora</a></td>-            <td> <code>yum install git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/FreeBSD.html">FreeBSD</a></td>-            <td> <code>pkg_add -r hs-git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/ArchLinux.html">ArchLinux</a></td>-            <td> <code>yaourt -Sy git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/NixOS.html">NixOS</a></td>-            <td> <code>nix-env -i git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/Gentoo.html">Gentoo</a></td>-            <td> <code>emerge git-annex</code></td>-        </tr>-        <tr>-            <td><a href="./install/ScientificLinux5.html">ScientificLinux5</a></td>-            <td> (and other RHEL5 clones like CentOS5)</td>-        </tr>-        <tr>-            <td><a href="./install/openSUSE.html">openSUSE</a></td>-            <td></td>-        </tr>-        <tr>-            <td>Windows</td>-            <td> <span class="createlink">sorry, Windows not supported yet</span></td>-        </tr>-    </tbody>-</table>---<h2>Using cabal</h2>--<p>As a haskell package, git-annex can be installed using cabal.-Start by installing the <a href="http://hackage.haskell.org/platform/">Haskell Platform</a>,-and then:</p>--<pre><code>cabal install git-annex --bindir=$HOME/bin-</code></pre>--<p>That installs the latest release. Alternatively, you can <a href="./download.html">download</a>-git-annex yourself and <a href="./install/cabal.html">manually build with cabal</a>.</p>--<h2>Installation from scratch</h2>--<p>This is not recommended, but if you really want to, see <a href="./install/fromscratch.html">fromscratch</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="./assistant.html">assistant</a>--<a href="./download.html">download</a>--<a href="./how_it_works.html">how it works</a>--<a href="./install/Linux_standalone.html">install/Linux standalone</a>--<a href="./install/Ubuntu.html">install/Ubuntu</a>--<a href="./install/openSUSE.html">install/openSUSE</a>--<a href="./sidebar.html">sidebar</a>--<a href="./tips/centralized_git_repository_tutorial.html">tips/centralized git repository tutorial</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Feb 27 18:33:00 2013</span>-<!-- Created <span class="date">Wed Feb 27 18:33:00 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Android.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>Android</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">-Android--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex can be used on Android, however you need to know your way around-the command line to install and use it. (Hope to get the webapp working-eventually.)</p>--<h2>Android app</h2>--<p>First, ensure your Android device is configured to allow installation of-non-Market apps. Go to Setup -&gt; Security, and enable "Unknown Sources".</p>--<p>Download the <a href="http://downloads.kitenet.net/git-annex/android/current/">git-annex.apk</a>-onto your Android device, and open it to install.</p>--<p>When you start the Git Annex app, it will dump you into terminal. From-here, you can run git-annex, as well as many standard git and unix commands-provided with the app. You can do everything in the <a href="../walkthrough.html">walkthrough</a> and-more.</p>--<h2>autobuilds</h2>--<p>A daily build is also available.</p>--<ul>-<li><a href="http://downloads.kitenet.net/git-annex/autobuild/android/git-annex.apk">download apk</a> (<a href="http://downloads.kitenet.net/git-annex/autobuild/android/">build logs</a>)</li>-</ul>---<h2>building it yourself</h2>--<p>git-annex can be built for Android, with <code>make android</code>. It's not an easy-process:</p>--<ul>-<li>First, install <a href="https://github.com/neurocyte/ghc-android">https://github.com/neurocyte/ghc-android</a>.</li>-<li>You also need to install git and all the utilities listed on <a href="./fromscratch.html">fromscratch</a>,-on the system doing the building.</li>-<li>Use ghc-android's cabal to install all necessary dependencies.-Some packages will fail to install on Android; patches to fix them-are in <code>standalone/android/haskell-patches/</code></li>-<li>You will need to have the Android SDK and NDK installed; see-<code>standalone/android/Makefile</code> to configure the paths to them. You'll also-need ant, and the JDK.</li>-<li>Then to build the full Android app bundle, use <code>make androidapp</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="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Mar  1 20:35:17 2013</span>-<!-- Created <span class="date">Fri Mar  1 20:35:17 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/ArchLinux.html
@@ -1,184 +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>ArchLinux</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">-ArchLinux--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>There is a non-official source package for git-annex in-<a href="https://aur.archlinux.org/packages.php?ID=44272">AUR</a>.</p>--<p>You can then build it yourself or use a wrapper for AUR-such as yaourt:</p>--<pre>-$ yaourt -Sy git-annex-</pre>---<hr />--<p>I'm told the AUR has some dependency problems currently.-If it doesn't work, you can just use cabal:</p>--<pre>-pacman -S git rsync curl wget gpg openssh cabal-install-cabal install git-annex --bindir=$HOME/bin-</pre>---</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-9fd360edd0a46658ae4d51e47586fd64">----<div class="comment-subject">--<a href="/install/ArchLinux.html#comment-9fd360edd0a46658ae4d51e47586fd64">Arch Linux</a>--</div>--<div class="inlinecontent">-For Arch Linux there should be the AUR package <a href="https://aur.archlinux.org/packages.php?ID=63503">git-annex-bin</a> mentioned, because it's easier to install (no haskell dependencies to be installed) and is based on the prebuild linux binary tarball.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlwYMdU0H7P7MMlD0v_BcczO-ZkYHY4zuY">Morris</a>-</span>---&mdash; <span class="date">Wed Oct 17 09:21:24 2012</span>-</div>----<div style="clear: both"></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="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Debian.html
@@ -1,349 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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  class="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 style="clear: both"></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 style="clear: both"></div>-</div>-<div class="comment" id="comment-63e478d409ce03723b81754f2a28fae9">----<div class="comment-subject">--<a href="/install/Debian.html#comment-63e478d409ce03723b81754f2a28fae9">ARM</a>--</div>--<div class="inlinecontent">-is there any package for Debian armhf? I'd love to install git-annex on my raspberry pi--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkstq9oH1vHXY_VP0nYO9Gg3eKnKerDGRI">Hadi</a>-</span>---&mdash; <span class="date">Tue Jul 31 11:13:06 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-92b79e57e84627f9a7e016eaab2549ce">----<div class="comment-subject">--<a href="/install/Debian.html#comment-92b79e57e84627f9a7e016eaab2549ce">comment 4</a>--</div>--<div class="inlinecontent">-<p>Yes, git-annex is available for every Debian architecture which supports Haskell, including all arm ports:</p>--<pre>git-annex | 3.20120629         | wheezy            | source, amd64, armel, armhf, i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc</pre>----</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue Jul 31 11:41:43 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-eeaed986d5abc6fdedc9824557466c7d">----<div class="comment-subject">--<a href="/install/Debian.html#comment-eeaed986d5abc6fdedc9824557466c7d">wheezy support</a>--</div>--<div class="inlinecontent">-<p>Hey Joey,</p>--<p>As a backer, I'd like to see a backport of git annex assistant to wheezy.</p>--<p>It is currently impossible to get this assistant in wheezy without compiling it with cabal.</p>--<p>It would be nice to see it in backports or something :)</p>--<p>Best,</p>--<p>Allard</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawk3eiQwrpDGJ3MJb9NWB84m4tzQ6XjVZnY">Allard</a>-</span>---&mdash; <span class="date">Fri Nov 23 16:47:58 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-7ed3a900cbf8a9a57afc4d871f354ee4">----<div class="comment-subject">--<a href="/install/Debian.html#comment-7ed3a900cbf8a9a57afc4d871f354ee4">comment 6</a>--</div>--<div class="inlinecontent">-The git-annex packages in unstable install on testing (wheezy).--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://svend.ciffer.net/">svend [ciffer.net]</a>-</span>---&mdash; <span class="date">Fri Nov 23 17:38:29 2012</span>-</div>----<div style="clear: both"></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="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Fedora.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex is available in recent versions of Fedora. Although it is-not currently a very recent version, it should work ok.-<a href="http://koji.fedoraproject.org/koji/packageinfo?packageID=14145">status</a></p>--<p>Should be as simple as: <code>yum install git-annex</code></p>--<hr />--<p>To install the latest version of git-annex on Fedora 18 and later, you can use <code>cabal</code>:</p>--<pre>-# Install dependencies-sudo yum install libxml2-devel gnutls-devel libgsasl-devel ghc cabal-install happy alex libidn-devel-# Update the cabal list-cabal update-# Install c2hs, required by dependencies of git-annex, but not automatically installed-cabal install --bindir=$HOME/bin c2hs-# Install git-annex-cabal install --bindir=$HOME/bin git-annex-</pre>---<hr />--<p>Older version? Here's an installation recipe for Fedora 14 through 15.</p>--<pre>-sudo yum install ghc cabal-install-git clone git://git-annex.branchable.com/ git-annex-cd git-annex-git checkout ghc7.0-cabal update-cabal install --only-dependencies-cabal configure-cabal build-cabal install --bindir=$HOME/bin-</pre>---<p>Note: You can't just use <code>cabal install git-annex</code>, because Fedora does-not yet ship ghc 7.4.</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">Tue Apr  2 11:31:40 2013</span>-<!-- Created <span class="date">Tue Apr  2 11:31:40 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/FreeBSD.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex is in FreeBSD ports in-<a href="http://www.freshports.org/devel/hs-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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Gentoo.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>Gentoo</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">-Gentoo--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Gentoo users can: <code>emerge git-annex</code></p>--<p>A possibly more up-to-date version is in the haskell portage overlay.</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/NixOS.html
@@ -1,135 +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>NixOS</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">-NixOS--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Users of the <a href="http://nixos.org/">Nix package manager</a> can install it by running:</p>--<pre><code>nix-env -i git-annex-</code></pre>--<p>The build status of the package within Nix can be seen on the <a href="http://hydra.nixos.org/job/nixpkgs/trunk/gitAndTools.gitAnnex">Hydra Build-Farm</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/OSX.html
@@ -1,851 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h2>git-annex.app</h2>--<p><a href="../assistant.html"><img src="../assistant/osx-app.png" width="87" height="98" class="img" align="right" /></a>-For easy installation, use the-<a href="http://downloads.kitenet.net/git-annex/OSX/current/">beta release of git-annex.app</a>.</p>--<p>Be sure to select the build matching your version of OSX.</p>--<p>If you want to run the <a href="../assistant.html">git-annex assistant</a>, just-install the app, look for the icon, and start it up.</p>--<p>To use git-annex at the command line, you can add-<code>git-annex.app/Contents/MacOS</code> to your <code>PATH</code></p>--<p>Alternatively, from the command line you can run-<code>git-annex.app/Contents/MacOS/runshell</code>, which makes your shell use all the-programs bundled inside the app, including not just git-annex, but git, and-several more. Handy if you don't otherwise have git installed.</p>--<p>This is still a work in progress. See <span class="createlink">OSX app issues</span> for problem-reports.</p>--<h2>autobuilds</h2>--<p><a href="http://www.sgenomics.org/~jtang/">Jimmy Tang</a> autobuilds-the app for OSX Lion.</p>--<ul>-<li><a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/ref/master/git-annex.dmg.bz2">autobuild of git-annex.app</a> (<a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/">build logs</a>)--<ul>-<li><a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/sha1/">past builds</a> -- directories are named from the commitid's</li>-</ul>-</li>-</ul>---<p><span class="createlink">Joey</span> autobuilds the app for Mountain Lion.</p>--<ul>-<li><a href="http://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-mountain-lion/git-annex.dmg.bz2">autobuild of git-annex.app</a> (<a href="http://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-mountain-lion/">build logs</a>)</li>-</ul>---<h2>using Brew</h2>--<pre>-brew update-brew install haskell-platform git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2-brew link libxml2-cabal update-PATH=$HOME/bin:$PATH-cabal install c2hs git-annex --bindir=$HOME/bin-</pre>---<h2>using MacPorts</h2>--<p>Install the Haskell 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 gnutls libxml2 libgsasl pkgconfig-sudo cabal update-PATH=$HOME/bin:$PATH-cabal install c2hs git-annex --bindir=$HOME/bin-</pre>---<h2>PATH setup</h2>--<p>Do not forget to add to your PATH variable your ~/bin folder. In your .bashrc, for example:</p>--<pre>-PATH=$HOME/bin:$PATH-</pre>---<p>See also:</p>--<ul>-<li><span class="createlink">OSX&#39;s haskell-platform statically links things</span></li>-<li><span class="createlink">OSX&#39;s default sshd behaviour has limited paths set</span></li>-</ul>---</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-22b74f9607c3d417cbe4424802a6d9a3">----<div class="comment-subject">--<a href="/install/OSX.html#comment-22b74f9607c3d417cbe4424802a6d9a3">comment 2</a>--</div>--<div class="inlinecontent">-<p>I've moved some outdated comments about installing on OSX to <a href="./OSX/old_comments.html">old comments</a>.-And also moved away some comments that helped build the instructions above.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue Jul 24 11:09:29 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c1481fba3e4b2bd17c35fd1782102c34">----<div class="comment-subject">--<a href="/install/OSX.html#comment-c1481fba3e4b2bd17c35fd1782102c34">comment 4</a>--</div>--<div class="inlinecontent">-For those that care, I've updated my autobuilder to the latest version of haskell-platform 2012.4.0.0 and it appears to be building correctly.--</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 Dec 10 13:00:43 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-15ba2e00a11b4ca978ad4f0c880be80a">----<div class="comment-subject">--<a href="/install/OSX.html#comment-15ba2e00a11b4ca978ad4f0c880be80a">comment 3</a>--</div>--<div class="inlinecontent">-<p>Installing via the MacPorts method. I ran into this error.</p>--<pre><code>"_locale_charset", referenced from: _localeEncoding in libHSbase-4.5.1.0.a(PrelIOUtils.o) -ld: symbol(s) not found for architecture x86_64-</code></pre>--<p>I was able to solve and get git-annex to build buy providing the --extra-lib-dirs parameter</p>--<pre><code>cabal install c2hs git-annex --bindir=$HOME/bin --extra-lib-dirs=/usr/lib-</code></pre>--<p>Cheers, <a href="http://woz.io">Daniel Wozniak</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU">Daniel</a>-</span>---&mdash; <span class="date">Tue Jan 15 11:22:43 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-aff6acab68610899c9ec3c4cfebe2061">----<div class="comment-subject">--<a href="/install/OSX.html#comment-aff6acab68610899c9ec3c4cfebe2061">Snow Leopard</a>--</div>--<div class="inlinecontent">-<p>Hi,</p>--<p>Are there plans to provide a git-annex.app that works on Snow Leopard?</p>--<p>Currently there are only installers for the Lions.</p>--<p>http://downloads.kitenet.net/git-annex/OSX/current/</p>--<p>Thanks :-)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>-</span>---&mdash; <span class="date">Fri Jan 18 11:51:48 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e2ab0dd1f11fd464b24aac36ab59637c">----<div class="comment-subject">--<a href="/install/OSX.html#comment-e2ab0dd1f11fd464b24aac36ab59637c">comment 5</a>--</div>--<div class="inlinecontent">-What we need to provide a Snow Leopard or other version build, is access to a box running that version of OSX, or someone with a box that doesn't mind compiling stuff and setting up the autobuilder (not very hard).--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Fri Jan 18 13:25:36 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f385a3c668e76ddd01fbf2382bd97cad">----<div class="comment-subject">--<a href="/install/OSX.html#comment-f385a3c668e76ddd01fbf2382bd97cad">Snow Leopard</a>--</div>--<div class="inlinecontent">-If the process is very automatic I might contribute. I mean, if you tell me, install this and that package and run this script once a week, I might be able to help. I have a MacBook from 2007 with Snow Leopard. I also have macports installed, but I'm not a programmer.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>-</span>---&mdash; <span class="date">Fri Jan 18 13:57:40 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5e980d5268356ef30a234e9063576d53">----<div class="comment-subject">--<a href="/install/OSX.html#comment-5e980d5268356ef30a234e9063576d53">comment 7</a>--</div>--<div class="inlinecontent">-If you can get it to build using the instructions for Brew (or MacPorts) on this page, it's easy to get from there to a distributable app.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Fri Jan 18 16:16:52 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-0c2872d1503ee0e726737393e477a3ed">----<div class="comment-subject">--<a href="/install/OSX.html#comment-0c2872d1503ee0e726737393e477a3ed">I couldn&#x27;t install it on Snow Leopard</a>--</div>--<div class="inlinecontent">-<p>Bad news, it looks like I'm not able to install git-annex to my machine: When I run</p>--<pre><code>sudo cabal install c2hs git-annex --bindir=$HOME/bin-</code></pre>--<p>I get the following error:</p>--<pre><code>cabal: Error: some packages failed to install:-DAV-0.3 failed during the building phase. The exception was:-ExitFailure 11-git-annex-3.20130114 depends on yesod-core-1.1.7.1 which failed to install.-yesod-1.1.7.2 depends on yesod-core-1.1.7.1 which failed to install.-yesod-auth-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.-yesod-core-1.1.7.1 failed during the building phase. The exception was:-ExitFailure 11-yesod-default-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.-yesod-form-1.2.0.2 depends on yesod-core-1.1.7.1 which failed to install.-yesod-json-1.1.2 depends on yesod-core-1.1.7.1 which failed to install.-yesod-persistent-1.1.0.1 depends on yesod-core-1.1.7.1 which failed to-install.-yesod-static-1.1.1.2 depends on yesod-core-1.1.7.1 which failed to install.-</code></pre>--<p>What does <em>ExitFailure 11</em> mean?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>-</span>---&mdash; <span class="date">Sat Jan 19 11:04:27 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-090c9f721facfe6f46f7bb5c601553b3">----<div class="comment-subject">--<a href="/install/OSX.html#comment-090c9f721facfe6f46f7bb5c601553b3">comment 9</a>--</div>--<div class="inlinecontent">-sig11 is a Segmentation Fault, probably from a C library used by DAV for HTTP in this case.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Jan 19 12:02:35 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-ec90aa06a5a6eb622440f361b8c95cdc">----<div class="comment-subject">--<a href="/install/OSX.html#comment-ec90aa06a5a6eb622440f361b8c95cdc">Segmentation Fault</a>--</div>--<div class="inlinecontent">-I guess my adventure ends here. :'(--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>-</span>---&mdash; <span class="date">Sat Jan 19 12:10:08 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-50a7ff1fe462964bc375f4b09f401511">----<div class="comment-subject">--<a href="/install/OSX.html#comment-50a7ff1fe462964bc375f4b09f401511">Updating to latest build</a>--</div>--<div class="inlinecontent">-What is the appropriate way to update to the latest build of git-annex using cabal?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc">Eric</a>-</span>---&mdash; <span class="date">Fri Jan 25 02:05:35 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-27ad4e1dfa06c1514a3295ca7ec05b63">----<div class="comment-subject">--<a href="/install/OSX.html#comment-27ad4e1dfa06c1514a3295ca7ec05b63">git annex on Snow Leopard</a>--</div>--<div class="inlinecontent">-Is there any way I can try to solve or by-pass the Segmentation Fault I commeted before?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>-</span>---&mdash; <span class="date">Fri Jan 25 10:36:52 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-cc56a89269e31510a10a74cf477944ce">----<div class="comment-subject">--<a href="/install/OSX.html#comment-cc56a89269e31510a10a74cf477944ce">comment 13</a>--</div>--<div class="inlinecontent">-@eric <code>cabal update &amp;&amp; cabal upgrade git-annex</code>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue Feb  5 15:46:29 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c22a0f6e35ed02be187e692435df9945">----<div class="comment-subject">--<a href="/install/OSX.html#comment-c22a0f6e35ed02be187e692435df9945">more homebrew</a>--</div>--<div class="inlinecontent">-<p>i had macports installed. then i installed brew, instaled haskell via brew. i needed to set-    PATH=$HOME/bin:/usr/local/bin:$PATH</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM">Jonas</a>-</span>---&mdash; <span class="date">Sat Feb 16 15:46:47 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-caac3130b31d5e88de2d51e57d40eb66">----<div class="comment-subject">--<a href="/install/OSX.html#comment-caac3130b31d5e88de2d51e57d40eb66">git annex on Snow Leopard</a>--</div>--<div class="inlinecontent">-<p>I'm having the same issue as @Pere, with a newer version of DAV :(</p>--<p>cabal: Error: some packages failed to install:-DAV-0.3.1 failed during the building phase. The exception was:-ExitFailure 11-git-annex-4.20130323 depends on shakespeare-css-1.0.3 which failed to install.-persistent-1.1.5.1 failed during the building phase. The exception was:-ExitFailure 11-persistent-template-1.1.3.1 depends on persistent-1.1.5.1 which failed to-install.-shakespeare-css-1.0.3 failed during the building phase. The exception was:-ExitFailure 11-yesod-1.1.9.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-auth-1.1.5.3 depends on shakespeare-css-1.0.3 which failed to install.-yesod-core-1.1.8.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-default-1.1.3.2 depends on shakespeare-css-1.0.3 which failed to-install.-yesod-form-1.2.1.3 depends on shakespeare-css-1.0.3 which failed to install.-yesod-json-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.-yesod-persistent-1.1.0.1 depends on shakespeare-css-1.0.3 which failed to-install.-yesod-static-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.</p>--<p><em>Any ideas?</em></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://launchpad.net/~wincus">Juan Moyano</a>-</span>---&mdash; <span class="date">Tue Mar 26 12:02:54 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-1cf81a381a3b69c1e0b371b38f562e1c">----<div class="comment-subject">--<a href="/install/OSX.html#comment-1cf81a381a3b69c1e0b371b38f562e1c">Snow Leopard Issues</a>--</div>--<div class="inlinecontent">-<p>I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies).  Woohoo!</p>--<p>The way I was able to fully build on a 32-bit 10.6 machine was this</p>--<ol>-<li>Delete ~/.ghc and ~/.cabal.  They were full of random things and were causing problems.</li>-<li><code>brew uninstall ghc and haskell-platform</code></li>-<li><code>brew update</code></li>-<li><code>brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code></li>-<li><code>brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code> (Some of these were already installed/up to date.</li>-<li><code>brew link libxml2</code></li>-<li><code>brew install haskell-platform</code>  (This takes a long, long time).</li>-<li><code>cabal update</code> (assuming you have added <code>~/.cabal/bin</code> to your path</li>-<li><code>cabal install cablal-install</code></li>-<li><code>cabal install c2hs</code></li>-<li><code>cabal install git-annex</code></li>-</ol>---<p>It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system.  Thats also neat.</p>--<p>The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp:-Running-<code>git annex webapp</code>-The browser starts up, and I get 3 of these errors:-<code>Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents</code></p>--<p>Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.</p>--<p>Also on a side note, when running <code>git annex webapp</code> it triggers the opening of an html file in whatever the default html file handler is.  I edit a lot of html, so for me that is usually a text editor.  I had to change the file handler to open html files with my web browser for the <code>git annex webapp</code> to actually work.  Is there a way to change that so that <code>git annex webapp</code> uses the default web browser for the system rather than the default html file handler?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>-</span>---&mdash; <span class="date">Sun Apr 14 16:17:17 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-b45fd847f89e1ef6d0eefc86d0007f12">----<div class="comment-subject">--<a href="/install/OSX.html#comment-b45fd847f89e1ef6d0eefc86d0007f12">comment 17</a>--</div>--<div class="inlinecontent">-<p>@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.</p>--<p>You can certainly use the rest of git-annex on Snow Leopard without FSEvents.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Tue Apr 16 16:31:10 2013</span>-</div>----<div style="clear: both"></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="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Mar 20 14:31:15 2013</span>-<!-- Created <span class="date">Wed Mar 20 14:31:15 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/Ubuntu.html
@@ -1,143 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>If using Ubuntu Oneiric 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>--<p>There is a PPA with a newer version of git-annex in it, maintained by-Sergio Rubio. <a href="https://launchpad.net/~rubiojr/+archive/git-annex">https://launchpad.net/~rubiojr/+archive/git-annex</a></p>--<hr />--<p>Warning: The version of git-annex shipped in Ubuntu Oneiric-has <a href="https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/875958">a bug that prevents upgrades from v1 git-annex repositories</a>.-If you need to upgrade such a repository, get a newer version of git-annex.</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">Wed Jan 16 16:32:56 2013</span>-<!-- Created <span class="date">Wed Jan 16 16:32:56 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/cabal.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>cabal</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">-cabal--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>As a haskell package, git-annex can be installed using cabal. For example:</p>--<pre><code>cabal update-PATH=$HOME/bin:$PATH-cabal install c2hs git-annex --bindir=$HOME/bin-</code></pre>--<p>The above downloads the latest release and installs it into a ~/bin/-directory, which you can put in your PATH.</p>--<p>But maybe you want something newer (or older). Then <a href="../download.html">download</a> the version-you want, and use cabal as follows inside its source tree:</p>--<pre><code>cabal update-PATH=$HOME/bin:$PATH-cabal install c2hs --bindir=$HOME/bin-cabal install --only-dependencies-cabal configure-cabal build-cabal install --bindir=$HOME/bin-</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="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Dec  9 12:32:25 2012</span>-<!-- Created <span class="date">Sun Dec  9 12:32:25 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/fromscratch.html
@@ -1,212 +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>fromscratch</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">-fromscratch--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>To install git-annex from scratch, you need a lot of stuff. Really-quite a lot.</p>--<ul>-<li>Haskell stuff--<ul>-<li><a href="http://haskell.org/platform/">The Haskell Platform</a> (GHC 7.4 or newer)</li>-<li><a href="http://hackage.haskell.org.package/mtl">mtl</a> (2.1.1 or newer)</li>-<li><a href="http://github.com/jgoerzen/missingh/wiki">MissingH</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/package/monad-control">monad-control</a></li>-<li><a href="http://hackage.haskell.org/package/lifted-base">lifted-base</a></li>-<li><a href="http://hackage.haskell.org/package/QuickCheck">QuickCheck 2</a></li>-<li><a href="http://hackage.haskell.org/package/json">json</a></li>-<li><a href="http://hackage.haskell.org/package/IfElse">IfElse</a></li>-<li><a href="http://hackage.haskell.org/package/bloomfilter">bloomfilter</a></li>-<li><a href="http://hackage.haskell.org/package/edit-distance">edit-distance</a></li>-<li><a href="http://hackage.haskell.org/package/hS3">hS3</a> (optional)</li>-<li><a href="http://hackage.haskell.org/package/DAV">DAV</a> (optional)</li>-<li><a href="http://hackage.haskell.org/package/SafeSemaphore">SafeSemaphore</a></li>-<li><a href="http://hackage.haskell.org/package/uuid">UUID</a></li>-<li><a href="http://hackage.haskell.org/package/regex-tdfa">regex-tdfa</a></li>-</ul>-</li>-<li>Optional haskell stuff, used by the <a href="../assistant.html">assistant</a> and its webapp (edit Makefile to disable)--<ul>-<li><a href="http://hackage.haskell.org/package/stm">stm</a>-(version 2.3 or newer)</li>-<li><a href="http://hackage.haskell.org/package/hinotify">hinotify</a>-(Linux only)</li>-<li><a href="http://hackage.haskell.org/package/dbus">dbus</a></li>-<li><a href="http://hackage.haskell.org/package/yesod">yesod</a></li>-<li><a href="http://hackage.haskell.org/package/yesod-static">yesod-static</a></li>-<li><a href="http://hackage.haskell.org/package/yesod-default">yesod-default</a></li>-<li><a href="http://hackage.haskell.org/package/data-default">data-default</a></li>-<li><a href="http://hackage.haskell.org/package/case-insensitive">case-insensitive</a></li>-<li><a href="http://hackage.haskell.org/package/http-types">http-types</a></li>-<li><a href="http://hackage.haskell.org/package/transformers">transformers</a></li>-<li><a href="http://hackage.haskell.org/package/wai">wai</a></li>-<li><a href="http://hackage.haskell.org/package/wai-logger">wai-logger</a></li>-<li><a href="http://hackage.haskell.org/package/warp">warp</a></li>-<li><a href="http://hackage.haskell.org/package/blaze-builder">blaze-builder</a></li>-<li><a href="http://hackage.haskell.org/package/crypto-api">crypto-api</a></li>-<li><a href="http://hackage.haskell.org/package/hamlet">hamlet</a></li>-<li><a href="http://hackage.haskell.org/package/clientsession">clientsession</a></li>-<li><a href="http://hackage.haskell.org/package/network-multicast">network-multicast</a></li>-<li><a href="http://hackage.haskell.org/package/network-info">network-info</a></li>-<li><a href="http://hackage.haskell.org/package/network-protocol-xmpp">network-protocol-xmpp</a></li>-<li><a href="http://hackage.haskell.org/package/dns">dns</a></li>-<li><a href="http://hackage.haskell.org/package/xml-types">xml-types</a></li>-<li><a href="http://hackage.haskell.org/package/async">async</a></li>-<li><a href="http://hackage.haskell.org/package/HTTP">HTTP</a></li>-</ul>-</li>-<li>Shell commands--<ul>-<li><a href="http://git-scm.com/">git</a></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://http://curl.haxx.se/">curl</a> (optional, but recommended)</li>-<li><a href="http://www.gnu.org/software/wget/">wget</a> (optional)</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="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/">lsof</a>-(optional; recommended for watch mode)</li>-<li>multicast DNS support, provided on linux by <a href="http://www.0pointer.de/lennart/projects/nss-mdns/">nss-mdns</a>-(optional; recommended for the assistant to support pairing well)</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 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="./Android.html">Android</a>--<a href="./Linux_standalone.html">Linux standalone</a>--<a href="../install.html">install</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Apr 17 02:31:00 2013</span>-<!-- Created <span class="date">Wed Apr 17 02:31:00 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/install/openSUSE.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>openSUSE</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">-openSUSE--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Haskell Platform 2012.4 is now <a href="http://software.opensuse.org/package/haskell-platform">officially available for openSUSE</a> via 1-Click Install.</p>--<p>At the time of writing, there are <a href="http://software.opensuse.org/package/git-annex">unofficial packages of git-annex</a> available for openSUSE 12.2.  It should also be possible to build it via cabal or from source as described on the <a href="../install.html">install</a> page.</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">Fri Mar 22 21:31:17 2013</span>-<!-- Created <span class="date">Fri Mar 22 21:31:17 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/internals.html
@@ -1,264 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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.-See <a href="./internals/hashing.html">hashing</a> for details.</p>--<p>Each subdirectory has the <a href="./internals/key_format.html">name of a key</a> 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>--<p>In <a href="./direct_mode.html">direct mode</a>, file contents are not stored in here, and instead-are stored directly in the file. However, the same symlinks are still-committed to git, internally.</p>--<p>Also in <a href="./direct_mode.html">direct mode</a>, some additional data is stored in these directories.-<code>.cache</code> files contain cached file stats used in detecting when a file has-changed, and <code>.map</code> files contain a list of file(s) in the work directory-that contain the key.</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 branch.-Also, <code>.git/annex/journal/</code> is used to record changes before they-are added to git.</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, followed by a timestamp. Example:</p>--<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 laptop timestamp=1317929189.157237s-26339d22-446b-11e0-9101-002170d25c55 usb disk timestamp=1317929330.769997s-</code></pre>--<p>If there are multiple lines for the same uuid, the one with the most recent-timestamp wins. git-annex union merges this and other files.</p>--<h2><code>remote.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 var=value pairs,-each separated by whitespace, and finally a timestamp.</p>--<p>Encrypted special remotes store their encryption key here,-in the "cipher" value. It is base64 encoded, and unless shared <a href="./encryption.html">encryption</a>-is used, is encrypted to one or more gpg keys. The first 256 bytes of-the cipher is used as the HMAC SHA1 encryption key, to encrypt filenames-stored on the special remote. The remainder of the cipher is used as a gpg-symmetric encryption key, to encrypt the content of files stored on the special-remote.</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 <code>1</code> (trusted), <code>0</code> (untrusted), <code>?</code> (semi-trusted),-<code>X</code> (dead) and finally a timestamp.</p>--<p>Example:</p>--<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 1 timestamp=1317929189.157237s-26339d22-446b-11e0-9101-002170d25c55 ? timestamp=1317929330.769997s-</code></pre>--<p>Repositories not listed are semi-trusted.</p>--<h2><code>group.log</code></h2>--<p>Used to group repositories together.</p>--<p>The file format is one line per repository, with the uuid followed by a space,-and then a space-separated list of groups this repository is part of,-and finally a timestamp.</p>--<h2><code>preferred-content.log</code></h2>--<p>Used to indicate which repositories prefer to contain which file contents.</p>--<p>The file format is one line per repository, with the uuid followed by a space,-then a boolean expression, and finally a timestamp.</p>--<p>Files matching the expression are preferred to be retained in the-repository, while files not matching it are preferred to be stored-somewhere else.</p>--<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. See <a href="./internals/hashing.html">hashing</a> for details.</p>--<p>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 <a href="./git-union-merge.html">union merge driver</a>.-The timestamps allow the most recent information to be identified.</p>--<h2><code>aaa/bbb/*.log.web</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="./how_it_works.html">how it works</a>--<a href="./links/the_details.html">links/the details</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Mar 31 20:34:44 2013</span>-<!-- Created <span class="date">Sun Mar 31 20:34:44 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/internals/hashing.html
@@ -1,159 +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</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="../internals.html">internals</a>/ --</span>-<span class="title">-hashing--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>In both the .git/annex directory and the git-annex branch, two levels of-hash directories are used, to avoid issues with too many files in one-directory.</p>--<p>Two separate hash methods are used. One, the old hash format, is only used-for non-bare git repositories. The other, the new hash format, is used for-bare git repositories, the git-annex branch, and on special remotes as-well.</p>--<h2>new hash format</h2>--<p>This uses two directories, each with a three-letter name, such as "f87/4d5"</p>--<p>The directory names come from the md5sum of the <a href="./key_format.html">key</a>.</p>--<p>For example:</p>--<pre><code>echo -n "SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | md5sum-</code></pre>--<h2>old hash format</h2>--<p>This uses two directories, each with a two-letter name, such as "pX/1J"</p>--<p>It takes the md5sum of the key, but rather than a string, represents it as 4-32bit words. Only the first word is used. It is converted into a string by the-same mechanism that would be used to encode a normal md5sum value into a-string, but where that would normally encode the bits using the 16 characters-0-9a-f, this instead uses the 32 characters "0123456789zqjxkmvwgpfZQJXKMVWGPF".-The first 2 letters of the resulting string are the first directory, and the-second 2 are the second directory.</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>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Mar 31 20:34:44 2013</span>-<!-- Created <span class="date">Sun Mar 31 20:34:44 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/internals/key_format.html
@@ -1,155 +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>key format</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="../internals.html">internals</a>/ --</span>-<span class="title">-key format--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>A git-annex key has this format:</p>--<pre><code>BACKEND-sNNNN-mNNNN--NAME-</code></pre>--<p>For example:</p>--<pre><code>SHA256E-s31390--f50d7ac4c6b9031379986bc362fcefb65f1e52621ce1708d537e740fefc59cc0.mp3-</code></pre>--<ul>-<li>The backend is one of the <a href="../backends.html">key-value backends</a>, which-are always upper-cased.</li>-<li>The name field at the end has a format dependent on the backend. It is-always the last field, and is prefixed with "--". Unlike other fields,-it may contain "-" in its content. It should not contain newline characters;-otherwise nearly anything goes.</li>-<li>The "-s" field is optional, and is the size of the content in bytes.</li>-<li>The "-m" field is optional, and is the mtime of the file when it was-added to git-annex, expressed as seconds from the epoch.-This is currently only used by the WORM backend.</li>-<li>Other fields could be added in the future, if needed.</li>-<li>Fields may appear, in any order (though always before the name field).</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="./hashing.html">hashing</a>--<a href="../internals.html">internals</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Dec  1 15:30:28 2012</span>-<!-- Created <span class="date">Sat Dec  1 15:30:28 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/license.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>license</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">-license--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex is Free Software.</p>--<p>The majority of git-annex is licensed under the <a href="./license/GPL">GPL</a>, version 3 or-higher.</p>--<p>The git-annex webapp is licensed under the <a href="./license/AGPL">AGPL</a>, version 3 or higher.-Note that builds of git-annex that include the webapp may be licensed-under the AGPL as a whole. git-annex built without the webapp does-not include this code, so remains GPLed.</p>--<p>git-annex contains a variety of other code, artwork, etc copyright by-others, under a variety of licences, including the <a href="./license/LGPL">LGPL</a>, BSD,-MIT, and Apache 2.0 licenses. For details, see-<a href="http://source.git-annex.branchable.com/?p=source.git;a=blob_plain;f=debian/copyright;hb=HEAD">this file</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="./index.html">index</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/license/AGPL.gz

binary file changed (11769 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/license/GPL.gz

binary file changed (12130 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/license/LGPL.gz

binary file changed (9357 → absent bytes)

− debian/git-annex/usr/share/doc/git-annex/html/links/key_concepts.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>key concepts</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">links</a>/ --</span>-<span class="title">-key concepts--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h3>key concepts</h3>--<ul>-<li><a href="../git-annex.html">git-annex man page</a></li>-<li><a href="../how_it_works.html">how it works</a></li>-<li><a href="../special_remotes.html">special remotes</a></li>-<li><a href="../sync.html">sync</a></li>-<li><a href="../direct_mode.html">direct mode</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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/links/other_stuff.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>other stuff</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">links</a>/ --</span>-<span class="title">-other stuff--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h3>other stuff</h3>--<ul>-<li><a href="../testimonials.html">testimonials</a></li>-<li><a href="../not.html">what git annex is not</a></li>-<li><a href="../related_software.html">related software</a></li>-<li><a href="../sitemap.html">sitemap</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">Mon Mar 11 19:30:37 2013</span>-<!-- Created <span class="date">Mon Mar 11 19:30:37 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/links/the_details.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>the details</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">links</a>/ --</span>-<span class="title">-the details--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<h3>the details</h3>--<ul>-<li><a href="../encryption.html">encryption</a></li>-<li><a href="../backends.html">key-value backends</a></li>-<li><a href="../bare_repositories.html">bare repositories</a></li>-<li><a href="../internals.html">internals</a></li>-<li><a href="../scalability.html">scalability</a></li>-<li><a href="../design.html">design</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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/location_tracking.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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.</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="./how_it_works.html">how it works</a>--<a href="./internals.html">internals</a>--<a href="./not.html">not</a>--<a href="./tips/powerful_file_matching.html">tips/powerful file matching</a>--<a href="./tips/what_to_do_when_you_lose_a_repository.html">tips/what to do when you lose a repository</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>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/logo-bw.svg
@@ -1,60 +0,0 @@-<?xml version="1.0" encoding="UTF-8" standalone="no"?>-<!-- Created with Inkscape (http://www.inkscape.org/) -->--<svg-   xmlns:dc="http://purl.org/dc/elements/1.1/"-   xmlns:cc="http://creativecommons.org/ns#"-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"-   xmlns:svg="http://www.w3.org/2000/svg"-   xmlns="http://www.w3.org/2000/svg"-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"-   width="640px"-   height="480px"-   id="svg3134"-   version="1.1"-   inkscape:version="0.48.3.1 r9886"-   sodipodi:docname="New document 11">-  <defs-     id="defs3136" />-  <sodipodi:namedview-     id="base"-     pagecolor="#ffffff"-     bordercolor="#666666"-     borderopacity="1.0"-     inkscape:pageopacity="0.0"-     inkscape:pageshadow="2"-     inkscape:zoom="0.77472527"-     inkscape:cx="317.41844"-     inkscape:cy="245.16312"-     inkscape:current-layer="layer1"-     inkscape:document-units="px"-     showgrid="false"-     inkscape:window-width="800"-     inkscape:window-height="564"-     inkscape:window-x="0"-     inkscape:window-y="12"-     inkscape:window-maximized="0" />-  <metadata-     id="metadata3139">-    <rdf:RDF>-      <cc:Work-         rdf:about="">-        <dc:format>image/svg+xml</dc:format>-        <dc:type-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />-        <dc:title></dc:title>-      </cc:Work>-    </rdf:RDF>-  </metadata>-  <g-     id="layer1"-     inkscape:label="Layer 1"-     inkscape:groupmode="layer">-    <path-       style="fill:#000000"-       d="m 302.43431,440.4468 c -14.88228,-4.33874 -18.89443,-6.47398 -28.38217,-15.10481 -13.08558,-11.90371 -17.72561,-23.29726 -17.72561,-43.52501 0,-18.30772 4.14768,-29.96528 14.34194,-40.30981 7.27131,-7.37848 18.36439,-13.25052 25.03206,-13.25052 4.73347,0 4.8315,0.27458 4.8315,13.5325 l 0,13.5325 -6.57204,3.04787 c -9.16684,4.25125 -13.05127,12.36242 -12.09267,25.25093 1.53891,20.69072 13.75689,28.81207 43.34566,28.81207 14.25099,0 19.3577,-0.72886 23.91428,-3.41316 12.51899,-7.37499 18.80704,-23.65294 14.28477,-36.97908 -2.56222,-7.55028 -13.65238,-17.88336 -19.19364,-17.88336 -3.36269,0 -3.73837,1.31029 -3.73837,13.03841 l 0,13.0384 -11.88928,-0.55077 -11.88929,-0.55079 0,-25.90026 0,-25.90027 35.19228,0 35.19228,0 0.57499,9.7126 c 0.49269,8.32267 0.0845,9.71665 -2.85343,9.74093 -8.20311,0.0677 -8.706,2.84359 -2.15276,11.88256 6.12053,8.44215 6.33349,9.33743 6.33349,26.62529 0,15.38301 -0.65924,19.1446 -4.70538,26.84845 -9.93611,18.91837 -28.93477,29.1492 -56.00199,30.15722 -10.88743,0.40545 -20.4551,-0.28006 -25.84662,-1.85189 z m -45.65485,-139.01542 0,-13.87514 65.62885,0 65.62884,0 0,13.87514 0,13.87514 -65.62884,0 -65.62885,0 0,-13.87514 z m 49.45942,-38.8504 0,-15.72516 -24.72971,0 -24.72971,0 0,-12.95013 0,-12.95014 24.72971,0 24.72971,0 0,-16.65017 0,-16.65017 15.21829,0 15.21828,0 0,16.65017 0,16.65017 25.68085,0 25.68085,0 0,12.89643 0,12.89645 -25.20528,0.51619 -25.20528,0.51621 -0.5525,15.26265 -0.5525,15.26266 -15.14135,0 -15.14136,0 0,-15.72516 z m 90.58314,-28.97078 c -1.413,-6.87082 -1.79669,-6.34506 5.78198,-7.92291 5.58749,-1.16331 6.09939,-0.83956 7.33692,4.64003 1.45579,6.44604 -0.79787,9.0505 -7.87441,9.1001 -3.02463,0.0211 -4.34501,-1.44337 -5.24449,-5.81722 z m -160.69546,0.49827 c -1.79783,-1.10787 -2.17745,-3.37832 -1.25087,-7.48118 1.23754,-5.47959 1.74944,-5.80335 7.33693,-4.64004 7.57866,1.57785 7.19497,1.05209 5.78198,7.92291 -1.24077,6.03343 -6.10031,7.75249 -11.86804,4.19831 z m 190.42463,-6.76941 c -1.85277,-5.87101 -1.66966,-6.25919 3.83255,-8.12458 3.17805,-1.07743 5.9948,-1.95896 6.25947,-1.95896 0.91633,0 4.67209,11.70301 3.97372,12.38219 -0.38574,0.37517 -3.27056,1.39869 -6.41068,2.27453 -5.34046,1.48954 -5.83503,1.19409 -7.65506,-4.57318 z m -216.85329,0.64986 c -3.40034,-0.87401 -6.18243,-1.85733 -6.18243,-2.18515 0,-0.32782 0.94953,-3.24505 2.11007,-6.48271 1.73496,-4.84015 2.83405,-5.67166 6.18243,-4.67733 7.88037,2.34017 8.42794,3.15845 6.18018,9.23554 -1.96709,5.31825 -2.52062,5.59264 -8.29025,4.10965 z m 245.52541,-10.67191 c -2.12815,-5.48318 -2.11652,-5.49574 11.85359,-12.82409 22.7641,-11.94143 40.5838,-25.97488 57.05249,-44.93026 l 7.53031,-8.66734 5.41145,4.25151 5.41145,4.25151 -17.60152,17.90565 c -16.73035,17.01941 -37.6183,32.42395 -56.39658,41.59159 -10.27596,5.01677 -10.722,4.96367 -13.26119,-1.57857 z m -286.33038,-6.27889 c -21.55151,-11.9442 -31.63729,-19.70355 -49.98909,-38.45829 l -16.54083,-16.90401 5.39695,-4.24028 5.39696,-4.24026 7.53031,8.66734 c 16.46869,18.95538 34.28839,32.98883 57.05248,44.93026 13.97012,7.32835 13.98175,7.34091 11.8536,12.82409 -1.17162,3.01872 -3.03333,5.48856 -4.13709,5.48856 -1.10378,0 -8.55726,-3.63034 -16.56329,-8.06741 z m 375.66016,-70.84688 c -3.97648,-2.69927 -4.05764,-3.18834 -1.36824,-8.24615 2.7937,-5.254 2.98784,-5.31188 8.50732,-2.53606 6.47782,3.25777 6.35114,2.92151 3.44074,9.13364 -2.52039,5.37967 -4.60478,5.70447 -10.57982,1.64857 z M 89.683687,134.84263 c -2.910382,-6.21213 -3.037055,-5.87587 3.440759,-9.13364 5.520337,-2.77624 5.713305,-2.71854 8.512274,2.54533 2.72546,5.12566 2.63957,5.52893 -1.77689,8.3432 -6.255304,3.98601 -7.594703,3.75504 -10.176143,-1.75489 z M 558.86885,114.49806 c -4.66412,-2.46246 -4.94939,-3.21135 -3.14292,-8.25101 1.09275,-3.04849 2.20334,-5.54273 2.46799,-5.54273 1.15984,0 12.46263,4.10838 12.46263,4.52996 0,2.20567 -4.45138,12.10382 -5.41738,12.04614 -0.68234,-0.0407 -3.54898,-1.29279 -6.37032,-2.78236 z M 76.248436,107.82834 c -1.1486,-3.20438 -2.088367,-6.03672 -2.088367,-6.2941 0,-0.42158 11.30279,-4.529954 12.462632,-4.529954 0.264646,0 1.376722,2.498376 2.471297,5.551964 1.832586,5.11256 1.553673,5.77145 -3.524022,8.32508 -7.178882,3.61035 -6.90035,3.70158 -9.32154,-3.05299 z M 568.27869,86.478917 c -4.16144,-1.0576 -4.15124,-1.435966 0.47558,-17.673656 4.71707,-16.554414 4.76128,-15.866207 -0.95115,-14.804204 -3.51666,0.653779 -4.75571,0.08973 -4.75571,-2.164633 0,-1.67682 1.09334,-3.456779 2.42964,-3.95547 1.33629,-0.498709 4.53447,-4.218875 7.10707,-8.267031 3.85384,-6.064326 5.73436,-7.360301 10.68013,-7.360301 4.78765,0 6.24005,0.919681 7.17525,4.543462 0.64491,2.498894 2.13408,6.869564 3.30925,9.712599 4.714,11.40422 2.47433,18.328434 -4.06643,12.571786 -3.92535,-3.4548 -3.4906,-4.351652 -9.63904,19.885132 -2.24473,8.848659 -3.45803,9.62341 -11.76459,7.512316 z M 62.514449,66.506779 57.950276,48.599557 52.639,52.662624 c -2.921206,2.234675 -5.630041,3.75306 -6.019648,3.374157 -0.389608,-0.378884 0.859281,-4.428205 2.775301,-8.998492 1.916001,-4.570287 3.965028,-9.76649 4.553405,-11.547134 0.734891,-2.224093 3.046111,-3.237533 7.383397,-3.237533 5.021102,0 8.14882,1.812001 15.277977,8.851138 4.930401,4.868122 8.964349,10.279427 8.964349,12.025124 0,4.517598 -2.081195,3.939726 -6.8916,-1.913568 -2.299596,-2.798153 -4.818203,-4.473179 -5.596904,-3.722293 -0.778719,0.750904 0.522064,8.499468 2.890599,17.219014 2.368555,8.719565 3.936551,16.213492 3.484473,16.653149 -0.452097,0.439676 -3.422934,1.3053 -6.601862,1.923613 l -5.779866,1.12422 -4.564172,-17.90724 z"-       id="path3050"-       inkscape:connector-curvature="0" />-  </g>-</svg>
− 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.svg
@@ -1,77 +0,0 @@-<?xml version="1.0" encoding="UTF-8" standalone="no"?>-<!-- Created with Inkscape (http://www.inkscape.org/) -->--<svg-   xmlns:dc="http://purl.org/dc/elements/1.1/"-   xmlns:cc="http://creativecommons.org/ns#"-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"-   xmlns:svg="http://www.w3.org/2000/svg"-   xmlns="http://www.w3.org/2000/svg"-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"-   width="640px"-   height="480px"-   id="svg3134"-   version="1.1"-   inkscape:version="0.48.3.1 r9886"-   sodipodi:docname="git-annex.svg">-  <defs-     id="defs3136" />-  <sodipodi:namedview-     id="base"-     pagecolor="#ffffff"-     bordercolor="#666666"-     borderopacity="1.0"-     inkscape:pageopacity="0.0"-     inkscape:pageshadow="2"-     inkscape:zoom="0.77472527"-     inkscape:cx="398.6665"-     inkscape:cy="232.05718"-     inkscape:current-layer="layer1"-     inkscape:document-units="px"-     showgrid="false"-     inkscape:window-width="1024"-     inkscape:window-height="566"-     inkscape:window-x="0"-     inkscape:window-y="12"-     inkscape:window-maximized="0" />-  <metadata-     id="metadata3139">-    <rdf:RDF>-      <cc:Work-         rdf:about="">-        <dc:format>image/svg+xml</dc:format>-        <dc:type-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />-        <dc:title></dc:title>-      </cc:Work>-    </rdf:RDF>-  </metadata>-  <g-     id="layer1"-     inkscape:label="Layer 1"-     inkscape:groupmode="layer">-    <g-       id="g4187"-       transform="matrix(2.0184211,0,0,1.9796558,-320.30102,-235.1316)">-      <path-         sodipodi:nodetypes="cccccccccccccccccccccccccssscssssssssscssssssssssscccssssscccssssssssssssssssssscssssssssssscsssssssccscsssssssssscc"-         inkscape:connector-curvature="0"-         id="path3050"-         d="m 306.53525,253.83733 0,-8.5 -13,0 -13,0 0,-7 0,-7 13,0 13,0 0,-9 0,-9 8,0 8,0 0,9 0,9 13.5,0 13.5,0 0,6.97097 0,6.97098 -13.25,0.27902 -13.25,0.27903 -0.29044,8.25 -0.29044,8.25 -7.95956,0 -7.95956,0 z m 47.61806,-15.65972 c -0.74279,-3.71392 -0.94449,-3.42973 3.03949,-4.28261 2.93725,-0.62881 3.20635,-0.45381 3.8569,2.5081 0.76528,3.48431 -0.41943,4.89211 -4.13945,4.91892 -1.59,0.0114 -2.2841,-0.78019 -2.75694,-3.14441 z m -84.47495,0.26933 c -0.94509,-0.59884 -1.14465,-1.8261 -0.65756,-4.04384 0.65055,-2.96191 0.91965,-3.13691 3.8569,-2.5081 3.98398,0.85288 3.78228,0.56869 3.03949,4.28261 -0.65225,3.26128 -3.20683,4.19049 -6.23883,2.26933 z m 100.10308,-3.6591 c -0.97397,-3.17349 -0.87771,-3.38331 2.01471,-4.39162 1.67065,-0.58239 3.15137,-1.05889 3.2905,-1.05889 0.4817,0 2.45604,6.32589 2.08892,6.69301 -0.20278,0.20279 -1.71928,0.75604 -3.36999,1.22946 -2.80739,0.80515 -3.06738,0.64545 -4.02414,-2.47196 z m -113.99619,0.35127 c -1.7875,-0.47243 -3.25,-1.00395 -3.25,-1.18115 0,-0.1772 0.49915,-1.75406 1.10923,-3.50413 0.91204,-2.61627 1.48981,-3.06573 3.25,-2.52826 4.14258,1.26494 4.43043,1.70725 3.24882,4.99213 -1.03407,2.8747 -1.32505,3.02302 -4.35805,2.22141 z m 129.06865,-5.76854 c -1.11873,-2.96385 -1.11262,-2.97064 6.23124,-6.93187 11.96671,-6.45476 21.33423,-14.04033 29.99155,-24.28638 l 3.95856,-4.685 2.84471,2.29809 2.84471,2.29809 -9.25283,9.67863 c -8.79487,9.19959 -19.77532,17.52628 -29.64675,22.48171 -5.4019,2.71174 -5.63638,2.68304 -6.97119,-0.85327 z m -150.51915,-3.39396 c -11.32927,-6.45626 -16.6312,-10.65046 -26.27844,-20.78805 l -8.69524,-9.13721 2.83709,-2.29202 2.83709,-2.29201 3.95856,4.685 c 8.65732,10.24605 18.02484,17.83162 29.99155,24.28638 7.34386,3.96123 7.34997,3.96802 6.23124,6.93187 -0.6159,1.63172 -1.59457,2.96676 -2.1748,2.96676 -0.58024,0 -4.49841,-1.96233 -8.70705,-4.36072 z m 197.47834,-38.29522 c -2.09037,-1.45905 -2.13303,-1.72341 -0.71926,-4.45733 1.4686,-2.83997 1.57066,-2.87126 4.47216,-1.37083 3.40528,1.76094 3.33869,1.57918 1.80874,4.93705 -1.32493,2.9079 -2.42066,3.08347 -5.56164,0.89111 z m -239.11733,-2.89111 c -1.52994,-3.35787 -1.59653,-3.17611 1.80875,-4.93705 2.90195,-1.50066 3.00339,-1.46947 4.47476,1.37584 1.43273,2.7706 1.38758,2.98858 -0.93408,4.50979 -3.28831,2.15458 -3.99241,2.02973 -5.34943,-0.94858 z m 246.64289,-10.99695 c -2.45185,-1.33105 -2.60181,-1.73585 -1.65218,-4.45996 0.57444,-1.64782 1.15826,-2.99604 1.29738,-2.99604 0.60971,0 6.5514,2.22072 6.5514,2.4486 0,1.19224 -2.34002,6.54254 -2.84783,6.51136 -0.35869,-0.022 -1.86564,-0.6988 -3.34877,-1.50396 z m -253.70558,-3.60522 c -0.6038,-1.73208 -1.09782,-3.26306 -1.09782,-3.40218 0,-0.22788 5.94169,-2.4486 6.5514,-2.4486 0.13912,0 0.72372,1.35046 1.29912,3.00103 0.96336,2.76352 0.81674,3.11967 -1.85252,4.5 -3.77382,1.95152 -3.6274,2.00083 -4.90018,-1.65025 z M 444.28525,158.648 c -2.1876,-0.57167 -2.18224,-0.77619 0.25,-9.55323 2.47969,-8.94824 2.50293,-8.57624 -0.5,-8.00219 -1.84865,0.35339 -2.5,0.0485 -2.5,-1.17006 0,-0.90638 0.57475,-1.86851 1.27722,-2.13807 0.70247,-0.26957 2.3837,-2.28045 3.73607,-4.46862 2.0259,-3.27798 3.01446,-3.9785 5.61437,-3.9785 2.51679,0 3.28029,0.49712 3.77191,2.4559 0.33902,1.35074 1.12185,3.71324 1.73962,5.25 2.47807,6.16438 1.30071,9.90716 -2.13766,6.79549 -2.06349,-1.86744 -1.83495,-2.35222 -5.06708,10.74861 -1.18002,4.78301 -1.81783,5.20179 -6.18445,4.06067 z m -265.87191,-10.79564 -2.39931,-9.67948 -2.79205,2.19623 c -1.53563,1.20792 -2.95962,2.02866 -3.16443,1.82385 -0.20481,-0.2048 0.45171,-2.3936 1.45893,-4.864 1.00721,-2.4704 2.08435,-5.27913 2.39365,-6.24163 0.38632,-1.2022 1.60129,-1.75 3.88133,-1.75 2.63951,0 4.2837,0.97945 8.03138,4.78435 2.59183,2.63139 4.71241,5.55639 4.71241,6.5 0,2.44192 -1.09405,2.12956 -3.6228,-1.03435 -1.20886,-1.5125 -2.53285,-2.41791 -2.9422,-2.01203 -0.40936,0.40589 0.27444,4.59426 1.51954,9.30748 1.24511,4.71323 2.06938,8.76396 1.83173,9.00161 -0.23766,0.23766 -1.79938,0.70556 -3.47049,1.03978 l -3.03838,0.60768 z"-         style="fill:#40bf4c;fill-opacity:1" />-      <path-         sodipodi:nodetypes="ccccccccc"-         style="fill:#d8372c;fill-opacity:1"-         d="m 280.84173,275.15053 0,-7.5 34.5,0 34.5,0 0,7.5 0,7.5 -34.5,0 -34.5,0 z"-         id="path4113"-         inkscape:connector-curvature="0" />-      <path-         sodipodi:nodetypes="sssssscssssssscccccccsssssss"-         style="fill:#666666;fill-opacity:1;fill-rule:nonzero"-         d="m 305.37638,349.62884 c -7.82337,-2.34524 -9.93249,-3.49941 -14.92004,-8.16468 -6.87887,-6.43437 -9.31806,-12.59298 -9.31806,-23.52679 0,-9.89596 2.18037,-16.19728 7.53932,-21.78886 3.82241,-3.98833 9.65386,-7.16237 13.15894,-7.16237 2.48831,0 2.53984,0.14842 2.53984,7.31479 l 0,7.31479 -3.45481,1.64748 c -4.81886,2.29795 -6.86084,6.68232 -6.35692,13.64901 0.80898,11.18406 7.23177,15.57393 22.7861,15.57393 7.49151,0 10.17602,-0.39397 12.57134,-1.84493 6.58103,-3.98644 9.88655,-12.78524 7.50927,-19.98849 -1.34692,-4.08119 -7.17683,-9.66658 -10.08978,-9.66658 -1.76771,0 -1.9652,0.70826 -1.9652,7.04772 l 0,7.04771 -6.25,-0.29771 -6.25,-0.29772 0,-14 0,-14 18.5,0 18.5,0 0.30226,5.25 c 0.259,4.49869 0.0444,5.25219 -1.5,5.26531 -4.31224,0.0366 -4.5766,1.53706 -1.13167,6.42294 3.21746,4.56328 3.32941,5.04721 3.32941,14.3919 0,8.31506 -0.34655,10.34833 -2.47354,14.51253 -5.22325,10.22604 -15.21053,15.75616 -29.43932,16.30103 -5.72334,0.21916 -10.75291,-0.15138 -13.58714,-1.00101 z"-         id="path4115"-         inkscape:connector-curvature="0" />-    </g>-  </g>-</svg>
− 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/meta.html
@@ -1,151 +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>meta</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">-meta--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This wiki contains 504 pages.</p>--<p>Broken links:</p>--<ul>-<li><span class="createlink">Issue on OSX with some system limits</span> from <a href="./design/assistant/inotify.html">inotify</a>, <a href="./assistant/release_notes.html">release notes</a></li>-<li><span class="createlink">Joey</span> from <a href="./tips/finding_duplicate_files.html">finding duplicate files</a>, <a href="./tips/using_Google_Cloud_Storage.html">using Google Cloud Storage</a>, <a href="./testimonials.html">testimonials</a>, <a href="./assistant/thanks.html">thanks</a>, <a href="./tips/what_to_do_when_a_repository_is_corrupted.html">what to do when a repository is corrupted</a>, <a href="./tips/setup_a_public_repository_on_a_web_site.html">setup a public repository on a web site</a>, <a href="./design/assistant/polls/goals_for_April.html">goals for April</a>, <a href="./tips/assume-unstaged.html">assume-unstaged</a>, <a href="./install/OSX.html">OSX</a>, <a href="./design/assistant.html">assistant</a>, <a href="./special_remotes/hook.html">hook</a></li>-<li><span class="createlink">OSX alias permissions and versions problem</span> from <a href="./design/assistant/desymlink.html">desymlink</a></li>-<li><span class="createlink">OSX app issues</span> from <a href="./install/OSX.html">OSX</a></li>-<li><span class="createlink">OSX&#39;s default sshd behaviour has limited paths set</span> from <a href="./install/OSX.html">OSX</a></li>-<li><span class="createlink">OSX&#39;s haskell-platform statically links things</span> from <a href="./install/OSX.html">OSX</a></li>-<li><span class="createlink">Slow transfer for a lot of small files.</span> from <a href="./design/assistant/syncing.html">syncing</a></li>-<li><span class="createlink">Wishlist: options for syncing meta-data and data</span> from <a href="./design/assistant/syncing.html">syncing</a></li>-<li><span class="createlink">assistant threaded runtime</span> from <a href="./design/assistant/syncing.html">syncing</a></li>-<li><span class="createlink">blog</span> from <a href="./design/assistant.html">assistant</a></li>-<li><span class="createlink">blog</span> from <a href="./footer/column_a.html">column a</a>, <a href="./assistant.html">assistant</a></li>-<li><span class="createlink">bugs</span> from <a href="./sidebar.html">sidebar</a></li>-<li><span class="createlink">day 7  bugfixes</span> from <a href="./design/assistant/inotify.html">inotify</a></li>-<li><span class="createlink">forum</span> from <a href="./sidebar.html">sidebar</a>, <a href="./footer/column_b.html">column b</a>, <a href="./contact.html">contact</a></li>-<li><span class="createlink">gadu - git-annex disk usage</span> from <a href="./related_software.html">related software</a></li>-<li><span class="createlink">git-annex unused eats memory</span> from <a href="./scalability.html">scalability</a></li>-<li><span class="createlink">smudge</span> from <a href="./design/assistant/desymlink.html">desymlink</a></li>-<li><span class="createlink">special remote for IMAP</span> from <a href="./special_remotes.html">special remotes</a></li>-<li><span class="createlink">special remote for amazon glacier</span> from <a href="./design/assistant/more_cloud_providers.html">more cloud providers</a></li>-<li><span class="createlink">tips: special&#95;remotes&#47;hook with tahoe-lafs</span> from <a href="./special_remotes.html">special remotes</a></li>-<li><span class="createlink">todo</span> from <a href="./sidebar.html">sidebar</a>, <a href="./design/assistant.html">assistant</a></li>-<li><span class="createlink">watcher commits unlocked files</span> from <a href="./design/assistant/inotify.html">inotify</a>, <a href="./assistant/release_notes.html">release notes</a></li>-<li><span class="createlink">windows support</span> from <a href="./install.html">install</a>, <a href="./design/assistant/windows.html">windows</a></li>-<li><span class="createlink">wishlist: allow configuration of downloader for addurl</span> from <a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</a></li>-<li><span class="createlink">wishlist: an &#34;assistant&#34; for web-browsing -- tracking the sources of the downloads</span> from <a href="./design/assistant/webapp.html">webapp</a>, <a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/news.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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="./footer/column_a.html">footer/column a</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/not.html
@@ -1,507 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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. However, the git-annex-<a href="./assistant.html">assistant</a> is addressing some of the same needs in its own unique ways.-(There is also a FUSE filesystem built on top of git-annex, called-<a href="https://github.com/chmduquesne/sharebox-fs">ShareBox</a>.)</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 scalability-limitations that might eventually be fixed by efforts like-<a href="http://caca.zoy.org/wiki/git-bigfiles">git-bigfiles</a>. In particular,-git-annex's <a href="./location_tracking.html">location tracking</a> allows having many repositories-with a partial set of files, that are copied around as desired.</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 similarly not <a href="https://github.com/jedbrown/git-fat">git-fat</a>,-which also uses git smudge filters, and also lacks git-annex' widely-distributed storage and partial checkouts.</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/LargefilesExtension">Mercurial largefiles 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="feedlink">---</div>-<div class="comment" id="comment-21ca3dc4a279055e92a26ddc0740e63c">----<div class="comment-subject">--<a href="/not.html#comment-21ca3dc4a279055e92a26ddc0740e63c">git-media</a>--</div>--<div class="inlinecontent">-I haven't used git-media, but from the README it looks as though they now support several backends.  Might want to update the (very helpful!) comparison.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://bergey.dreamwidth.org/">bergey [dreamwidth.org]</a>-</span>---&mdash; <span class="date">Sat Jul 14 11:42:05 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-4d4bfdd220bfc44bd5683f5da6638358">----<div class="comment-subject">--<a href="/not.html#comment-4d4bfdd220bfc44bd5683f5da6638358">Sparkleshare</a>--</div>--<div class="inlinecontent">-How does <a href="http://sparkleshare.org/">sparkleshare</a> and git-annex (and git-annex assistant) compare?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>-</span>---&mdash; <span class="date">Thu Sep  6 04:09:17 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-10687d51e112a627d1272a69b92c2a9d">----<div class="comment-subject">--<a href="/not.html#comment-10687d51e112a627d1272a69b92c2a9d">comment 3</a>--</div>--<div class="inlinecontent">-My understanding of sparkleshare (I've not used it) is that it uses a regular git repository, so has git's problems with large files and will not support partial checkouts. However, you might want to try it out and see if it works for you.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Sep  6 10:50:43 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c61d8243d45b78efc5ff90a3cc10318c">----<div class="comment-subject">--<a href="/not.html#comment-c61d8243d45b78efc5ff90a3cc10318c">Sparkleshare</a>--</div>--<div class="inlinecontent">-<p>Hi,</p>--<p>I used sparkleshare lately in a project involving 3 computers and 2 people. and for ascii texts and even a few smaller binary things it works ok.</p>--<p>But it does "to much" for media. at least at the moment, it just uses git for saving the data. That has a possitive and a negative aspect.</p>--<p>possitive:</p>--<ol>-<li>you have a full history, if you delete a file its not gone for ever, so if you change it, the older version is still recoverable.</li>-<li>if you would as example use it from a laptop in a train without internet and you use a git server in the internet for the central server, and would change some files, then you or somebody else would write on the same txt file as example (html or something... latex...) you would be able to merge this files.</li>-<li>its not totaly bad for backup, because you can restore old files even if you delete it localy, because it will hold all history</li>-</ol>---<p>negative:</p>--<ol>-<li>for bigger data its cracy. if you use it for movies as example, you would in git annex delete some stuff you want not to see anytime again, so you would delete it everywhere. and its really away, not beeing still there in the history</li>-<li>git as it is has issues with saving/transfairing very big files, and its slow on even mid-sized files lets say 100 5mb big files it would be slow. because at the moment sparkleshare uses git all this disatvantages are there.</li>-<li>as many clients you use lets say a projekt with 10 people, each of them have all files and all the history of this projekt/directory on their pc.</li>-<li>you need a central data-store git folder you can use a seperate pc for that or save it on a client, if you use a client for that you have to save the data double on this pc.</li>-</ol>---<p>(so you see for big files even if git would handle them faster you would waste massivly hard disk space) but again for pdfs a few pictures text files even some office files and stuff &lt;100mb its great and easy to do.</p>--<p>I try it in a few words, sparkleshare is like dropbox but with file history ( I think dropbox dont have that???) but because git is not designed (yet) for big files it works somewhat ok for &lt; 100mb stuff if you go very much higher &gt; 1GB it will not be optimal.</p>--<p>git annex dont saves the data itself in git but only the locations and the checksums. so its more like a adress book of your data. its a abstraction layer to your data, you can see on as many devises as you want even without no netzwerk internet connection active and only a very small hd see all your 5 Terrabyte of Data you might have, and move around directories sort around them... delete stuff you dont want if you can deside that by the name... and then  when you come back to the connection you sync your actions and it does it to the files.</p>--<p>And one big feature like joey said is that you cannot partialy load files from the repos to your device if it has as example only enough space for 1/10 of it.</p>--<p>There is another thing, but because it is "only" a abstraction layer, it is theoreticaly easy to implement extentions to save your data on anything not only git repositories...</p>--<p>Sparkleshare will switch to something else than git, maybe but then it will switch to this single protocol and stick to that. because it does not abstract stuff so hard.</p>--<p>btw there is a alternative out there it forces you not to use git as vcs but you have to use a vcs (like git) and you dont have to use the client written in mono but only a smaller python script:</p>--<p>http://www.mayrhofer.eu.org/dvcs-autosync</p>--<p>but the idea behind it is the same except this 2 points ;)</p>--<p>but many free software developers dont like mono, so the change that it gets more love from more people is not totaly unlikely.</p>--<p>So way to long post but hope that helps somebody ;)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo">Stefan</a>-</span>---&mdash; <span class="date">Fri Sep 14 21:28:05 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e302ee7a556894832ce98b554e0942ab">----<div class="comment-subject">--<a href="/not.html#comment-e302ee7a556894832ce98b554e0942ab">comment 5</a>--</div>--<div class="inlinecontent">-<p>or to make it more simple ;)</p>--<p>sparkleshare is for proejects and maybe backup your documents folder</p>--<p>annex is for managing big binary files that not get modified most of the time and only added/synced or deleted.</p>--<p>hope thats on the point, try to start using it also now, but am a bit blowen away what it all can do and what not... and how to get a good use case, and mixing media-management with backup of home and thinking on solving that all with annex without having it used ever ;)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo">Stefan</a>-</span>---&mdash; <span class="date">Fri Sep 14 21:35:06 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-6f4c86ea2e3f3350df1f34a5c1caac49">----<div class="comment-subject">--<a href="/not.html#comment-6f4c86ea2e3f3350df1f34a5c1caac49">comment 6</a>--</div>--<div class="inlinecontent">-<p>Stefan: "annex is for managing big binary files that not get modified most of the time and only added/synced or deleted."</p>--<p>While this is true,  the kickstarter title for assistant was "Like dropbox", and dropbox makes it transparent to edit files and they work with the filesystem.-So with assistant, lock/unlock should be automated and transparent to the user. Otherwise it's confusing and not simple at all to use, and at least OSX keeps giving errors because of the way it handles aliases.-So something like sharebox is essential to be included in assistant in my opinion.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlatTbI0K-qydpeYHl37iseqPNvERcdIMk">Tiago</a>-</span>---&mdash; <span class="date">Thu Sep 27 06:17:18 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-041929cac200dbd17397506fe7b961de">----<div class="comment-subject">--<a href="/not.html#comment-041929cac200dbd17397506fe7b961de">comment 7</a>--</div>--<div class="inlinecontent">-<p>hi joey,</p>--<p>i'm excited by your project here but also confused by its direction. the kickstarter page has the header: "git-annex assistant: Like DropBox, but with your own cloud." this page says "git-annex is not a ... DropBox clone." these seem to be in direct opposition.</p>--<p>i'm looking for what is described by the header on your kickstarter page. i assume your backers are looking for the the same thing (a self hosted DropBox). for my use, dropbox is perfect, except for the fact that i have to pay a monthly fee to store my data on someone else's server when i would like to buy my own storage medium and run some open source dropbox clone on my own server.</p>--<p>can you explain more clearly what dropbox features your project lacks (/will lack)? and why where is a difference between your fundraising page and this one?</p>--<p>maybe i'm just confused by the difference between git-annex and git-annex assistant. does git-annex assistant truely aim to be a dropbox clone?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=l3iggs&amp;do=goto">l3iggs</a>--</span>---&mdash; <span class="date">Sat Feb  2 23:57:05 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-113deea37a98fdc1f1ad59333c9f2dd4">----<div class="comment-subject">--<a href="/not.html#comment-113deea37a98fdc1f1ad59333c9f2dd4">comment 8</a>--</div>--<div class="inlinecontent">-<p>It's pretty much exactly what he said:</p>--<blockquote><p>git-annex is not a filesystem or DropBox clone. However, the git-annex assistant is addressing some of the same needs in its own unique ways.</p></blockquote>--<p>The git-annex assistant is not exactly like DropBox; it's not a drop-in replacement that works exactly the way dropbox works.  But as it stands, right now, it can (like Dropbox) run in the background and make sure that all of your files in a special directory are mirrored to another place (a USB drive, or a server to which you have SSH access, or another computer on your home network, or another computer somewhere else which has access to the same USB drive from time to time, or has accesss to the same SSH server or S3 repository or....</p>--<p>It works as is but is still under heavy development and features are being added rapidly.  For example, up until a month or two ago, the files in your annex were replaced with softlinks whose content resided in a hidden directory. This caused some problems esp. on OS X where native programs don't handle softlinked files very gracefully. So Joey added an entirely new way of operating called "direct mode" which uses ordinary files, much like Dropbox does.</p>--<p>So -- what you should expect from git-annex assistant is a program which solves many of the same problems Dropbox does (keeping a set of files magically in sync across computers) but does it in its own way, which won't be <em>exactly</em> like Dropbox; it will be more flexible but might require a little learning to figure out exactly how to use it the way you want.  It's possible to get a very Dropbox-like system out of the box, especially now that you don't need to use softlinks, if you've got a place on the network you can use as a central remote repository for your files, or if you only want to synchronize two or more computers on the same local network.</p>--<p>"git-annex" itself is the plumbing used by git-annex assistant, or to put it another way, the engine that the assistant has under the hood.  Git-annex itself is extremely simple and stable but should only be used by people already familiar with the command line, perhaps even people already familiar with git.</p>--<p>That's my point of view as an enthusiastic user.  Joey may have his own perspective to share. :)</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>-</span>---&mdash; <span class="date">Sun Feb  3 23:17:06 2013</span>-</div>----<div style="clear: both"></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="./links/other_stuff.html">links/other stuff</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Nov 26 16:32:05 2012</span>-<!-- Created <span class="date">Mon Nov 26 16:32:05 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/preferred_content.html
@@ -1,607 +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>preferred 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>/ --</span>-<span class="title">-preferred content--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex tries to ensure that the configured number of <a href="./copies.html">copies</a> of your-data always exist, and leaves it up to you to use commands like <code>git annex-get</code> and <code>git annex drop</code> to move the content to the repositories you want-to contain it. But sometimes, it can be good to have more fine-grained-control over which repositories prefer to have which content. Configuring-this allows <code>git annex get --auto</code>, <code>git annex drop --auto</code>, etc to do-smarter things.</p>--<p>Currently, preferred content settings can only be edited using <code>git-annex vicfg</code>. Each repository can have its own settings, and other-repositories may also try to honor those settings. So there's no local-<code>.git/config</code> setting it.</p>--<p>The idea is that you write an expression that files are matched against.-If a file matches, it's preferred to have its content stored in the-repository. If it doesn't, it's preferred to drop its content from-the repository (if there are enough copies elsewhere).</p>--<p>The expressions are very similar to the file matching options documented-on the <a href="./git-annex.html">git-annex</a> man page. At the command line, you can use those-options in commands like this:</p>--<pre><code>git annex get --include='*.mp3' --and -'(' --not --largerthan=100mb -')'-</code></pre>--<p>The equivilant preferred content expression looks like this:</p>--<pre><code>include=*.mp3 and (not largerthan=100mb)-</code></pre>--<p>So, just remove the dashes, basically. However, there are some differences-from the command line options to keep in mind:</p>--<h3>difference: file matching</h3>--<p>While --include and --exclude match files relative to the current-directory, preferred content expressions always match files relative to the-top of the git repository. Perhaps you put files into <code>archive</code> directories-when you're done with them. Then you could configure your laptop to prefer-to not retain those files, like this:</p>--<pre><code>exclude=*/archive/*-</code></pre>--<h3>difference: no "in="</h3>--<p>Preferred content expressions have no direct equivilant to <code>--in</code>.</p>--<p>Often, it's best to add repositories to groups, and match against-the groups in a preferred content expression. So rather than-<code>--in=usbdrive</code>, put all the USB drives into a "transfer" group,-and use "copies=transfer:1"</p>--<h3>difference: dropping</h3>--<p>To decide if content should be dropped, git-annex evaluates the preferred-content expression under the assumption that the content has <em>already</em> been-dropped. If the content would not be preferred then, the drop can be done.-So, for example, <code>copies=2</code> in a preferred content expression lets-content be dropped only when there are currently 3 copies of it, including-the repo it's being dropped from. This is different than running <code>git annex-drop --copies=2</code>, which will drop files that currently have 2 copies.</p>--<h3>difference: "present"</h3>--<p>There's a special "present" keyword you can use in a preferred content-expression. This means that content is preferred if it's present,-and not otherwise. This leaves it up to you to use git-annex manually-to move content around. You can use this to avoid preferred content-settings from affecting a subdirectory. For example:</p>--<pre><code>auto/* or (include=ad-hoc/* and present)-</code></pre>--<p>Note that <code>not present</code> is a very bad thing to put in a preferred content-expression. It'll make it prefer to get content that's not present, and-drop content that is present! Don't go there..</p>--<h2>standard expressions</h2>--<p>git-annex comes with some standard preferred content expressions, that can-be used with repositories that are in some pre-defined groups. To make a-repository use one of these, just set its preferred content expression-to "standard", and put it in one of these groups.</p>--<p>(Note that most of these standard expressions also make the repository-prefer any content that is only currently available on untrusted and-dead repositories. So if an untrusted repository gets connected,-any repository that can will back it up.)</p>--<h3>client</h3>--<p>All content is preferred, unless it's for a file in a "archive" directory,-which has reached an archive repository.</p>--<p><code>((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) or (not copies=semitrusted+:1)</code></p>--<h3>transfer</h3>--<p>Use for repositories that are used to transfer data between other-repositories, but do not need to retain data themselves. For-example, a repository on a server, or in the cloud, or a small-USB drive used in a sneakernet.</p>--<p>The preferred content expression for these causes them to get and retain-data until all clients have a copy.</p>--<p><code>(not (inallgroup=client and copies=client:2) and ($client)</code></p>--<p>The "copies=client:2" part of the above handles the case where-there is only one client repository. It makes a transfer repository-speculatively  prefer content in this case, even though it as of yet-has nowhere to transfer it to. Presumably, another client repository-will be added later.</p>--<h3>backup</h3>--<p>All content is preferred.</p>--<p><code>include=*</code></p>--<h3>incremental backup</h3>--<p>Only prefers content that's not already backed up to another backup-or incremental backup repository.</p>--<p><code>(include=* and (not copies=backup:1) and (not copies=incrementalbackup:1)) or (not copies=semitrusted+:1)</code></p>--<h3>small archive</h3>--<p>Only prefers content that's located in an "archive" directory, and-only if it's not already been archived somewhere else.</p>--<p><code>((include=*/archive/* or include=archive/*) and not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted+:1)</code></p>--<h3>full archive</h3>--<p>All content is preferred, unless it's already been archived somewhere else.</p>--<p><code>(not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted+:1)</code></p>--<p>Note that if you want to archive multiple copies (not a bad idea!),-you should instead configure all your archive repositories with a-version of the above preferred content expression with a larger-number of copies.</p>--<h3>source</h3>--<p>Use for repositories where files are often added, but that do not need to-retain files for local use. For example, a repository on a camera, where-it's desirable to remove photos as soon as they're transferred elsewhere.</p>--<p>The preferred content expression for these causes them to only retain-data until a copy has been sent to some other repository.</p>--<p><code>not (copies=1)</code></p>--<h3>manual</h3>--<p>This gives you nearly full manual control over what content is stored in the-repository. This allows using the <a href="./assistant.html">assistant</a> without it trying to keep a-local copy of every file. Instead, you can manually run <code>git annex get</code>,-<code>git annex drop</code>, etc to manage content. Only content that is present-is preferred.</p>--<p>The exception to this manual control is that content that a client-repository would not want is not preferred. So, files in archive-directories are not preferred once their content has-reached an archive repository.</p>--<p><code>present and ($client)</code></p>--<h3>unwanted</h3>--<p>Use for repositories that you don't want to exist. This will result-in any content on them being moved away to other repositories. (Works-best when the unwanted repository is also marked as untrusted or dead.)</p>--<p><code>exclude=*</code></p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-7aa7f7b86e46f2d985d49cc199f4df8c">----<div class="comment-subject">--<a href="/preferred_content.html#comment-7aa7f7b86e46f2d985d49cc199f4df8c">Interplay with numcopies</a>--</div>--<div class="inlinecontent">-<p>How does the preferred content settings interfere with the numcopies setting?</p>--<p>I could not get behind it. E.g. a case I do not unterstand:</p>--<p>I have a preferred setting evaluating to true and still</p>--<pre><code>git annex get --auto-</code></pre>--<p>does nothing, if the number of copies produced would surpass the numcopies setting.</p>--<p>Thx</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlgyVag95OnpvSzQofjyX0WjW__MOMKsl0">Sehr</a>-</span>---&mdash; <span class="date">Wed Dec  5 16:41:26 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-8a48857f456119600a50324c80c2f638">----<div class="comment-subject">--<a href="/preferred_content.html#comment-8a48857f456119600a50324c80c2f638">comment 2</a>--</div>--<div class="inlinecontent">-Yeah, that didn't make sense. I've fixed it, so it gets files if needed for either numcopies or preferred content.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Dec  6 13:24:29 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e2601538e739674cc274918ebeb2e6c4">----<div class="comment-subject">--<a href="/preferred_content.html#comment-e2601538e739674cc274918ebeb2e6c4">comment 4</a>--</div>--<div class="inlinecontent">-<p>Built a new copy of git-annex yesterday.  I have a "client" on my macbook, and two "backup"s, one on an external HD, one on an ssh git remote.</p>--<p>git annex get --auto works beautifully!</p>--<p>It doesn't seem to work for copying content <em>to</em> a place where it's needed, though.</p>--<p>If I drop a file from my "backup" USB drive, and then go back to my macbook and do a "git annex sync" and "git annex copy --to=usbdrive --auto" it does not send the file out to the USB drive, even though by preferred content settings, the USB drive should "want" the file because it's a backup drive and it wants all content.</p>--<p>Similarly, if I add a new file on my macbook and then do a "git annex copy --to=usbdrive auto" it does not get copied to the USB drive.</p>--<p>Is this missing functionality, or should the preferred content setting for remotes only affect the assistant?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>-</span>---&mdash; <span class="date">Fri Dec  7 16:24:18 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a669d042fd6f184e78e9798a738e9327">----<div class="comment-subject">--<a href="/preferred_content.html#comment-a669d042fd6f184e78e9798a738e9327">comment 4</a>--</div>--<div class="inlinecontent">-It was a bug in the backup group's preferred content pagespec, introduced by the changes I made to fix the previous problem. Now fixed.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Mon Dec 10 15:46:01 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5275886ac700e220459b5eccbfff274d">----<div class="comment-subject">--<a href="/preferred_content.html#comment-5275886ac700e220459b5eccbfff274d">comment 5</a>--</div>--<div class="inlinecontent">-thanks!--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>-</span>---&mdash; <span class="date">Tue Dec 11 12:03:04 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-b7ec0a480dc84c0cea60c9c005df30d4">----<div class="comment-subject">--<a href="/preferred_content.html#comment-b7ec0a480dc84c0cea60c9c005df30d4">comment 6</a>--</div>--<div class="inlinecontent">-<p>Is there a way to change these definitions for a given annex?</p>--<p>ie: in this repo make "client" mean</p>--<pre><code>present and exclude=*/archive/* and exclude=archive/*-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>-</span>---&mdash; <span class="date">Wed Jan  9 23:00:52 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c6afb7ede18e5b18a5135bf51962ce33">----<div class="comment-subject">--<a href="/preferred_content.html#comment-c6afb7ede18e5b18a5135bf51962ce33">comment 7</a>--</div>--<div class="inlinecontent">-Sorry, there's not. The expressions used for "standard" are built in.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Wed Jan  9 23:51:38 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-2f220f751e429dea031764b51d5e6133">----<div class="comment-subject">--<a href="/preferred_content.html#comment-2f220f751e429dea031764b51d5e6133">comment 8</a>--</div>--<div class="inlinecontent">-<p>By way of a feature request: Maybe the way to do this is to have an additional keyword like "config" or "repo" that allows you to use vicfg and/or git config to set alternative rules and even additional group names.</p>--<p>In git config:</p>--<pre><code>annex.groups.&lt;groupname&gt; = present and exclude=*/archive/* and exclude=archive/*-</code></pre>--<p>in vicfg:</p>--<pre><code># (for passport)-#trust A0637025-ED47-4F95-A887-346121F1B4A0 = semitrusted--# (for passport)-group A0637025-ED47-4F95-A887-346121F1B4A0 = transfer--# (for passport)-preferred-content A0637025-ED47-4F95-A887-346121F1B4A0 = repo--# (for transfer)-group-content transfer = present and exclude=*/archive/* and exclude=archive/*-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>-</span>---&mdash; <span class="date">Thu Jan 10 06:24:28 2013</span>-</div>----<div style="clear: both"></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="./walkthrough/automatically_managing_content.html">walkthrough/automatically managing content</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Apr  6 20:34:22 2013</span>-<!-- Created <span class="date">Sat Apr  6 20:34:22 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/related_software.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>related software</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">-related software--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Some folks have built other software on top of git-annex, or that is-designed to interoperate with it.</p>--<ul>-<li>The <a href="./assistant.html">git-annex assistant</a> is included in git-annex,-and extends its use cases into new territory.</li>-<li><a href="https://github.com/rubiojr/git-annex-watcher">git-annex-watcher</a>-is a status icon for your desktop.</li>-<li><span class="createlink">gadu - git-annex disk usage</span> is a du like utility that-is git-annex aware.</li>-<li><a href="http://hackage.haskell.org/package/sizes">sizes</a> is another du-like-utility, with a <code>-A</code> switch that enables git-annex support.</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="./links/other_stuff.html">links/other stuff</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Wed Jan 16 16:32:56 2013</span>-<!-- Created <span class="date">Wed Jan 16 16:32:56 2013</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/scalability.html
@@ -1,171 +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>scalability</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">-scalability--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex is designed for scalability. The key points are:</p>--<ul>-<li><p>Arbitrarily large files can be managed. The only constraint-on file size are how large a file your filesystem can hold.</p>--<p>While git-annex does checksum files by default, there-is a <a href="./backends.html">WORM backend</a> available that avoids the checksumming-overhead, so you can add new, enormous files, very fast. This also-allows it to be used on systems with very slow disk IO.</p></li>-<li><p>Memory usage should be constant. This is a "should", because there-can sometimes be leaks (and this is one of haskell's weak spots),-but git-annex is designed so that it does not need to hold all-the details about your repository in memory.</p>--<p>The one exception is that <span class="createlink">git-annex unused eats memory</span>,-because it <em>does</em> need to hold the whole repo state in memory. But-that is still considered a bug, and hoped to be solved one day.-Luckily, that command is not often used.</p></li>-<li><p>Many files can be managed. The limiting factor is git's own-limitations in scaling to repositories with a lot of files, and as git-improves this will improve. Scaling to hundreds of thousands of files-is not a problem, scaling beyond that and git will start to get slow.</p>--<p>To some degree, git-annex works around inefficiencies in git; for-example it batches input sent to certain git commands that are slow-when run in an enormous repository.</p></li>-<li><p>It can use as much, or as little bandwidth as is available. In-particular, any interrupted file transfer can be resumed by git-annex.</p></li>-</ul>---<h2>scalability tips</h2>--<ul>-<li><p>If the files are so big that checksumming becomes a bottleneck, consider-using the <a href="./backends.html">WORM backend</a>. You can always <code>git annex migrate</code>-files to a checksumming backend later on.</p></li>-<li><p>If you're adding a huge number of files at once (hundreds of thousands),-you'll soon notice that git-annex periodically stops and say-"Recording state in git" while it runs a <code>git add</code> command that-becomes increasingly expensive. Consider adjusting the <code>annex.queuesize</code>-to a higher value, at the expense of it using more memory.</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="./links/the_details.html">links/the details</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Dec  9 18:31:02 2012</span>-<!-- Created <span class="date">Sun Dec  9 18:31:02 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/sidebar.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>sidebar</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">-sidebar--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Mon Mar 11 19:30:38 2013</span>-<!-- Created <span class="date">Mon Mar 11 19:30:38 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/sitemap.html
@@ -1,427 +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>sitemap</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">-sitemap--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<div class="map">-<ul>-<li><a href="./assistant.html" class="mapitem">assistant</a>-<ul>-<li><a href="./assistant/archival_walkthrough.html" class="mapitem">archival walkthrough</a>-</li>-<li><a href="./assistant/local_pairing_walkthrough.html" class="mapitem">local pairing walkthrough</a>-</li>-<li><a href="./assistant/quickstart.html" class="mapitem">quickstart</a>-</li>-<li><a href="./assistant/release_notes.html" class="mapitem">release notes</a>-</li>-<li><a href="./assistant/remote_sharing_walkthrough.html" class="mapitem">remote sharing walkthrough</a>-</li>-<li><a href="./assistant/share_with_a_friend_walkthrough.html" class="mapitem">share with a friend walkthrough</a>-</li>-<li><a href="./assistant/thanks.html" class="mapitem">thanks</a>-</li>-</ul>-</li>-<li><a href="./backends.html" class="mapitem">backends</a>-</li>-<li><a href="./bare_repositories.html" class="mapitem">bare repositories</a>-</li>-<li><a href="./coding_style.html" class="mapitem">coding style</a>-</li>-<li><a href="./comments.html" class="mapitem">comments</a>-</li>-<li><a href="./contact.html" class="mapitem">contact</a>-</li>-<li><a href="./copies.html" class="mapitem">copies</a>-</li>-<li><a href="./design.html" class="mapitem">design</a>-<ul>-<li><a href="./design/assistant.html" class="mapitem">assistant</a>-<ul>-<li><a href="./design/assistant/OSX.html" class="mapitem">OSX</a>-</li>-<li><a href="./design/assistant/android.html" class="mapitem">android</a>-</li>-<li><a href="./design/assistant/cloud.html" class="mapitem">cloud</a>-</li>-<li><a href="./design/assistant/configurators.html" class="mapitem">configurators</a>-</li>-<li><a href="./design/assistant/deltas.html" class="mapitem">deltas</a>-</li>-<li><a href="./design/assistant/desymlink.html" class="mapitem">desymlink</a>-</li>-<li><a href="./design/assistant/encrypted_git_remotes.html" class="mapitem">encrypted git remotes</a>-</li>-<li><a href="./design/assistant/inotify.html" class="mapitem">inotify</a>-</li>-<li><a href="./design/assistant/leftovers.html" class="mapitem">leftovers</a>-</li>-<li><a href="./design/assistant/more_cloud_providers.html" class="mapitem">more cloud providers</a>-</li>-<li><a href="./design/assistant/pairing.html" class="mapitem">pairing</a>-</li>-<li><a href="./design/assistant/partial_content.html" class="mapitem">partial content</a>-</li>-<li><a href="./design/assistant/polls.html" class="mapitem">polls</a>-<ul>-<li><a href="./design/assistant/polls/Android.html" class="mapitem">Android</a>-</li>-<li><a href="./design/assistant/polls/goals_for_April.html" class="mapitem">goals for April</a>-</li>-<li><a href="./design/assistant/polls/prioritizing_special_remotes.html" class="mapitem">prioritizing special remotes</a>-</li>-<li><a href="./design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html" class="mapitem">what is preventing me from using git-annex assistant</a>-</li>-</ul>-</li>-<li><a href="./design/assistant/progressbars.html" class="mapitem">progressbars</a>-</li>-<li><a href="./design/assistant/rate_limiting.html" class="mapitem">rate limiting</a>-</li>-<li><a href="./design/assistant/syncing.html" class="mapitem">syncing</a>-</li>-<li><a href="./design/assistant/transfer_control.html" class="mapitem">transfer control</a>-</li>-<li><a href="./design/assistant/webapp.html" class="mapitem">webapp</a>-</li>-<li><a href="./design/assistant/windows.html" class="mapitem">windows</a>-</li>-<li><a href="./design/assistant/xmpp.html" class="mapitem">xmpp</a>-</li>-</ul>-</li>-<li><a href="./design/encryption.html" class="mapitem">encryption</a>-</li>-</ul>-</li>-<li><a href="./direct_mode.html" class="mapitem">direct mode</a>-</li>-<li><a href="./distributed_version_control.html" class="mapitem">distributed version control</a>-</li>-<li><a href="./download.html" class="mapitem">download</a>-</li>-<li><a href="./encryption.html" class="mapitem">encryption</a>-</li>-<li><a href="./feeds.html" class="mapitem">feeds</a>-<li><span class="createlink">footer</span>-<ul>-</li>-<li><a href="./footer/column_a.html" class="mapitem">column a</a>-</li>-<li><a href="./footer/column_b.html" class="mapitem">column b</a>-</li>-</ul>-</li>-<li><a href="./future_proofing.html" class="mapitem">future proofing</a>-</li>-<li><a href="./git-annex.html" class="mapitem">git-annex</a>-</li>-<li><a href="./git-annex-shell.html" class="mapitem">git-annex-shell</a>-</li>-<li><a href="./git-union-merge.html" class="mapitem">git-union-merge</a>-</li>-<li><a href="./how_it_works.html" class="mapitem">how it works</a>-</li>-<li><a href="./index.html" class="mapitem">index</a>-</li>-<li><a href="./install.html" class="mapitem">install</a>-<ul>-<li><a href="./install/Android.html" class="mapitem">Android</a>-</li>-<li><a href="./install/ArchLinux.html" class="mapitem">ArchLinux</a>-</li>-<li><a href="./install/Debian.html" class="mapitem">Debian</a>-</li>-<li><a href="./install/Fedora.html" class="mapitem">Fedora</a>-</li>-<li><a href="./install/FreeBSD.html" class="mapitem">FreeBSD</a>-</li>-<li><a href="./install/Gentoo.html" class="mapitem">Gentoo</a>-</li>-<li><a href="./install/Linux_standalone.html" class="mapitem">Linux standalone</a>-</li>-<li><a href="./install/NixOS.html" class="mapitem">NixOS</a>-</li>-<li><a href="./install/OSX.html" class="mapitem">OSX</a>-<ul>-<li><a href="./install/OSX/old_comments.html" class="mapitem">old comments</a>-</li>-</ul>-</li>-<li><a href="./install/ScientificLinux5.html" class="mapitem">ScientificLinux5</a>-</li>-<li><a href="./install/Ubuntu.html" class="mapitem">Ubuntu</a>-</li>-<li><a href="./install/cabal.html" class="mapitem">cabal</a>-</li>-<li><a href="./install/fromscratch.html" class="mapitem">fromscratch</a>-</li>-<li><a href="./install/openSUSE.html" class="mapitem">openSUSE</a>-</li>-</ul>-</li>-<li><a href="./internals.html" class="mapitem">internals</a>-<ul>-<li><a href="./internals/hashing.html" class="mapitem">hashing</a>-</li>-<li><a href="./internals/key_format.html" class="mapitem">key format</a>-</li>-</ul>-</li>-<li><a href="./license.html" class="mapitem">license</a>-<li><span class="createlink">links</span>-<ul>-</li>-<li><a href="./links/key_concepts.html" class="mapitem">key concepts</a>-</li>-<li><a href="./links/other_stuff.html" class="mapitem">other stuff</a>-</li>-<li><a href="./links/the_details.html" class="mapitem">the details</a>-</li>-</ul>-</li>-<li><a href="./location_tracking.html" class="mapitem">location tracking</a>-</li>-<li><a href="./meta.html" class="mapitem">meta</a>-</li>-<li><a href="./news.html" class="mapitem">news</a>-</li>-<li><a href="./not.html" class="mapitem">not</a>-</li>-<li><a href="./preferred_content.html" class="mapitem">preferred content</a>-</li>-<li><a href="./related_software.html" class="mapitem">related software</a>-</li>-<li><a href="./scalability.html" class="mapitem">scalability</a>-</li>-<li><a href="./sidebar.html" class="mapitem">sidebar</a>-</li>-<li><span class="selflink">sitemap</span>-</li>-<li><a href="./special_remotes.html" class="mapitem">special remotes</a>-<ul>-<li><a href="./special_remotes/S3.html" class="mapitem">S3</a>-</li>-<li><a href="./special_remotes/bup.html" class="mapitem">bup</a>-</li>-<li><a href="./special_remotes/directory.html" class="mapitem">directory</a>-</li>-<li><a href="./special_remotes/glacier.html" class="mapitem">glacier</a>-</li>-<li><a href="./special_remotes/hook.html" class="mapitem">hook</a>-</li>-<li><a href="./special_remotes/rsync.html" class="mapitem">rsync</a>-</li>-<li><a href="./special_remotes/web.html" class="mapitem">web</a>-</li>-<li><a href="./special_remotes/webdav.html" class="mapitem">webdav</a>-</li>-<li><a href="./special_remotes/xmpp.html" class="mapitem">xmpp</a>-</li>-</ul>-</li>-<li><a href="./summary.html" class="mapitem">summary</a>-</li>-<li><a href="./sync.html" class="mapitem">sync</a>-<li><span class="createlink">templates</span>-<ul>-</li>-<li><a href="./templates/bugtemplate.html" class="mapitem">bugtemplate</a>-</li>-</ul>-</li>-<li><a href="./testimonials.html" class="mapitem">testimonials</a>-</li>-<li><a href="./tips.html" class="mapitem">tips</a>-</li>-<li><a href="./transferring_data.html" class="mapitem">transferring data</a>-</li>-<li><a href="./trust.html" class="mapitem">trust</a>-</li>-<li><a href="./upgrades.html" class="mapitem">upgrades</a>-<ul>-<li><a href="./upgrades/SHA_size.html" class="mapitem">SHA size</a>-</li>-</ul>-<li><span class="createlink">use case</span>-<ul>-</li>-<li><a href="./use_case/Alice.html" class="mapitem">Alice</a>-</li>-<li><a href="./use_case/Bob.html" class="mapitem">Bob</a>-</li>-</ul>-</li>-<li><a href="./users.html" class="mapitem">users</a>-</li>-<li><a href="./videos.html" class="mapitem">videos</a>-</li>-<li><a href="./walkthrough.html" class="mapitem">walkthrough</a>-<ul>-<li><a href="./walkthrough/adding_a_remote.html" class="mapitem">adding a remote</a>-</li>-<li><a href="./walkthrough/adding_files.html" class="mapitem">adding files</a>-</li>-<li><a href="./walkthrough/automatically_managing_content.html" class="mapitem">automatically managing content</a>-</li>-<li><a href="./walkthrough/backups.html" class="mapitem">backups</a>-</li>-<li><a href="./walkthrough/creating_a_repository.html" class="mapitem">creating a repository</a>-</li>-<li><a href="./walkthrough/fsck:_verifying_your_data.html" class="mapitem">fsck: verifying your data</a>-</li>-<li><a href="./walkthrough/fsck:_when_things_go_wrong.html" class="mapitem">fsck: when things go wrong</a>-</li>-<li><a href="./walkthrough/getting_file_content.html" class="mapitem">getting file content</a>-</li>-<li><a href="./walkthrough/modifying_annexed_files.html" class="mapitem">modifying annexed files</a>-</li>-<li><a href="./walkthrough/more.html" class="mapitem">more</a>-</li>-<li><a href="./walkthrough/moving_file_content_between_repositories.html" class="mapitem">moving file content between repositories</a>-</li>-<li><a href="./walkthrough/removing_files.html" class="mapitem">removing files</a>-</li>-<li><a href="./walkthrough/removing_files:_When_things_go_wrong.html" class="mapitem">removing files: When things go wrong</a>-</li>-<li><a href="./walkthrough/renaming_files.html" class="mapitem">renaming files</a>-</li>-<li><a href="./walkthrough/syncing.html" class="mapitem">syncing</a>-</li>-<li><a href="./walkthrough/transferring_files:_When_things_go_wrong.html" class="mapitem">transferring files: When things go wrong</a>-</li>-<li><a href="./walkthrough/unused_data.html" class="mapitem">unused data</a>-</li>-<li><a href="./walkthrough/using_bup.html" class="mapitem">using bup</a>-</li>-<li><a href="./walkthrough/using_ssh_remotes.html" class="mapitem">using ssh remotes</a>-</li>-</ul>-</li>-</ul>-</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="./links/other_stuff.html">links/other stuff</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Mar 11 20:34:04 2013</span>-<!-- Created <span class="date">Mon Mar 11 20:34:04 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes.html
@@ -1,573 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>git-annex 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/glacier.html">Amazon Glacier</a></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/webdav.html">webdav</a></li>-<li><a href="./special_remotes/web.html">web</a></li>-<li><a href="./special_remotes/xmpp.html">xmpp</a></li>-<li><a href="./special_remotes/hook.html">hook</a></li>-</ul>---<p>The above special remotes can be used to tie git-annex-into many cloud services. Here are specific instructions-for various cloud things:</p>--<ul>-<li><a href="./tips/using_Amazon_S3.html">using Amazon S3</a></li>-<li><a href="./tips/using_Amazon_Glacier.html">using Amazon Glacier</a></li>-<li><a href="./tips/Internet_Archive_via_S3.html">Internet Archive via S3</a></li>-<li><span class="createlink">tahoe-lafs</span></li>-<li><a href="./tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a></li>-<li><span class="createlink">special remote for IMAP</span></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>$ 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)-$ git annex dropunused --from mys3 1-dropunused 12948 (from mys3...) ok-</code></pre>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-f1021e7fb1ba30235004bab75f81104a">----<div class="comment-subject">--<a href="/special_remotes.html#comment-f1021e7fb1ba30235004bab75f81104a">MediaFire</a>--</div>--<div class="inlinecontent">-MediaFire offers 50GB of free storage (max size 200MB). It would be great to support it as a new special remote.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8">Jon Ander</a>-</span>---&mdash; <span class="date">Thu Jan 17 08:17:54 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-f3effaa58c166dcc041a25405710e882">----<div class="comment-subject">--<a href="/special_remotes.html#comment-f3effaa58c166dcc041a25405710e882">comment 2</a>--</div>--<div class="inlinecontent">-Mediafire does not appear to offer any kind of API for its storage.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Jan 17 12:44:25 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-31e23b0e9a5c50eb6ef98c6617b29fa9">----<div class="comment-subject">--<a href="/special_remotes.html#comment-31e23b0e9a5c50eb6ef98c6617b29fa9">MediaFire REST API</a>--</div>--<div class="inlinecontent">-Wouldn't this be enough? http://developers.mediafire.com/index.php/REST_API--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8">Jon Ander</a>-</span>---&mdash; <span class="date">Thu Jan 17 12:53:41 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-b8f280b34a06a44750b66072ac845b05">----<div class="comment-subject">--<a href="/special_remotes.html#comment-b8f280b34a06a44750b66072ac845b05">JABOF special remote</a>--</div>--<div class="inlinecontent">-<p>Similar to a JABOD, this would be Just A Bunch Of Files. I already have a NAS with a file structure conducive to serving media to my TV. However, it's not capable (currently) of running git-annex locally. It would be great to be able to tell annex the path to a file there as a remote much like a web remote from "git annex addurl". That way I can safely drop all the files I took with me on my trip, while annex still verifies and counts the file on the NAS as a location.</p>--<p>There are some interesting things to figure out for this to be efficient. For example, SHAs of the files. Maybe store that in a metadata file in the directory of the files? Or perhaps use the WORM backend by default?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>-</span>---&mdash; <span class="date">Sat Jan 19 04:34:32 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-0b407b8fe22081799d0a62b6ff310897">----<div class="comment-subject">--<a href="/special_remotes.html#comment-0b407b8fe22081799d0a62b6ff310897">comment 5</a>--</div>--<div class="inlinecontent">-The web special remote is recently able to use file:// URL's, so you can just point to files on some arbitrary storage if you want to.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Jan 19 12:05:13 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-b7ca8f0707188bb455c1deb542b404be">----<div class="comment-subject">--<a href="/special_remotes.html#comment-b7ca8f0707188bb455c1deb542b404be">Rackspace US/UK</a>--</div>--<div class="inlinecontent">-It'd be awesome to be able to use Rackspace as remote storage as an alternative to S3, I would submit a patch, but know 0 Haskell :D--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlBia1J9-PoXgZYj2LASf7Bs__IqK3T8qQ">Greg</a>-</span>---&mdash; <span class="date">Wed Jan 30 07:33:12 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-60556d1f805cf5682d0dfaeee07463d6">----<div class="comment-subject">--<a href="/special_remotes.html#comment-60556d1f805cf5682d0dfaeee07463d6">Rapidshare</a>--</div>--<div class="inlinecontent">-<p>Would it be possible to support Rapidshare as a new special remote?-They offer unlimited storage for 6-10€ per month. It would be great for larger backups.-Their API can be found here: http://images.rapidshare.com/apidoc.txt</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawn-UoTjMBsVh6q4HNViGwJi-5FNaCVQB7E">Nico</a>-</span>---&mdash; <span class="date">Sat Feb  2 12:49:58 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-5d059e69f65ebdf284be57fe4fcda77b">----<div class="comment-subject">--<a href="/special_remotes.html#comment-5d059e69f65ebdf284be57fe4fcda77b">&#x27;webhook&#x27; special remote?</a>--</div>--<div class="inlinecontent">-<p>Is there any chance a special remote that functions like a hybrid of 'web' and 'hook'? At least in theory, it should be relatively simple, since it would only support 'get' and the only meaningful parameters to pass would be the URL and the output file name.</p>--<p>Maybe make it something like git config annex.myprogram-webhook 'myprogram $ANNEX_URL $ANNEX_FILE', and fetching could work by adding a --handler or --type parameter to addurl.</p>--<p>The use case here is anywhere that simple 'fetch the file over HTTP/FTP/etc' isn't workable - maybe it's on rapidshare and you need to use plowshare to download it; maybe it's a youtube video and you want to use youtube-dl, maybe it's a chapter of a manga and you want to turn it into a CBZ file when you fetch it.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY">Alex</a>-</span>---&mdash; <span class="date">Sun Feb 24 11:05:27 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-59648c5eed99b8979c1c70ee90c09f0e">----<div class="comment-subject">--<a href="/special_remotes.html#comment-59648c5eed99b8979c1c70ee90c09f0e">comment 9</a>--</div>--<div class="inlinecontent">-A <em>ridiculously</em> cool possibility would be to allow them to match against URLs and then handle those (youtube-dl for youtube video URLs, for instance), but that would be additional work on your end and isn't really necessary.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY">Alex</a>-</span>---&mdash; <span class="date">Sun Feb 24 11:13:16 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-6fb4c73a17f84bcf38cc9ebf164090a8">----<div class="comment-subject">--<a href="/special_remotes.html#comment-6fb4c73a17f84bcf38cc9ebf164090a8">Rackspace Cloud Files support</a>--</div>--<div class="inlinecontent">-It'd be really cool to have Rackspace cloud files support. Like the guy above me said, I would submit a patch but not if I have to learn Haskell first :)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkQqKSVY98PVGDIaYZdK9CodJdbh7cFfhY">Ashwin</a>-</span>---&mdash; <span class="date">Fri Mar 22 04:20:40 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-18ee66a322dee292bddd66916c68ddb5">----<div class="comment-subject">--<a href="/special_remotes.html#comment-18ee66a322dee292bddd66916c68ddb5">Re: Webhook special remote</a>--</div>--<div class="inlinecontent">-@Alex: You might see if the newly-added <span class="createlink">wishlist: allow configuration of downloader for addurl</span> could be made to do what you need... I've not played around with it yet, but perhaps you could set the downloader to be something that can sort out the various URLs and send them to the correct downloading tool?--</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=andy&amp;do=goto">andy</a>--</span>---&mdash; <span class="date">Fri Apr 12 04:54:47 2013</span>-</div>----<div style="clear: both"></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="./backends/comment_2_1f2626eca9004b31a0b7fc1a0df8027b.html">backends/comment 2 1f2626eca9004b31a0b7fc1a0df8027b</a>--<a href="./copies.html">copies</a>--<a href="./design/assistant/more_cloud_providers.html">design/assistant/more cloud providers</a>--<a href="./design/assistant/polls/prioritizing_special_remotes.html">design/assistant/polls/prioritizing special remotes</a>--<a href="./encryption.html">encryption</a>--<a href="./how_it_works.html">how it works</a>--<a href="./internals.html">internals</a>--<a href="./links/key_concepts.html">links/key concepts</a>--<a href="./special_remotes/rsync/comment_2_25545dc0b53f09ae73b29899c8884b02.html">special remotes/rsync/comment 2 25545dc0b53f09ae73b29899c8884b02</a>--<a href="./tips/using_Amazon_S3.html">tips/using Amazon S3</a>---<span class="popup">...-<span class="balloon">--<a href="./tips/using_box.com_as_a_special_remote.html">tips/using box.com as a special remote</a>--<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</a>--<a href="./transferring_data.html">transferring data</a>--<a href="./use_case/Alice.html">use case/Alice</a>--<a href="./walkthrough/modifying_annexed_files/comment_1_624b4a0b521b553d68ab6049f7dbaf8c.html">walkthrough/modifying annexed files/comment 1 624b4a0b521b553d68ab6049f7dbaf8c</a>--<a href="./walkthrough/using_bup.html">walkthrough/using bup</a>--</span>-</span>--</div>-------<div class="pagedate">-Last edited <span class="date">Sun Mar 24 09:31:31 2013</span>-<!-- Created <span class="date">Sun Mar 24 09:31:31 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/S3.html
@@ -1,451 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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="../tips/using_Amazon_S3.html">using Amazon S3</a> and-<a href="../tips/Internet_Archive_via_S3.html">Internet Archive via S3</a> for usage examples.</p>--<h2>configuration</h2>--<p>The standard environment variables <code>AWS_ACCESS_KEY_ID</code> and-<code>AWS_SECRET_ACCESS_KEY</code> are used to supply login credentials-for Amazon. You need to set these only when running-<code>git annex initremote</code>, as they will be cached in a file only you-can read inside the local git repository.</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, or "shared" which allows-every clone of the repository to access the encrypted data (use with caution).</p>--<p>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>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside-the git repository, which allows other clones to also access them. This is-the default when gpg encryption is enabled; the credentials are stored-encrypted and only those with the repository's keys can access them.</p>--<p>It is not the default when using shared encryption, or no encryption.-Think carefully about who can access your repository before using-embedcreds without gpg encryption.</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>fileprefix</code> - By default, git-annex places files in a tree rooted at the-top of the S3 bucket. When this is set, it's prefixed to the filenames-used. For example, you could set it to "foo/" in one special remote,-and to "bar/" in another special remote, and both special remotes could-then use the same bucket.</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="feedlink">---</div>-<div class="comment" id="comment-e78d09fa4f81e60b0a5bbe36d8b16e5f">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-e78d09fa4f81e60b0a5bbe36d8b16e5f">environment variables</a>--</div>--<div class="inlinecontent">-Just noting that the environment variables <code>ANNEX_S3_ACCESS_KEY_ID</code> and <code>ANNEX_S3_SECRET_ACCESS_KEY</code> seem to have been changed to <code>AWS_ACCESS_KEY_ID</code> and <code>AWS_SECRET_ACCESS_KEY</code>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>-</span>---&mdash; <span class="date">Tue May 29 08:40:25 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-bc9f8e8cc2d8fd72e5b6518798f0ebfc">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-bc9f8e8cc2d8fd72e5b6518798f0ebfc">comment 2</a>--</div>--<div class="inlinecontent">-Thanks, I've fixed that. (You could have too.. this is a wiki ;)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue May 29 15:10:46 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-286cccd33f418b14269c9cb2701dbaf2">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-286cccd33f418b14269c9cb2701dbaf2">comment 3</a>--</div>--<div class="inlinecontent">-Thanks! Being new here, I didn't want to overstep my boundaries. I've gone ahead and made a small edit and will do so elsewhere as needed.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>-</span>---&mdash; <span class="date">Tue May 29 20:26:33 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-222c50147c35ecbc819e1834cb6f6860">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-222c50147c35ecbc819e1834cb6f6860">bucket/folder s3 remotes</a>--</div>--<div class="inlinecontent">-<p>it'd be really nice being able to configure a S3 remote of the form <code>&lt;bucket&gt;/&lt;folder&gt;</code> (not really a folder, of course, just the usual prefix trick used to simulate folders at S3). The remote = bucket architecture is not scalable at all, in terms of number of repositories.</p>--<p>how hard would it be to support this?</p>--<p>thanks, this is the only thing that's holding us back from using git-annex, nice tool!</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmX5gPNK35Dub-HzR0Yb3KXllbqc0rYRYs">Eduardo</a>-</span>---&mdash; <span class="date">Thu Aug  9 06:52:07 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-1109d3fda1d755925bfac275335a7cb8">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-1109d3fda1d755925bfac275335a7cb8">comment 5</a>--</div>--<div class="inlinecontent">-I guess this could be useful if you have a <em>lot</em> of buckets already in use at S3, or if you want to be able to have a lot of distinct S3 special remotes. Implemented the <code>fileprefix</code> setting. Note that I have not tested it, beyond checking it builds, since I let my S3 account expire. Your testing would be appreciated.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Aug  9 14:01:06 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-75f6b47cb9420e144121e759946f410c">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-75f6b47cb9420e144121e759946f410c">Rackspace Cloud Files support?</a>--</div>--<div class="inlinecontent">-<p>Any chance I could bribe you to setup Rackspace Cloud Files support?  We are using them and would hate to have a S3 bucket only for this.</p>--<p>https://github.com/rackspace/python-cloudfiles</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnY9ObrNrQuRp8Xs0XvdtJJssm5cp4NMZA">alan</a>-</span>---&mdash; <span class="date">Thu Aug 23 17:00:11 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-d3268047d1eff90564547c661cdea8a5">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-d3268047d1eff90564547c661cdea8a5">S3 Remote Future Proof?</a>--</div>--<div class="inlinecontent">-Joey, I'm curious to understand how future proof an S3 remote is.  Can I restore my files without git-annex?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc">Eric</a>-</span>---&mdash; <span class="date">Sun Jan 20 05:21:50 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e9d48ba37aa5b01c236ab894057660b7">----<div class="comment-subject">--<a href="/special_remotes/S3.html#comment-e9d48ba37aa5b01c236ab894057660b7">comment 8</a>--</div>--<div class="inlinecontent">-<p>If encryption is not used, the files are stored in S3 as-is, and can be accessed directly. They are stored in a hashed directory structure with the names of their key used, rather than the original filename. To get back to the original filename, a copy of the git repo would also be needed.</p>--<p>With encryption, you need the gpg key used in the encryption, or, for shared encryption, a symmetric key which is stored in the git repo.</p>--<p>See <a href="../future_proofing.html">future proofing</a> for non-S3 specific discussion of this topic.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sun Jan 20 16:37:09 2013</span>-</div>----<div style="clear: both"></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="../special_remotes.html">special remotes</a>--<a href="../tips/Internet_Archive_via_S3.html">tips/Internet Archive via S3</a>--<a href="../tips/using_Amazon_S3.html">tips/using Amazon S3</a>--<a href="../tips/using_Google_Cloud_Storage.html">tips/using Google Cloud Storage</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Nov 19 18:31:19 2012</span>-<!-- Created <span class="date">Mon Nov 19 18:31:19 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/bup.html
@@ -1,461 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in a-<a href="http://github.com/bup/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, or "shared" which allows-every clone of the repository to access the encrypted data (use with caution).</p>--<p>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="feedlink">---</div>-<div class="comment" id="comment-fcebb136f6078e006751a2bb398f72bd">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-fcebb136f6078e006751a2bb398f72bd">Error with bup and gnupg</a>--</div>--<div class="inlinecontent">-<p>Hello,</p>--<p>I get this error when trying to use git-annex with bup and gnupg:</p>--<pre>-move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) -Traceback (most recent call last):-  File "/usr/lib/bup/cmd/bup-split", line 133, in -    progress=prog)-  File "/usr/lib/bup/bup/hashsplit.py", line 167, in split_to_shalist-    for (sha,size,bits) in sl:-  File "/usr/lib/bup/bup/hashsplit.py", line 118, in _split_to_blobs-    for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):-  File "/usr/lib/bup/bup/hashsplit.py", line 86, in _hashsplit_iter-    bnew = next(fi)-  File "/usr/lib/bup/bup/helpers.py", line 86, in next-    return it.next()-  File "/usr/lib/bup/bup/hashsplit.py", line 49, in blobiter-    for filenum,f in enumerate(files):-  File "/usr/lib/bup/cmd/bup-split", line 128, in -    files = extra and (open(fn) for fn in extra) or [sys.stdin]-IOError: [Errno 2] No such file or directory: '-'-</pre>---<p>I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:</p>--<p>files = [sys.stdin]</p>--<p>on ~ line 128.</p>--<p>Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?</p>--<p>Thanks! Git annex rules!</p>--<p>Albert</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk">Albert</a>-</span>---&mdash; <span class="date">Mon Oct 22 16:56:56 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-65d022495714fd230318fc36328928ec">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-65d022495714fd230318fc36328928ec">comment 2</a>--</div>--<div class="inlinecontent">-<p>@Albert, thanks for reporting this bug (but put them in <span class="createlink">bugs</span> in future please).</p>--<p>This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know.</p>--<p>I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue Oct 23 16:01:43 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e8e658180a98b2b4fa3ba75dab3f2d03">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-e8e658180a98b2b4fa3ba75dab3f2d03">Bup remotes in git-annex assistant</a>--</div>--<div class="inlinecontent">-<p>Hi,</p>--<p>Is the bup remote available via the Assistant user interface?</p>--<p>Unrelated question;</p>--<p>If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use "bup split" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)</p>--<p>Many Thanks,-Sek</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://sekenre.wordpress.com/">sekenre</a>-</span>---&mdash; <span class="date">Wed Mar 13 08:54:56 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-ab4ff45deb1dbd6bdc4f358edf17f859">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-ab4ff45deb1dbd6bdc4f358edf17f859">comment 4</a>--</div>--<div class="inlinecontent">-<p>I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.</p>--<p>Your two bup repos would be synced using bup-split.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 13 12:05:50 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e83698f8503aa61fbb9e87d2d4cad27d">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-e83698f8503aa61fbb9e87d2d4cad27d">comment 5</a>--</div>--<div class="inlinecontent">-<p>I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.</p>--<p>Your two bup repos would be synced using bup-split.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 13 12:05:57 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-9eb04fc51f17b4ae6ea96bca6bb102eb">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-9eb04fc51f17b4ae6ea96bca6bb102eb">bup fail?</a>--</div>--<div class="inlinecontent">-<p>I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.</p>--<p>How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo">Tobias</a>-</span>---&mdash; <span class="date">Sun Mar 31 17:05:32 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-904c03f2de30340c297379a762529702">----<div class="comment-subject">--<a href="/special_remotes/bup.html#comment-904c03f2de30340c297379a762529702">comment 7</a>--</div>--<div class="inlinecontent">-<p><code>bup-split</code> uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.</p>--<p>Yes, it would be possible to make git-annex store this in the git-annex branch instead.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Tue Apr  2 17:24:06 2013</span>-</div>----<div style="clear: both"></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="../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">Mon Jan 21 21:30:40 2013</span>-<!-- Created <span class="date">Mon Jan 21 21:30:40 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/glacier.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>glacier</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">-glacier--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in Amazon Glacier.</p>--<p>To use it, you need to have <a href="http://github.com/basak/glacier-cli">glacier-cli</a>-installed.</p>--<p>The unusual thing about Amazon Glacier is the multiple-hour delay it takes-to retrieve information out of Glacier. To deal with this, commands like-"git-annex get" request Glacier start the retrieval process, and will fail-due to the data not yet being available. You can then wait appriximately-four hours, re-run the same command, and this time, it will actually-download the data.</p>--<h2>configuration</h2>--<p>The standard environment variables <code>AWS_ACCESS_KEY_ID</code> and-<code>AWS_SECRET_ACCESS_KEY</code> are used to supply login credentials-for Amazon. You need to set these only when running-<code>git annex initremote</code>, as they will be cached in a file only you-can read inside the local git repository.</p>--<p>A number of parameters can be passed to <code>git annex initremote</code> to configure-the Glacier 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, or "shared" which allows-every clone of the repository to access the encrypted data (use with caution).</p>--<p>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>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside-the git repository, which allows other clones to also access them. This is-the default when gpg encryption is enabled; the credentials are stored-encrypted and only those with the repository's keys can access them.</p>--<p>It is not the default when using shared encryption, or no encryption.-Think carefully about who can access your repository before using-embedcreds without gpg encryption.</p></li>-<li><p><code>datacenter</code> - Defaults to "us-east-1".</p></li>-<li><p><code>vault</code> - By default, a vault name is chosen based on the remote name-and UUID. This can be specified to pick a vault name.</p></li>-<li><p><code>fileprefix</code> - By default, git-annex places files in a tree rooted at the-top of the Glacier vault. When this is set, it's prefixed to the filenames-used. For example, you could set it to "foo/" in one special remote,-and to "bar/" in another special remote, and both special remotes could-then use the same vault.</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="../special_remotes.html">special remotes</a>--<a href="../tips/using_Amazon_Glacier.html">tips/using Amazon Glacier</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Nov 20 17:31:01 2012</span>-<!-- Created <span class="date">Tue Nov 20 17:31:01 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/hook.html
@@ -1,266 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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; "$ANNEX_FILE" | tablet-writer --implement=stylus --title="$ANNEX_KEY" | tablet-proofreader | librarian --shelve --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2'-# git config annex.cuneiform-retrieve-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | tablet-reader --implement=coffee --implement=glasses --force-monastic-dedication | fromcuneiform &gt; "$ANNEX_FILE"'-# git config annex.cuneiform-remove-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | goon --hit-with-hammer'-# git config annex.cuneiform-checkpresent-hook 'librarian --find --force-distrust-catalog --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$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,-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, or "shared" which allows-every clone of the repository to access the encrypted data.</p>--<p>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.$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.$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.$hooktype-remove-hook</code> - Command to remove a key from the special remote.</p></li>-<li><p><code>annex.$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="feedlink">---</div>-<div class="comment" id="comment-70d5145af0290f63af3145c35487392f">----<div class="comment-subject">--<a href="/special_remotes/hook.html#comment-70d5145af0290f63af3145c35487392f">Asynchronous hooks?</a>--</div>--<div class="inlinecontent">-<p>Is there a way to use asynchronous remotes? Interaction with git annex would have to-split the part of initiating some action from completing it.</p>--<p>I imagine I could <code>git annex copy</code> a file to an asynchronous remote and the command-would almost immediately complete. Later I would learn that the transfer is-completed, so the hook must be able to record that information in the <code>git-annex</code>-branch. An additional plumbing command seems required here as well as a way to-indicate that even though the store-hook completed, the file is not transferred.</p>--<p>Similarly <code>git annex get</code> would immediately return without actually fetching the-file. This should already be possible by returning non-zero from the retrieve-hook.-Later the hook could use plumbing level commands to actually stick the received file-into the repository.</p>--<p>The remove-hook should need no changes, but the checkpresent-hook would be more like-a trigger without any actual result. The extension of the plumbing required for the-extension to the receive-hook could update the location log. A downside here is that-you never know when a fsck has completed.</p>--<p>My proposal does not include a way to track the completion of actions, but relies on-the hook to always complete them reliably. It is not clear that this is the best road-for asynchronous hooks.</p>--<p>One use case for this would be a remote that is only accessible via uucp. Are there-other use cases? Is the drafted interface useful?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=helmut&amp;do=goto">helmut</a>--</span>---&mdash; <span class="date">Sat Oct 13 05:46:14 2012</span>-</div>----<div style="clear: both"></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="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Nov 19 18:31:19 2012</span>-<!-- Created <span class="date">Mon Nov 19 18:31:19 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/rsync.html
@@ -1,291 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 on the remote rsync server,-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, or "shared" which allows-every clone of the repository to decrypt the encrypted data.</p>--<p>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>-<li><p><code>shellescape</code> - Optional. Set to "no" to avoid shell escaping normally-done when using rsync over ssh. That escaping is needed with typical-setups, but not with some hosting providers that do not expose rsynced-filenames to the shell. You'll know you need this option if <code>git annex get</code>-from the special remote fails with an error message containing a single-quote (<code>'</code>) character. If that happens, you can re-run initremote-setting shellescape=no.</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="feedlink">---</div>-<div class="comment" id="comment-365df6b0ce20645343d07bea2e6cd84f">----<div class="comment-subject">--<a href="/special_remotes/rsync.html#comment-365df6b0ce20645343d07bea2e6cd84f">rsync description and example</a>--</div>--<div class="inlinecontent">-<p>Hi, I would like to see a example of setting up / using e.g. rsync.net as a repo.</p>--<p>Please also provide a highlevel description of how the rsync repo fits in with git-annex.</p>--<p>Q1. can you adds files to the remote rsync repo, and will they be detected and synced back ?-Q2. is all the git history rsync'd to remote ?   how do i recover if i loose all data except the remote rsync repo ?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=diepes&amp;do=goto">diepes</a>--</span>---&mdash; <span class="date">Fri Mar 29 11:57:20 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-525d3951ab1f09fdf471f450a798b50e">----<div class="comment-subject">--<a href="/special_remotes/rsync.html#comment-525d3951ab1f09fdf471f450a798b50e">comment 2</a>--</div>--<div class="inlinecontent">-No, special remotes do not contain a copy of the git repository, and no, git-annex does not notice when files are added to remote rsync repositories. Suggest you read <a href="../special_remotes.html">special remotes</a>.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Fri Mar 29 13:12:47 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-c8fc6dad2ad0eef8accbe31bfd82542b">----<div class="comment-subject">--<a href="/special_remotes/rsync.html#comment-c8fc6dad2ad0eef8accbe31bfd82542b">sshfs ?  and no sync from special remote to 2nd git-annex ?</a>--</div>--<div class="inlinecontent">-<ul>-<li>It sound to me it would be 1st prize if the cloud provider supported the git-annex functionality over ssh.</li>-<li>Then it could be a full git-annex repo, and used for recovery if my laptop with the git info gets lost.</li>-<li>From special remotes "These can be used just like any normal remote by git-annex"</li>-<li><p>Your comment "No, special remotes do not contain a copy of the git repository"</p></li>-<li><p>so a special remote is</p></li>-<li><p>"A. just a remote filesystem, that contains the objects with sha1 names ? "</p></li>-<li>"B. there is no git info and thus no file name &amp; directory details or am i missing something ?"</li>-<li>"C. you can't use the remote as a cloud drive to sync changes e.g. file moves, renames between two other git-annex repositories ? (no meta data)"</li>-<li><p>"D. the data on the cloud/rsync storage can not be used directly it has to moved into a git-annex capable storage location. "</p></li>-<li><p>Would it not be better to mount the remote storage over ssh(sshfs) and then use full git-annex on mounted directory ?</p></li>-</ul>----</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=diepes&amp;do=goto">diepes</a>--</span>---&mdash; <span class="date">Fri Mar 29 18:09:49 2013</span>-</div>----<div style="clear: both"></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="./hook.html">hook</a>--<a href="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Nov 19 18:31:19 2012</span>-<!-- Created <span class="date">Mon Nov 19 18:31:19 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/web.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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="../tips/using_the_web_as_a_special_remote.html">using the web as a special remote</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/webdav.html
@@ -1,465 +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>webdav</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">-webdav--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This special remote type stores file contents in a WebDAV server.</p>--<h2>configuration</h2>--<p>The environment variables <code>WEBDAV_USERNAME</code> and <code>WEBDAV_PASSWORD</code> are used-to supply login credentials. You need to set these only when running-<code>git annex initremote</code>, as they will be cached in a file only you-can read inside the local git repository.</p>--<p>A number of parameters can be passed to <code>git annex initremote</code> to configure-the webdav 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, or "shared" which allows-every clone of the repository to access the encrypted data (use with caution).</p>--<p>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>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside-the git repository, which allows other clones to also access them. This is-the default when gpg encryption is enabled; the credentials are stored-encrypted and only those with the repository's keys can access them.</p>--<p>It is not the default when using shared encryption, or no encryption.-Think carefully about who can access your repository before using-embedcreds without gpg encryption.</p></li>-<li><p><code>url</code> - Required. The URL to the WebDAV directory where files will be-stored. This can be a subdirectory of a larger WebDAV repository, and will-be created as needed. Use of a https URL is strongly-encouraged, since HTTP basic authentication is used.</p></li>-<li><p><code>chunksize</code> - Avoid storing files larger than the specified size in-WebDAV. For use when the WebDAV server has file size-limitations. The default is to never chunk files.<br/>-The value can use specified using any commonly used units.-Example: <code>chunksize=75 megabytes</code><br/>-Note that enabling chunking on an existing remote with non-chunked-files is not recommended.</p></li>-</ul>---<p>Setup example:</p>--<pre><code># WEBDAV_USERNAME=joey@kitenet.net WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://www.box.com/dav/git-annex chunksize=75mb encryption=joey@kitenet.net-</code></pre>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-5baa5a7124413672286561cd0cf2d81e">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-5baa5a7124413672286561cd0cf2d81e">git-annex initremote failing for webdav servers</a>--</div>--<div class="inlinecontent">-<p>Unfortunately, trying to set up the following webdav servers fail. Some of the terminal output of git-annex --debug initremote ... is below, but it may not really helpful. Can I help any further, can a webdav remote be set up in a different way? (The box.com webdav initremote worked fine.) Cheers</p>--<p>With livedrive.com:</p>--<pre><code>[2012-12-01 10:15:12 GMT] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--encrypt","--no-encrypt-to","--no-default-recipient","--recipient","xxxxxxxxxxxxxx"]-(encryption setup with gpg key xxxxxxxxxxxxxx) (testing WebDAV server...)-git-annex: "Bad Request": user error-failed-git-annex: initremote: 1 failed-</code></pre>--<p>With sd2dav.1und1.de:</p>--<pre><code>[2012-12-01 10:13:10 GMT] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--encrypt","--no-encrypt-to","--no-default-recipient","--recipient","xxxxxxxxxxxxxx"]-(encryption setup with gpg key xxxxxxxxxxxxxx) (testing WebDAV server...)-git-annex: "Locked": user error-failed-git-annex: initremote: 1 failed-</code></pre>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://rfhbuk.myopenid.com/">rfhbuk [myopenid.com]</a>-</span>---&mdash; <span class="date">Sat Dec  1 06:18:04 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a15cb41a5f551865af13d2b517d5f222">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-a15cb41a5f551865af13d2b517d5f222">comment 2</a>--</div>--<div class="inlinecontent">-<p>I tried signing up for livedrive, but I cannot log into it with WebDav at all. Do they require a Pro account to use WebDav?</p>--<p>When it's "testing webdav server", it tries to make a collection (a subdirectory), and uploads a file to it, and sets the file's properties, and deletes the file. One of these actions must be failing, perhaps because the webdav server implementation does not support it. Or perhaps because the webdav client library is doing something wrong. I've instrumented the test, so it'll say which one.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Dec  1 14:34:05 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a1fcb97f459ec0e242b5172fbfa5dd3a">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-a1fcb97f459ec0e242b5172fbfa5dd3a">comment 3</a>--</div>--<div class="inlinecontent">-<p>I've identified the problem keeping it working with livedrive. Once a patch I've written is applied to the Haskell DAV library, I'll be able to update git-annex to support it.</p>--<p>I don't know about sd2dav.1und1.de. The error looks like it doesn't support WebDAV file locking.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Dec  1 16:13:36 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-51b7aea2538c30d0064f6993ffaf7f14">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-51b7aea2538c30d0064f6993ffaf7f14">comment 4</a>--</div>--<div class="inlinecontent">-Good news, livedrive is supported now, by git-annex's master branch.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Sat Dec  1 17:14:34 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-471a2ec5c3bf715d7f6fb22d67a5fae8">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-471a2ec5c3bf715d7f6fb22d67a5fae8">WebDAV without locking</a>--</div>--<div class="inlinecontent">-<p>Hi Joey,</p>--<p>you are right, the 1-und-1.de implementation of WebDAV does not support locking.</p>--<p>Do you think there is a way to make that service work with git-annex anyhow -- say, by allowing the user to disable file-locking? I've worked around the problem with 1-und-1.de by using fuse+davfs2 to mount the storage in my file system and access it through the directory backend, but FUSE is dead slow, unfortunately, and this solution really sucks.</p>---</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 Jan 16 08:44:16 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-d7b26368885fe7ae941ff2662165b22a">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-d7b26368885fe7ae941ff2662165b22a">comment 6</a>--</div>--<div class="inlinecontent">-<p>It seems it must advertise it supports the LOCK and UNLOCK http actions, but fails when they're used.</p>--<p>The DAV library I am using always locks if it seems the server supports it. So this will need changes to that library. I've filed a bug requesting the changes. <a href="http://bugs.debian.org/698379">http://bugs.debian.org/698379</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Thu Jan 17 14:23:27 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-43a9332e13739104c0bfe968d598b892">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-43a9332e13739104c0bfe968d598b892">SSL certificates</a>--</div>--<div class="inlinecontent">-<p>Trying to use webdav leads in:</p>--<pre><code>git-annex: HandshakeFailed (Error_Protocol ("certificate rejected: not coping with anything else Start (Container Context 0)",True,CertificateUnknown))-</code></pre>--<p>How can I disable the SSL certificate check?</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawniayrgSdVLUc3c6bf93VbO-_HT4hzxmyo">Tobias</a>-</span>---&mdash; <span class="date">Mon Mar 25 12:09:54 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-e85611766963b29b00490ff821328a5f">----<div class="comment-subject">--<a href="/special_remotes/webdav.html#comment-e85611766963b29b00490ff821328a5f">comment 8</a>--</div>--<div class="inlinecontent">-I don't think the checking of SSL certificates can currently be disabled.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joey</a>-</span>---&mdash; <span class="date">Wed Mar 27 12:38:47 2013</span>-</div>----<div style="clear: both"></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="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Nov 19 18:31:19 2012</span>-<!-- Created <span class="date">Mon Nov 19 18:31:19 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/special_remotes/xmpp.html
@@ -1,191 +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>xmpp</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">-xmpp--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>XMPP (Jabber) is used by the <a href="../assistant.html">assistant</a> as a git remote. This is,-technically not a git-annex special remote (large files are not transferred-over XMPP; only git commits are sent).</p>--<p>Typically XMPP will be set up using the web app, but here's how a manual-set up could be accomplished:</p>--<ol>-<li><p>xmpp login credentials need to be stored in <code>.git/annex/creds/xmpp</code>.-Obviously this file should be mode 600. An example file:</p>--<p> XMPPCreds {xmppUsername = "joeyhess", xmppPassword = "xxxx", xmppHostname = "xmpp.l.google.com.", xmppPort = 5222, xmppJID = "joeyhess@gmail.com"}</p></li>-<li><p>A git remote is created using a special url, of the form <code>xmpp::user@host</code>-For the above example, it would be <code>url = xmpp::joeyhess@gmail.com</code></p></li>-<li><p>The uuid of one of the other clients using XMPP should be configured-using the <code>annex.uuid</code> setting, the same as is set up for other remotes.</p></li>-</ol>---<p>With the above configuration, the <a href="../assistant.html">assistant</a> will use xmpp remotes much as-any other git remote. Since XMPP requires a client that is continually running-to see incoming pushes, the XMPP remote cannot be used with git at the-command line.</p>--<p>See also: <a href="../design/assistant/xmpp.html">xmpp protocol design notes</a></p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-a7e65f545755de544dc069536c1fff4a">----<div class="comment-subject">--<a href="/special_remotes/xmpp.html#comment-a7e65f545755de544dc069536c1fff4a">User defined server</a>--</div>--<div class="inlinecontent">-<p>It would be nice if you could expand the XMPP setup in the assistant to support an "advanced" settings view where a custom server could be defined.</p>--<p>Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA">Tobias</a>-</span>---&mdash; <span class="date">Wed Apr 17 05:45:59 2013</span>-</div>----<div style="clear: both"></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="../special_remotes.html">special remotes</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sun Mar 24 09:31:31 2013</span>-<!-- Created <span class="date">Sun Mar 24 09:31:31 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/summary.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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, time, or disk space.</p>--<p><a href="./assistant.html"><img src="./assistant/thumbnail.png" width="216" height="28" class="img" align="right" /></a>-git-annex is designed for git users who love the command line.-For everyone else, the <a href="./assistant.html">git-annex assistant</a> turns-git-annex into an easy to use folder synchroniser.</p>--<p>To get a feel for git-annex, see the <a href="./walkthrough.html">walkthrough</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">Mon Mar 11 18:30:33 2013</span>-<!-- Created <span class="date">Mon Mar 11 18:30:33 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/sync.html
@@ -1,302 +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>sync</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">-sync--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>The <code>git annex sync</code> command provides an easy way to keep several-repositories in sync.</p>--<p>Often git is used in a centralized fashion with a central bare repository-which changes are pulled and pushed to using normal git commands.-That works fine, if you don't mind having a central repository.</p>--<p>But it can be harder to use git in a fully decentralized fashion, with no-central repository and still keep repositories in sync with one another.-You have to remember to pull from each remote, and merge the appopriate-branch after pulling. It's difficult to <em>push</em> to a remote, since git does-not allow pushes into the currently checked out branch.</p>--<p><code>git annex sync</code> makes it easier using a scheme devised by Joachim-Breitner. The idea is to have a branch <code>synced/master</code> (actually,-<code>synced/$currentbranch</code>), that is never directly checked out, and serves-as a drop-point for other repositories to use to push changes.</p>--<p>When you run <code>git annex sync</code>, it merges the <code>synced/master</code> branch-into <code>master</code>, receiving anything that's been pushed to it. Then it-fetches from each remote, and merges in any changes that have been made-to the remotes too. Finally, it updates <code>synced/master</code> to reflect the new-state of <code>master</code>, and pushes it out to each of the remotes.</p>--<p>This way, changes propagate around between repositories as <code>git annex sync</code>-is run on each of them. Every repository does not need to be able to talk-to every other repository; as long as the graph of repositories is-connected, and <code>git annex sync</code> is run from time to time on each, a given-change, made anywhere, will eventually reach every other repository.</p>--<p>The workflow for using <code>git annex sync</code> is simple:</p>--<ul>-<li>Make some changes to files in the repository, using <code>git-annex</code>,-or anything else.</li>-<li>Run <code>git annex sync</code> to save the changes.</li>-<li>Next time you're working on a different clone of that repository,-run <code>git annex sync</code> to update it.</li>-</ul>---</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-4214020597adf16b7ef35b641357c34a">----<div class="comment-subject">--<a href="/sync.html#comment-4214020597adf16b7ef35b641357c34a">very nice</a>--</div>--<div class="inlinecontent">-Here's a way to get from a starting point of two or more peer directory trees <em>not</em> tracked by git or git-annex, to the point where they can be synced in the manner described above: <span class="createlink">syncing non-git trees with git-annex</span>--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://adamspiers.myopenid.com/">Adam</a>-</span>---&mdash; <span class="date">Sat Feb 25 11:02:18 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-37997a5f56f061ccba8573346b830484">----<div class="comment-subject">--<a href="/sync.html#comment-37997a5f56f061ccba8573346b830484">Its just grand</a>--</div>--<div class="inlinecontent">-<p>I cam upon git-annex a few months ago. I saw immidiately how it could help with some frustrations I've been having. One in particlar is keeping my vimrc in sync accross multiple locations and platforms. I finally took the time to give it a try after I finally hit my boiling point this morning. I went through the <a href="http://git-annex.branchable.com/walkthrough/">walkthrough</a> and now I have an annax everywhere I need it. <code>git annex sync</code> and my vimrc is up-to-date, simply grand!</p>--<p>Thanks so much for making git-annex,-<a href="http://woz.io">Daniel Wozniak</a></p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU">Daniel</a>-</span>---&mdash; <span class="date">Fri Jan  4 10:45:35 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-a93800cc4523d79b0baba1b64210e6a8">----<div class="comment-subject">--<a href="/sync.html#comment-a93800cc4523d79b0baba1b64210e6a8">synchronising stored files with a bare repository</a>--</div>--<div class="inlinecontent">-Good for syncing indexes, but if I want to synchronise all data files too (specifically pushing to a remote bare repository), how do I do that?--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnVX_teMpJeQkyheivad_1XSCFSjpiWgx8">Diggory</a>-</span>---&mdash; <span class="date">Fri Jan 11 12:52:38 2013</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-460e386e29f24721d89fc9a6e21b52a0">----<div class="comment-subject">--<a href="/sync.html#comment-460e386e29f24721d89fc9a6e21b52a0">comment 4</a>--</div>--<div class="inlinecontent">-Yes, sync only syncs the git branches, not git-annex data. To sync the date, you can run a command such as <code>git annex copy --to bareremote</code>. You could run that in cron. Or, the <a href="./assistant.html">assistant</a> can be run as a daemon, and automatically syncs git-annex data.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Fri Jan 11 14:18:07 2013</span>-</div>----<div style="clear: both"></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="./how_it_works.html">how it works</a>--<a href="./links/key_concepts.html">links/key concepts</a>--<a href="./walkthrough/syncing.html">walkthrough/syncing</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Sat Nov 10 22:30:32 2012</span>-<!-- Created <span class="date">Sat Nov 10 22:30:32 2012</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/bugtemplate.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>bugtemplate</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">templates</a>/ --</span>-<span class="title">-bugtemplate--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>What steps will reproduce the problem?</p>--<p>What is the expected output? What do you see instead?</p>--<p>What version of git-annex are you using? On what operating system?</p>--<p>Please provide any additional information below.</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− 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/testimonials.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>testimonials</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">-testimonials--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<div>-<blockquote class="twitter-tweet"><p>Git annex. Brilliant. Powerful. <a href="http://t.co/AM9B6peM" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>&mdash; Gert van Dijk (@gertvdijk) <a href="https://twitter.com/gertvdijk/status/186456474246053888">April 1, 2012</a></blockquote>--<blockquote class="twitter-tweet"><p>git-annex is like dropbox without the chrome. <a href="http://t.co/qcENNt3g" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>&mdash; Wil Chung (@iamwil) <a href="https://twitter.com/iamwil/status/185997581229367296">March 31, 2012</a></blockquote>--<blockquote class="twitter-tweet"><p>blender 2.62 + ffmpeg + dnxhd + git-annex = who needs final cut?</p>&mdash; cdotwright (@cdotwright) <a href="https://twitter.com/cdotwright/status/187645142864375808">April 4, 2012</a></blockquote>--<blockquote class="twitter-tweet"><p>I want <a href="https://twitter.com/search/%2523git">#git</a>-annex whereis for all the stuff (not) in my room.</p>&mdash; topr (@derwelle) <a href="https://twitter.com/derwelle/status/172356564072673280">February 22, 2012</a></blockquote>--</div>-----<blockquote>-What excites me about GIT ANNEX is how it fundamentally tracks the-backup and availability of any data you own, and allows you to share-data with a large or small audience, ensuring that the data survives.-</blockquote>---<p>-- Jason Scott <a href="http://ascii.textfiles.com/archives/3625">http://ascii.textfiles.com/archives/3625</a></p>--<p>Seen on IRC:</p>--<pre>-oh my god, git-annex is amazing-this is the revolution in fucking with gigantic piles of files that I've been waiting for-</pre>---<p>And then my own story: I have a ton of drives. I have a lot of servers. I-live in a cabin on <strong>dialup</strong> and often have 1 hour on broadband in a week-to get everything I need. Without git-annex, managing all this would not be-possible. It works perfectly for me, not a surprise since I wrote it, but-still, it's a different level of "perfect" than anything I could put-together before. --<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 id="backlinks">-Links:--<a href="./links/other_stuff.html">links/other stuff</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/tips.html
@@ -1,390 +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>tips</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">-tips--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><span class="selflink">tips</span></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>This page is a place to document tips and techniques for using git-annex.</p>--<div  class="feedlink">---</div>-<div class="archivepage">--<a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</a><br />--<span class="archivepagedate">-Posted <span class="date">Thu Apr 11 11:35:22 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html">replacing Sparkleshare or dvcs-autosync with the assistant</a><br />--<span class="archivepagedate">-Posted <span class="date">Sun Mar 31 19:30:56 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html">Building git-annex on Debian OR &#37;&#164;&#35;&#34;&#164;&#37;&#38;&#34;&#35; Haskell&#33;</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Mar 12 21:31:16 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_Google_Cloud_Storage.html">using Google Cloud Storage</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Jan 25 19:30:56 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/setup_a_public_repository_on_a_web_site.html">setup a public repository on a web site</a><br />--<span class="archivepagedate">-Posted <span class="date">Thu Jan  3 23:31:17 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.html">How to retroactively annex a file already in a git repo</a><br />--<span class="archivepagedate">-Posted <span class="date">Mon Dec 17 13:32:21 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/Decentralized_repository_behind_a_Firewall.html">Decentralized repository behind a Firewall</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Nov 30 11:31:04 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_Amazon_Glacier.html">using Amazon Glacier</a><br />--<span class="archivepagedate">-Posted <span class="date">Mon Nov 26 13:31:26 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_Amazon_S3.html">using Amazon S3</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Nov 20 17:31:01 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a><br />--<span class="archivepagedate">-Posted <span class="date">Sat Nov 17 16:40:37 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/assume-unstaged.html">using assume-unstages to speed up git with large trees of annexed files</a><br />--<span class="archivepagedate">-Posted <span class="date">Wed Oct 24 12:32:21 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/emacs_integration.html">emacs integration</a><br />--<span class="archivepagedate">-Posted <span class="date">Mon Oct 22 13:30:48 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/powerful_file_matching.html">powerful file matching</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/finding_duplicate_files.html">finding duplicate files</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html">using git annex with no fixed hostname and optimising ssh</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_the_web_as_a_special_remote.html">using the web as a special remote</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/visualizing_repositories_with_gource.html">visualizing repositories with gource</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/automatically_getting_files_on_checkout.html">automatically getting files on checkout</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/what_to_do_when_you_lose_a_repository.html">what to do when you lose a repository</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/what_to_do_when_a_repository_is_corrupted.html">what to do when a repository is corrupted</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/centralised_repository:_starting_from_nothing.html">centralised repository: starting from nothing</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/recover_data_from_lost+found.html">recover data from lost+found</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/migrating_data_to_a_new_backend.html">migrating data to a new backend</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/Internet_Archive_via_S3.html">Internet Archive via S3</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/untrusted_repositories.html">untrusted repositories</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/centralized_git_repository_tutorial.html">centralized git repository tutorial</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_the_SHA1_backend.html">using the SHA1 backend</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./tips/using_gitolite_with_git-annex.html">using gitolite with git-annex</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Sep 28 01:45:57 2012</span>--</span>-</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="./sidebar.html">sidebar</a>--<a href="./walkthrough/more.html">walkthrough/more</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/tips/assume-unstaged.html
@@ -1,188 +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 assume-unstages to speed up git with large trees of 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="../tips.html">tips</a>/ --</span>-<span class="title">-using assume-unstages to speed up git with large trees of annexed files--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Git update-index's assume-unstaged feature can be used to speed-up <code>git status</code> and stuff by not statting the whole tree looking for changed-files.</p>--<p>This feature works quite well with git-annex. Especially because git-annex's files are immutable, so aren't going to change out from under it,-this is a nice fit. If you have a very large tree and <code>git status</code> is-annoyingly slow, you can turn it on:</p>--<pre><code>git config core.ignoreStat true-</code></pre>--<p>When git mv and git rm are used, those changes <em>do</em> get noticed, even-on assume-unchanged files. When new files are added, eg by <code>git annex add</code>,-they are also noticed.</p>--<p>There are two gotchas. Both occur because <code>git add</code> does not stage-assume-unchanged files.</p>--<ol>-<li>When an annexed file is moved to a different directory, it updates-the symlink, and runs <code>git add</code> on it. So the file will move,-but the changed symlink will not be noticed by git and it will commit a-dangling symlink.</li>-<li>When using <code>git annex migrate</code>, it changes the symlink and <code>git adds</code>-it. Again this won't be committed.</li>-</ol>---<p>These can be worked around by running <code>git update-index --really-refresh</code>-after performing such operations. I hope that <code>git add</code> will be changed-to stage changes to assume-unchanged files, which would remove this-only complication. --<span class="createlink">Joey</span></p>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-f2b947110dbafdb39f0cc32de1d0dc1d">----<div class="comment-subject">--<a href="/tips/assume-unstaged.html#comment-f2b947110dbafdb39f0cc32de1d0dc1d">It doesn&#x27;t work 100%</a>--</div>--<div class="inlinecontent">-When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6">Olivier R</a>-</span>---&mdash; <span class="date">Thu May  3 17:42:54 2012</span>-</div>----<div style="clear: both"></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">Wed Oct 24 12:32:21 2012</span>-<!-- Created <span class="date">Wed Oct 24 12:32:21 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/tips/emacs_integration.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>emacs integration</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="../tips.html">tips</a>/ --</span>-<span class="title">-emacs integration--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>bergey has developed an emacs mode for browsing git-annex repositories,-dired style.</p>--<p><a href="https://gitorious.org/emacs-contrib/annex-mode">https://gitorious.org/emacs-contrib/annex-mode</a></p>--<p>Locally available files are colored differently, and pressing g runs-<code>git annex get</code> on the file at point.</p>--<hr />--<p>John Wiegley has developed a brand new git-annex interaction mode for-Emacs, which aims to integrate with the standard facilities-(C-x C-q, M-x dired, etc) rather than invent its own interface.</p>--<p><a href="https://github.com/jwiegley/git-annex-el">https://github.com/jwiegley/git-annex-el</a></p>--<p>He has also added support to org-attach; if-<code>org-attach-git-annex-cutoff' is non-nil and smaller than the size- of the file you're attaching then org-attach will</code>git annex add the-file`; otherwise it will "git add" it.</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">Mon Oct 22 13:30:48 2012</span>-<!-- Created <span class="date">Mon Oct 22 13:30:48 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/tips/using_Amazon_S3.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>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="../tips.html">tips</a>/ --</span>-<span class="title">-using Amazon S3--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 Amazon AWS credentials:</p>--<pre><code># export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"-# export AWS_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="feedlink">---</div>-<div class="comment" id="comment-ffb374370bd464243362838201609e33">----<div class="comment-subject">--<a href="/tips/using_Amazon_S3.html#comment-ffb374370bd464243362838201609e33">ANNEX_S3 vs AWS for keys</a>--</div>--<div class="inlinecontent">-The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both "AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY" instead, which works. This is with Xubuntu 12.04.--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>-</span>---&mdash; <span class="date">Tue May 29 08:24:25 2012</span>-</div>----<div style="clear: both"></div>-</div>-<div class="comment" id="comment-7f18ee038ed2bb0c5099f2bd015b6fdd">----<div class="comment-subject">--<a href="/tips/using_Amazon_S3.html#comment-7f18ee038ed2bb0c5099f2bd015b6fdd">comment 2</a>--</div>--<div class="inlinecontent">-Thanks, I've fixed that. (You could have too.. this is a wiki ;)--</div>--<div class="comment-header">--Comment by--<span class="author" title="OpenID">-<a href="http://joeyh.name/">joeyh.name</a>-</span>---&mdash; <span class="date">Tue May 29 15:10:42 2012</span>-</div>----<div style="clear: both"></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/encryption.html">design/encryption</a>--<a href="../special_remotes.html">special remotes</a>--<a href="../special_remotes/S3.html">special remotes/S3</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Tue Nov 20 17:31:01 2012</span>-<!-- Created <span class="date">Tue Nov 20 17:31:01 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/transferring_data.html
@@ -1,148 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 amongst.</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="./how_it_works.html">how it works</a>--<a href="./use_case/Alice.html">use case/Alice</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/trust.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>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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Git-annex supports several levels of trust of a repository:</p>--<ul>-<li>semitrusted (default)</li>-<li>untrusted</li>-<li>trusted</li>-<li>dead</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>--<h2>dead</h2>--<p>This is used to indicate that you have no trust that the repository-exists at all. It's appropriate to use when a drive has been lost,-or a directory irretrevably deleted. It will make git-annex avoid-even showing the repository as a place where data might still reside.</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="./internals.html">internals</a>--<a href="./location_tracking.html">location tracking</a>--<a href="./tips/untrusted_repositories.html">tips/untrusted repositories</a>--<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</a>--<a href="./walkthrough/removing_files:_When_things_go_wrong.html">walkthrough/removing files: When things go wrong</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/upgrades.html
@@ -1,227 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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>v3 -&gt; v4 (git-annex version 4.x)</h3>--<p>v4 is only used for <a href="./direct_mode.html">direct mode</a>, and no upgrade needs to be done from-existing v3 repositories, they will continue to work.</p>--<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">Tue Feb 26 16:35:17 2013</span>-<!-- Created <span class="date">Tue Feb 26 16:35:17 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/upgrades/SHA_size.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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="../tips/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="feedlink">---</div>-<div class="comment" id="comment-376cc462e818489fa3c78eccc99b6f7f">----<div class="comment-subject">--<a href="/upgrades/SHA_size.html#comment-376cc462e818489fa3c78eccc99b6f7f">The fact that the keys changed causes merge conflicts</a>--</div>--<div class="inlinecontent">-<p>FYI, I have run into a problem where if you 'git annex sync' between various 'git annex v3' repositories, if the different repositories are using different encodings of the SHA1 information (one including size, one not), then the 'git merge' will declare that they conflict.</p>--<p>There's no indication that 'git annex migrate' is the right tool to run, except from perusing the 'git annex' man page. In my opinion this is a major user interface problem.</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">Sun Jun 24 20:28:59 2012</span>-</div>----<div style="clear: both"></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="../upgrades.html">upgrades</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/use_case/Alice.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/use_case/Bob.html
@@ -1,153 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users.html
@@ -1,148 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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/gebi.html">gebi</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/chrysn.html
@@ -1,128 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/fmarier.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/gebi.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>gebi</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">-gebi--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Michael Gebetsroither <a href="mailto:michael@mgeb.org">&#109;&#x69;&#x63;&#x68;&#97;&#101;&#x6c;&#64;&#109;&#103;&#101;&#98;&#x2e;&#x6f;&#x72;&#x67;</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/users/joey.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Joey Hess <a href="mailto:joey@kitenet.net">&#106;&#x6f;&#x65;&#x79;&#64;&#x6b;&#x69;&#x74;&#x65;&#110;&#x65;&#x74;&#x2e;&#x6e;&#101;&#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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/videos.html
@@ -1,275 +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>videos</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">-videos--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><a href="./walkthrough.html">walkthrough</a></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Talks and screencasts about git-annex.</p>--<p>These videos are also available in a public git-annex repository-<code>git clone http://downloads.kitenet.net/.git/</code></p>--<div  class="feedlink">---</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a>--</span>-</div>--<div class="inlinecontent">-<p><video controls width="400">-<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">-</video><br>-A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">9 minute screencast</a>-covering archiving your files with the <a href="./assistant.html">git-annex assistant</a></a>.</p>--</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>-</span>----------</div>--</div>-<div class="inlinepage">--<div class="inlineheader">--<span class="header">--<a href="./videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a>--</span>-</div>--<div class="inlinecontent">-<p><video controls width="400">-<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">-</video><br>-A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">6 minute screencast</a>-showing how to share files between your computers in different locations,-such as home and work.</p>--</div>--<div class="inlinefooter">--<span class="pagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>-</span>----------</div>--</div>------<div class="archivepage">--<a href="./videos/git-annex_assistant_introduction.html">git-annex assistant introduction</a><br />--<span class="archivepagedate">-Posted <span class="date">Tue Apr  2 17:32:07 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./videos/LCA2013.html">git-annex presentation by Joey Hess at Linux.Conf.Au 2013</a><br />--<span class="archivepagedate">-Posted <span class="date">Fri Feb  1 00:00:00 2013</span>--</span>-</div>-<div class="archivepage">--<a href="./videos/git-annex_weppapp_demo.html">git-annex weppapp demo</a><br />--<span class="archivepagedate">-Posted <span class="date">Sun Jul 29 14:41:41 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./videos/git-annex_assistant_sync_demo.html">git-annex assistant sync demo</a><br />--<span class="archivepagedate">-Posted <span class="date">Thu Jul  5 18:36:06 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./videos/git-annex_watch_demo.html">git-annex watch demo</a><br />--<span class="archivepagedate">-Posted <span class="date">Mon Jun 11 16:02:14 2012</span>--</span>-</div>-<div class="archivepage">--<a href="./videos/FOSDEM2012.html">git-annex presentation by Richard Hartmann at FOSDEM 2012</a><br />--<span class="archivepagedate">-Posted <span class="date">Sun Jan  1 00:00:00 2012</span>--</span>-</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="./design/assistant.html">design/assistant</a>--<a href="./footer/column_b.html">footer/column b</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Mon Mar 11 23:31:23 2013</span>-<!-- Created <span class="date">Mon Mar 11 23:31:23 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/videos/FOSDEM2012.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 presentation by Richard Hartmann at FOSDEM 2012</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="../videos.html">videos</a>/ --</span>-<span class="title">-git-annex presentation by Richard Hartmann at FOSDEM 2012--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p><video controls src="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm"></video><br>-A <a href="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm">15 minute introduction to git-annex</a>,-presented by Richard Hartmann at FOSDEM 2012.</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">Mon Mar 11 23:31:23 2013</span>-<!-- Created <span class="date">Sun Jan  1 00:00:00 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/videos/LCA2013.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>git-annex presentation by Joey Hess at Linux.Conf.Au 2013</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="../videos.html">videos</a>/ --</span>-<span class="title">-git-annex presentation by Joey Hess at Linux.Conf.Au 2013--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p><video controls>-<source type="video/mp4" src="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">-<source type="video/ogg" src="http://mirror.linux.org.au/linux.conf.au/2013/ogv/gitannex.ogv">-</video><br>-A <a href="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">45 minute talk and demo of git-annex and the assistant</a>), presented by Joey Hess at LCA 2013.</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">Mon Mar 11 23:31:23 2013</span>-<!-- Created <span class="date">Fri Feb  1 00:00:00 2013</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough.html
@@ -1,605 +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 class="sidebar">-<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="./install.html">install</a></li>-<li><a href="./assistant.html">assistant</a></li>-<li><span class="selflink">walkthrough</span></li>-<li><a href="./tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">syncing</a>-		</li>-		<li class="L2"><a href="#index7h2">transferring files: When things go wrong</a>-		</li>-		<li class="L2"><a href="#index8h2">removing files</a>-		</li>-		<li class="L2"><a href="#index9h2">removing files: When things go wrong</a>-		</li>-		<li class="L2"><a href="#index10h2">modifying annexed files</a>-		</li>-		<li class="L2"><a href="#index11h2">using ssh remotes</a>-		</li>-		<li class="L2"><a href="#index12h2">moving file content between repositories</a>-		</li>-		<li class="L2"><a href="#index13h2">unused data</a>-		</li>-		<li class="L2"><a href="#index14h2">fsck: verifying your data</a>-		</li>-		<li class="L2"><a href="#index15h2">fsck: when things go wrong</a>-		</li>-		<li class="L2"><a href="#index16h2">backups</a>-		</li>-		<li class="L2"><a href="#index17h2">automatically managing content</a>-		</li>-		<li class="L2"><a href="#index18h2">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 (checksum...) ok-add debian.iso (checksum...) 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 fetch laptop; git merge laptop/master-# git annex get .-get my_cool_big_file (from laptop...) ok-get iso/debian.iso (from laptop...) ok-</code></pre>--<h2><a name="index6h2"></a><a href="./walkthrough/syncing.html">syncing</a></h2>-<p>Notice that in the <a href="./walkthrough/getting_file_content.html">previous example</a>, you had to-git fetch and merge 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.</p>--<p>If you have a lot of repositories to keep in sync, manually fetching and-merging from them can become tedious. To automate it there is a handy-sync command, which also even commits your changes for you.</p>--<pre><code># cd /media/usb/annex-# git annex sync-commit-nothing to commit (working directory clean)-ok-pull laptop-ok-push laptop-ok-</code></pre>--<p>After you run sync, the repository will be updated with all changes made to-its remotes, and any changes in the repository will be pushed out to its-remotes, where a sync will get them. This is especially useful when using-git in a distributed fashion, without a-<a href="./tips/centralized_git_repository_tutorial.html">central bare repository</a>. See-<a href="./sync.html">sync</a> for details.</p>--<h2><a name="index7h2"></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="index8h2"></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="index9h2"></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="index10h2"></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="index11h2"></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...)-SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e  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="index12h2"></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...)-SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e   100%   82MB 199.1KB/s   07:02-ok-</code></pre>--<h2><a name="index13h2"></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 in any-branch 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 <a href="./backends.html">backends</a>.</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       SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e-    2       SHA1-s14--f1358ec1873d57350e3dc62054dc232bc93c2bd1-  (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 1-1000-</code></pre>--<h2><a name="index14h2"></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="index15h2"></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="index16h2"></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="index17h2"></a><a href="./walkthrough/automatically_managing_content.html">automatically managing content</a></h2>-<p>Once you have multiple repositories, and have perhaps configured numcopies,-any given file can have many more copies than is needed, or perhaps fewer-than you would like. How to manage this?</p>--<p>The whereis subcommand can be used to see how many copies of a file are known,-but then you have to decide what to get or drop. In this example, there-are perhaps not enough copies of the first file, and too many of the second-file.</p>--<pre><code># cd /media/usbdrive-# git annex whereis-whereis my_cool_big_file (1 copy)-    0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop-whereis other_file (3 copies)-    0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop-    62b39bbe-4149-11e0-af01-bb89245a1e61  -- here (usb drive)-    7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive-</code></pre>--<p>What would be handy is some automated versions of get and drop, that only-gets a file if there are not yet enough copies of it, or only drops a file-if there are too many copies. Well, these exist, just use the --auto option.</p>--<pre><code># git annex get --auto --numcopies=2-get my_cool_big_file (from laptop...) ok-# git annex drop --auto --numcopies=2-drop other_file ok-</code></pre>--<p>With two quick commands, git-annex was able to decide for you how to-work toward having two copies of your files.</p>--<pre><code># git annex whereis-whereis my_cool_big_file (2 copies)-    0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop-    62b39bbe-4149-11e0-af01-bb89245a1e61  -- here (usb drive)-whereis other_file (2 copies)-    0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop-    7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive-</code></pre>--<p>The --auto option can also be used with the copy command,-again this lets git-annex decide whether to actually copy content.</p>--<p>The above shows how to use --auto to manage content based on the number-of copies. It's also possible to configure, on a per-repository basis,-which content is desired. Then --auto also takes that into account-see <a href="./preferred_content.html">preferred content</a> for details.</p>--<h2><a name="index18h2"></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 <a href="./tips.html">tips</a> for lots more features and advice.</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="./how_it_works.html">how it works</a>--<a href="./install/Android.html">install/Android</a>--<a href="./sidebar.html">sidebar</a>--<a href="./summary.html">summary</a>--<a href="./tips/centralized_git_repository_tutorial.html">tips/centralized git repository tutorial</a>--<a href="./tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html">tips/using git annex with no fixed hostname and optimising ssh</a>---</div>-------<div class="pagedate">-Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/backups.html
@@ -1,148 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/more.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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 <a href="../tips.html">tips</a> for lots more features and advice.</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/syncing.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>syncing</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">-syncing--</span>-</span>--</div>--------</div>---<div class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>Notice that in the <a href="./getting_file_content.html">previous example</a>, you had to-git fetch and merge 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.</p>--<p>If you have a lot of repositories to keep in sync, manually fetching and-merging from them can become tedious. To automate it there is a handy-sync command, which also even commits your changes for you.</p>--<pre><code># cd /media/usb/annex-# git annex sync-commit-nothing to commit (working directory clean)-ok-pull laptop-ok-push laptop-ok-</code></pre>--<p>After you run sync, the repository will be updated with all changes made to-its remotes, and any changes in the repository will be pushed out to its-remotes, where a sync will get them. This is especially useful when using-git in a distributed fashion, without a-<a href="../tips/centralized_git_repository_tutorial.html">central bare repository</a>. See-<a href="../sync.html">sync</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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/unused_data.html
@@ -1,205 +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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</div>---<div id="pagebody">--<div id="content">-<p>It's possible for data to accumulate in the annex that no files in any-branch 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 <a href="../backends.html">backends</a>.</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       SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e-    2       SHA1-s14--f1358ec1873d57350e3dc62054dc232bc93c2bd1-  (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 1-1000-</code></pre>--</div>----<div id="comments">-<div  class="feedlink">---</div>-<div class="comment" id="comment-edbc8f4d58de3e553706acdb6c8a53bb">----<div class="comment-subject">--<a href="/walkthrough/unused_data.html#comment-edbc8f4d58de3e553706acdb6c8a53bb">finding data that isn&#x27;t unused, but should be.</a>--</div>--<div class="inlinecontent">-<p>Sometimes links to annexed data still exists on some branch, when it was supposed to be dropped. Here is how I found these; perhaps there is a simpler way.</p>--<pre><code>% git annex find --format '${key}\n' | sort &gt; /tmp/known-keys-% find .git/annex/objects -type f -exec basename {} \; | sort  &gt; /tmp/local-keys-% comm -23 /tmp/local-keys /tmp/known-keys-</code></pre>--<p>to look for what branch these are on, try</p>--<pre><code>% git log --stat --all -S$key-</code></pre>--<p>for one of the keys output above. In my case it was the same remote branch keeping them all alive.</p>--<p><em>EDIT</em> sort key lists to make comm work properly</p>---</div>--<div class="comment-header">--Comment by--<span class="author" title="Signed in">--<a href="?page=bremner&amp;do=goto">bremner</a>--</span>---&mdash; <span class="date">Wed Oct 17 16:32:11 2012</span>-</div>----<div style="clear: both"></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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->-</div>--</div>---<!-- from git-annex -->-</div>--</div>--</body>-</html>
− debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_bup.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>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 class="sidebar">-<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>--<ul>-<li><a href="../install.html">install</a></li>-<li><a href="../assistant.html">assistant</a></li>-<li><a href="../walkthrough.html">walkthrough</a></li>-<li><a href="../tips.html">tips</a></li>-<li><span class="createlink">bugs</span></li>-<li><span class="createlink">todo</span></li>-<li><span class="createlink">forum</span></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>---</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: failed to process template <span class="createlink">note</span> </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">Fri Sep 28 01:45:57 2012</span>-<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</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 (1383 → absent bytes)

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

binary file changed (12278 → absent bytes)

+ debian/menu view
@@ -0,0 +1,2 @@+?package(git-annex):needs="X11" section="Applications/Network/File Transfer" \+	title="git-annex assistant" command="git-annex webapp"
debian/rules view
@@ -4,7 +4,7 @@ export CABAL=./Setup  # Do use the changelog's version number, rather than making one up.-export VERSION_FROM_CHANGELOG=1+export RELEASE_BUILD=1  %: 	dh $@
+ doc/Android.mdwn view
@@ -0,0 +1,60 @@+git-annex is now available for Android. This includes the +[[git-annex assistant|/assistant]], for easy syncing between your Android+and other devices.++[[Android installation instructions|/install/android]]++When you run the git-annex Android app, two windows will open. The first is+a terminal window, and the second is a web browser showing the git-annex+webapp.++[[!img apps.png alt="two windows"]]++[[!toc ]]++## closing and reopening the webapp++The webapp does not need to be left open after you've set up your+repository. As long as the terminal window is left open, git-annex will+remain running and sync your files. To re-open the webapp after closing it,+use the [[!img newwindow.png alt="New Window"]] icon in the terminal window.++## starting git-annex++The app is not currently automatically started on boot, so you will need to+manually open it to keep your files in sync. You do not need to leave the+app running all the time, though. It will sync back up automatically when+started.++## stopping git-annex++Simply close the terminal window to stop git-annex from running.++## using the command line++[[!img terminal.png alt="Android terminal"]]++If you prefer to use `git-annex` at the command line, you can do so using the+terminal. A fairly full set of tools is provided, including `git`, `ssh`,+`rsync`, and `gpg`.++To prevent the webapp from being automatically started+when a terminal window opens, go into the terminal preferences, to "Inital+Command", and clear out the default `git annex webapp` setting.++Or, if you'd like to run the assistant automatically, but not open the+webapp, change the "Initial Command" to: `git annex assistant --autostart`++## using from adb shell++To set up the git-annex environment from within `adb shell`, run:+`/data/data/ga.androidterm/runshell`++This will launch a shell that has git-annex, git, etc in PATH.++## disk space usage++The git-annex app uses 65 MB of space on your Android device.+Do not be fooled by larger numbers that Android may display for its size,+like "273 MB". Android does not correctly calculate the size of hard linked+files, so its numbers are wrong.
+ doc/android/DCIM.png view

binary file changed (absent → 95786 bytes)

+ doc/android/appinstalled.png view

binary file changed (absent → 16805 bytes)

+ doc/android/apps.png view

binary file changed (absent → 53971 bytes)

+ doc/android/install.png view

binary file changed (absent → 55106 bytes)

+ doc/android/newwindow.png view

binary file changed (absent → 1009 bytes)

+ doc/android/terminal.png view

binary file changed (absent → 20565 bytes)

+ doc/android/webapp.png view

binary file changed (absent → 64097 bytes)

doc/assistant.mdwn view
@@ -1,5 +1,5 @@ The git-annex assistant creates a folder on each of your computers,-removable drives, and cloud services, which+Android devices, removable drives, and cloud services, which it keeps synchronised, so its contents are the same everywhere. It's very easy to use, and has all the power of git and git-annex. @@ -18,6 +18,7 @@ ## documentation  * [[Basic usage|quickstart]]+* [[Android documentation|/Android]] * Want to make two nearby computers share the same synchronised folder?     Follow the [[local_pairing_walkthrough]]. * Or perhaps you want to share files between computers in different
− doc/assistant/android/appinstalled.png

binary file changed (16805 → absent bytes)

− doc/assistant/android/install.png

binary file changed (55106 → absent bytes)

− doc/assistant/android/terminal.png

binary file changed (20565 → absent bytes)

− doc/assistant/android/webapp.png

binary file changed (64097 → absent bytes)

+ doc/bugs/3.20121113_build_error___39__not_in_scope_getAddBoxComR__39__.mdwn view
@@ -0,0 +1,33 @@+What steps will reproduce the problem?++Building from latest source, Cabal update, cabal install --only dependencies, cabal configure, Cabal build++What is the expected output? What do you see instead?++Error message from build++...++Loading package DAV-0.2 ... linking ... done.++Loading object (static) dist/build/git-annex/git-annex-tmp/Utility/libdiskfree.o ... done++Loading object (static) dist/build/git-annex/git-annex-tmp/Utility/libmounts.o ... done++final link ... done+++Assistant/Threads/WebApp.hs:47:1: Not in scope: `getAddBoxComR'++Assistant/Threads/WebApp.hs:47:1: Not in scope: `getEnableWebDAVR'+++What version of git-annex are you using? On what operating system?++Latest version via git from git-annex.branchable.com++Debian Squeeze (6.0.6)++Please provide any additional information below.++> I noticed this earlier and fixed it. [[done]] --[[Joey]]
+ doc/bugs/Adding_box.com_remote_on_Android_fails_for_me.mdwn view
@@ -0,0 +1,17 @@+### Please describe the problem.++After submitting the form in the webapp for adding a box.com remote, I get:++   Internal Server Error - WEBDAV failed to write file: "Unauthorized": user error++### What steps will reproduce the problem?++Fill in the box.com add remote form. Username=username, password=password, "share..."=checked, directory=annex, Encryption="Encrypt all data" and hit the "Add repository" button.++### What version of git-annex are you using? On what operating system?++  git-annex version 4.20130513-g5185533 on Android 4.2.2++### Please provide any additional information below.++Didn't find a .git/annex/debug.log
+ doc/bugs/Android_app_permission_denial_on_startup.mdwn view
@@ -0,0 +1,16 @@+### Please describe the problem.++Android app barfs on startup.++### What steps will reproduce the problem?++Download/install/start Android app :)++### What version of git-annex are you using? On what operating system?++Just downloaded the .apk (Friday May 3rd).  Android 4.2.2 on Google/LG Nexus 4 ++### Please provide any additional information below.++See this [screenshot](https://docs.google.com/file/d/0B8tqeaAn45VORU1ET1ZpTWxLTjQ/edit?usp=sharing).+Feel free to ping me on IRC if you need additional info or want to test a fix.
+ doc/bugs/Huge_annex_out_of_memory_on_switch_to_indirect_mode_and_status.mdwn view
@@ -0,0 +1,61 @@+### Please describe the problem.++I added a lot of files to my annex in direct mode. Now I want to switch to indirect mode. git-annex status and indirect create an out-of-memory error.++### What steps will reproduce the problem?++I am not really sure, I added a lot of files to the annex, almost 3TB.+Then either git-annex status or git-annex indirect cause a similar error (see below).+++### What version of git-annex are you using? On what operating system?++git-annex version: 4.20130501-g4a5bfb3+local repository version: 4+default repository version: 3+supported repository versions: 3 4+upgrade supported from repository versions: 0 1 2+build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP++Ubuntu precise+3.2.0-26-generic+++### Please provide any additional information below.++[[!format sh """+# If you can, paste a complete transcript of the problem occurring here.+# If the problem is with the git-annex assistant, paste in .git/annex/debug.log+git-annex status+supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL+supported remote types: git S3 bup directory rsync web webdav glacier hook+repository mode: direct+trusted repositories: 0+semitrusted repositories: 7+	00000000-0000-0000-0000-000000000001 -- web+ 	0b8e6666-80d5-11e2-adf3-6f4d3d6ef0aa -- marek@x4:~/tmp/annex+ 	65c057c6-6027-11e2-84b0-b77d71696e49 -- here (.)+ 	96b31c5e-6524-11e2-b136-fbd1a03b2799 -- BackupOnGlacier+ 	b509c388-629a-11e2-be5f-d376e201ad86 -- marek@x201:~/AllData+ 	c636e33c-6e31-11e2-a9c4-a3c5546d69d9 -- desktop+ 	fbaa1c3a-60d7-11e2-842f-9348368d2f4c -- .+untrusted repositories: 0+dead repositories: 0+transfers in progress: none+available local disk space: 81 gigabytes (+1 megabyte reserved)+temporary directory size: 9 megabytes (clean up with git-annex unused)+local annex keys: 61396+local annex size: 3 terabytes+known annex keys: git-annex: out of memory (requested 985661440 bytes)++OR++git-annex indirect+commit  git-annex: out of memory (requested 985661440 bytes)++++++# End of transcript or log.+"""]]
+ doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn view
@@ -0,0 +1,19 @@+What steps will reproduce the problem?++Adding files to a local annex set up to sync to a remote S3 one+++What is the expected output? What do you see instead?++It syncs, but maxes out the uplink+++What version of git-annex are you using? On what operating system?++3.20121112 on Debian testing+++Please provide any additional information below.++The man page lists how to configure rate limiting for rsync, not sure how to do it for this+
+ doc/bugs/Local_files_not_found.mdwn view
@@ -0,0 +1,50 @@+### Please describe the problem.++I have a git annex repo which cannot find the files with whereis, even though the files and contents are there. I have changed ownership of all the files. I am not sure, but I think that is when the problem was introduced. The current user that is invoking git annex owns and can access all files in the repository/annex)++Creating a new repository from scratch works just fine.+++### What steps will reproduce the problem?++    # (in my current, somehow corrupt annex)+    $ echo hello > testfile+    $ git annex add testfile+    add testfile (checksum...) ok+    (Recording state in git...)+    $ git commit -am testfile+    [master 73ed120] testfile+     1 file changed, 1 insertion(+)+     create mode 120000 testfile+    $ git annex whereis testfile+    whereis testfile (0 copies) failed+    git-annex: whereis: 1 failed+    +    +    # The contents exists though+    $ ls -l testfile+    lrwxrwxrwx 1 ftp ftp 176 May 13 09:43 testfile -> .git/annex/objects/P5/4q/SHA256-s6--5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03/SHA256-s6--5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03+    $ cat .git/annex/objects/P5/4q/SHA256-s6--5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03/SHA256-s6--5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03+    hello+    $ sha256sum testfile+    5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03  testfile+++    # the file can be found when unlocking/locking+    $ git annex unlock testfile+    unlock testfile (copying...) ok+    $ git annex lock testfile+    lock testfile ok+    (Recording state in git...)++### What version of git-annex are you using? On what operating system?+I ran Debian squeeze, with git annex 3.20120629~bpo60+2 when the problem was introduced. I just upgraded to wheezy, but the same problem exists with 3.20120629 from wheezy.++I also manually installed 4.20130501 from unstable, which also showed the same problem.+++### Please provide any additional information below.++I am not sure what information to supply, please provide pointers on what information might be useful.++> [[done]] per comment --[[Joey]]
+ doc/bugs/Lost_S3_Remote/comment_1_6e80e6db6671581d471fc9a54181c04c._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joey.kitenet.net/"+ nickname="joey"+ subject="comment 1"+ date="2012-01-06T03:04:35Z"+ content="""+Despite `status` listing S3 support, your git-annex is actually built with S3stub, probably because it failed to find the necessary S3 module at build time. Rebuild git-annex and watch closely, you'll see \"** building without S3 support\". Look above that for the error and fix it.++It was certianly a bug that it showed S3 as supported when built without it. I've fixed that.+"""]]
+ doc/bugs/Lost_S3_Remote/comment_2_c99c65882a3924f4890e500f9492b442._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="http://joey.kitenet.net/"+ nickname="joey"+ subject="comment 2"+ date="2012-01-06T03:08:28Z"+ content="""+BTW, you'll want to \"make clean\", since the S3stub hack symlinks a file into place and it will continue building with S3stub even if you fix the problem until you clean.+"""]]
+ doc/bugs/Lost_S3_Remote/comment_3_1e434d5a20a692cd9dc7f6f8f20f30dd._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkey8WuXUh_x5JC2c9_it1CYRnVTgdGu1M"+ nickname="Dustin"+ subject="Thank you!"+ date="2012-01-06T03:38:27Z"+ content="""+make clean and rebuild worked...  Thank you+"""]]
+ doc/bugs/More_sync__39__ing_weirdness_with_the_assistant_branch_on_OSX.mdwn view
@@ -0,0 +1,15 @@+Running the 'assistant' branch, I occassionally get++To myhost1:/Users/jtang/annex+ ! [rejected]        master -> synced/master (non-fast-forward)+error: failed to push some refs to 'myhost1:/Users/jtang/annex'+hint: Updates were rejected because a pushed branch tip is behind its remote+hint: counterpart. Check out this branch and merge the remote changes+hint: (e.g. 'git pull') before pushing again.+hint: See the 'Note about fast-forwards' in 'git push --help' for details.+(Recording state in git...)++manually running a 'git annex sync' usually fixes it, I guess once the sync command runs periodically this problem will go away, is this even OSX specific? I don't quite get the behaviour that is described in [[design/assistant/blog/day_15__its_aliiive]].++> With my changes today, I've seen it successfully recover from this+> situation. [[done]] --[[Joey]] 
+ doc/bugs/OSX_app_issues/comment_10_54d8f3e429df9a9958370635c890abf0._comment view
@@ -0,0 +1,11 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ ip="4.154.3.194"+ subject="comment 10"+ date="2013-01-19T16:13:20Z"+ content="""+The app uses the version of git included in it, because using the system's installed version if there is one is likely to run into other version incompatabilities. ++You can either install git-annex using cabal and homebrew, as documented, or you could go in and delete+all the git programs out of the app, and then it'd use the system's git stuff instead.+"""]]
+ doc/bugs/OSX_app_issues/comment_10_6d23232fbb15d0ee3ab532a4884f81ed._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 10"+ date="2013-04-16T17:14:13Z"+ content="""+@Jeremy, it's been a long time since anyone reported having the \"LSOpenURLsWithRole()\". It seemed to go away when the dmg was fixed to include all the necessary libraries. So my guess is you installed it wrong, somehow, and perhaps it's not finding those libraries that are part of the dmg.++You should be able to start the assistant by running it directly from the dmg.+"""]]
+ doc/bugs/OSX_app_issues/comment_11_5db2baa771fd01a284eac8a16c1c8c67._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlkAghrKEvslMcV2INKUhtPPMsfnzQyyd8"+ nickname="Jeremy"+ subject="comment 11"+ date="2013-04-17T02:02:00Z"+ content="""+@joey, figured it out. There was a program added to the startup list, presumably from when I ran things from the dmg a while ago. Once I delete that, it started fine. Of course, I forgot to write down the name of the program... I remember it had an LW in the name.+"""]]
+ doc/bugs/OSX_app_issues/comment_11_bb2ceb95a844449795addee6986d0763._comment view
@@ -0,0 +1,26 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlYy4BrJyV1PdfqzevCVziXRp89iUH6Xzw"+ nickname="Christopher"+ subject="Code signing errors in log on starting git-annex.app"+ date="2013-01-19T22:30:32Z"+ content="""+When I run via the App and set up a fresh repo, i get some Console.app spam (looks like one per file added to the repo dir... or maybe one per git command?):++    2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x1008b4000): p=73995[git] clearing CS_VALID+    2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x10f99e000): p=73996[git] clearing CS_VALID+    2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x102b44000): p=73997[git] clearing CS_VALID+    2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x1029f4000): p=73998[git] clearing CS_VALID+    ...++and nothing seems to work. The page address and the pid increment steadily with each line.  I'm using 10.8.2 (12C60) on a Mac Pro, and grabbed:++     /git-annex/OSX/current/10.8.2_Mountain_Lion/git-annex.dmg.bz2	++(published 14-Jan-2013 15:19)++It seems to be a code signing issue, perhaps with the vendored git binaries. While things are sort-of working, the web app shows the files flying by really fast. ++Using a fresh repo via `git annex webapp` works great (I built that after much teeth-knashing, brew install/link cycles, and then cabal install git-annex). ++I am very excited for this to work, this is exactly what I've been waiting for to replace dropbox. Came very close to writing it myself a few times (and in Haskell no less!!). +"""]]
+ doc/bugs/OSX_app_issues/comment_12_62170597c7f441d84d48986857998858._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkCw26IdxXXPBoLcZsQFslM67OJSJynb1w"+ nickname="Alexander"+ subject="standalone app dmg won't open in OSX 10.8.3"+ date="2013-04-29T18:05:54Z"+ content="""+I downloaded the app build from [http://downloads.kitenet.net/git-annex/OSX/current/10.8.2_Mountain_Lion/](http://downloads.kitenet.net/git-annex/OSX/current/10.8.2_Mountain_Lion/) and unpacked it, but the .dmg won't open. I can run other dmg's successfully. ++Trying to install git-annex via cabal on the same machine led to this issue: [http://git-annex.branchable.com/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__/#comment-7cc94df1bf9a75a6d03369f3897d6816](http://git-annex.branchable.com/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__/#comment-7cc94df1bf9a75a6d03369f3897d6816)+"""]]
+ doc/bugs/OSX_app_issues/comment_12_f3bc5a4e4895ac9351786f0bdd8005ba._comment view
@@ -0,0 +1,11 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmYiJgOvC4IDYkr2KIjMlfVD9r_1Sij_jY"+ nickname="Douglas"+ subject="Error creating remote repository using ssh on OSX"+ date="2013-01-25T13:18:40Z"+ content="""+There is an issue with creating remote repositories using ssh (the problem may require using a different account name.) I filed the following bug:+++<http://git-annex.branchable.com/bugs/Error_creating_remote_repository_using_ssh_on_OSX/>+"""]]
+ doc/bugs/OSX_app_issues/comment_2_fd560811c57df5cbc3976639642b8b19._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkN91jAhoesnVI9TtWANaBPaYjd1V9Pag8"+ nickname="Benjamin"+ subject="Package for older OS X"+ date="2012-11-17T12:36:45Z"+ content="""+Is there an option to provide application bundle for older versions of OS X? The last time I tried the bundle wouldn't work under 10.5. If no specific features from newer OS X versions are required, it could be enough to add a simple switch when building.+"""]]
+ doc/bugs/OSX_app_issues/comment_7_93e0bb53ac2d7daef53426fbdc5f92d9._comment view
@@ -0,0 +1,15 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"+ nickname="Bret"+ subject="git-annex.app Not working on 32 bit machines"+ date="2012-11-03T19:18:47Z"+ content="""+I tried running the git-annex.app on my Core Duo Macbook pro, and it does not run at all.  I get an error on my system.log++`Nov  3 12:13:26 Bret-Mac [0x0-0x15015].com.branchable.git-annex[155]: /Applications/git-annex.app/Contents/MacOS/runshell: line 52: /Applications/git-annex.app/Contents/MacOS/bin/git-annex: Bad CPU type in executable+Nov  3 12:13:26 Bret-Mac com.apple.launchd.peruser.501[92] ([0x0-0x15015].com.branchable.git-annex[155]): Exited with exit code: 1`++It works on my 64 bit machine, and this has become quite the problem for a while now, where people with newer macs dont compile back for a 32bit machine.  ++Is there any hope for a pre-compiled binary that works on a 32 bit machine?+"""]]
+ doc/bugs/OSX_app_issues/comment_8_141eac2f3fb25fe18b4268786f00ad6a._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"+ nickname="Jimmy"+ subject="comment 8"+ date="2012-11-07T16:08:00Z"+ content="""+I've been updating my haskell platform install recently, i used to try and get the builder to spit out 32/64bit binaries, but recently it's just become too messy, I've just migrated to a full 64bit build system. I'm afraid I won't be able to  provide 32bit builds any more.+"""]]
+ doc/bugs/OSX_app_issues/comment_8_f4d5b2645d7f29b80925159efb94a998._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmOsimKUgz6rxpmsS_nrBQGavEYyUpDlsE"+ nickname="Tim"+ subject="OS X 10.8.2"+ date="2013-01-11T00:07:54Z"+ content="""+Double click on the app, give permission for it to run and ... nothing+"""]]
+ doc/bugs/OSX_app_issues/comment_9_2e6dfca0fd8df04066769653724eae28._comment view
@@ -0,0 +1,17 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"+ nickname="Andrew"+ subject="Prefer the system/path git binaries if they're a newer version"+ date="2013-01-19T06:20:38Z"+ content="""+I have used homebrew to install git v1.8.0.2 but git-annex.app packages git v1.7.10.2. git 1.7 crashes due to some newer directives in my global git config.++    error: Malformed value for push.default: simple+    error: Must be one of nothing, matching, tracking or current.+    fatal: bad config file line 38 in /Users/akraut/.gitconfig+    +    git-annex: fd:13: hGetLine: end of file+    failed+    git-annex: webapp: 1 failed++"""]]
+ doc/bugs/OSX_app_issues/comment_9_e1bbe83a1b9a7385ed6d443d0cc22bc7._comment view
@@ -0,0 +1,18 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlkAghrKEvslMcV2INKUhtPPMsfnzQyyd8"+ nickname="Jeremy"+ subject="Unable to start assistant"+ date="2013-04-16T01:07:05Z"+ content="""+I got the git-annex assistant to work once a long time ago when I ran it the first time directly from the dmg. Ever since then (i.e., after putting it in my applications folder) I have never gotten it to run. Wondering if anyone else has experienced this?++I am running OSX 10.7.5 and just pulled the latest app (05-Apr-2013 10:17).++For reference, when I try to kick off the the assistant from the command line I get the error:++    $ open /Applications/git-annex.app+    LSOpenURLsWithRole() failed with error -10810 for the file /Applications/git-annex.app.++I am wondering if there is some sort of file or modification that was made when I accidently kicked it off initially from the dmg, if so any thoughts on what to clear / change?++"""]]
+ doc/bugs/Rsync_encrypted_remote_asks_for_ssh_key_password_for_each_file.mdwn view
@@ -0,0 +1,30 @@+What steps will reproduce the problem?++Add an encrypted rsync remote by it's 'Host' value in ~/.ssh/config.++eg.:++cat ~/.ssh/config | grep Host++    Host serverNick++git annex initremote rsyncRemote type=rsync rsyncurl=serverNick:/home/USER/Music encryption=USER@gmail.com++git annex copy some\ artist --to serverNick+++What is the expected output? What do you see instead?++I'd expect it to remember the key password like a normal ssh remote.  Instead I get asked for the key password 3 times for each file in the folder.++What version of git-annex are you using? On what operating system?++3.20130216.  Arch x64 (up to date as of 2013-03-07)++Please provide any additional information below.+++[[!meta title="rsync special remote does not use ssh connection caching"]]++> [[done]]; ssh connection caching is now done for these remotes.+> --[[Joey]]
doc/bugs/Small_archive_behaving_like_archive.mdwn view
@@ -29,3 +29,5 @@  # End of transcript or log. """]]++[[!tag moreinfo]]
+ doc/bugs/Stress_test/comment_10_1694e990eab6592159309c231c6dcc16._comment view
@@ -0,0 +1,12 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 10"+ date="2013-05-06T16:54:36Z"+ content="""+My estimate was indeed slightly optimistic. While I did not run the whole import, it did run slower for the later batches of files. As far as I can see, that slowdown is just because git gets slower as it has more files. So nothing I can do about it. git-annex is now scaling well itself, though.++Re checksumming on startup: There was a bug that caused the assistant to re-checksum all direct mode files on startup. This bug was fixed in version 4.20130417. If you're using that version and still see it re-checksumming files, please file a new bug report about it, as this is not intended behavior.++You seem to be saying that the assistant is failing to add some files, and then when stopped and restarted it finds and adds them. I don't quite know how that would happen. If you can provide a test case that I can use to reproduce that behavior, I will try to debug it.+"""]]
+ doc/bugs/Stress_test/comment_11_ab4cb6eefd279e6c1f229e089f703581._comment view
@@ -0,0 +1,25 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"+ nickname="Laszlo"+ subject="comment 11"+ date="2013-05-11T05:36:48Z"+ content="""+rechecksuming: it seem like it is indeed fixed in the newest (2013.05.01) version downloaded from here:+http://downloads.kitenet.net/git-annex/linux/++I tried to add the big stress test dir as a secondary repository into git-annex (along with my real data dir), but +seems like some library is not matching on my system, so some curl is complaining:++    curl: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.12' not found (required by /home/user/Desktop/down/git-annex.linux//usr/lib/i386-linux-gnu/libldap_r-2.4.so.2)++I'm on ubuntu 10.04.++And the log file is starting to fill up, so maybe once a problem occur, it should only write into the log file once.++I will redone this stress test next week, without combining with any repository.+Thank you very much for your response, I do appreciate you are bothering/dealing with my complains!:)++Best, + Laszlo++"""]]
+ doc/bugs/Stress_test/comment_8_a01995bdca7ade7dde9842b53fbc4e0c._comment view
@@ -0,0 +1,57 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"+ nickname="Laszlo"+ subject="Definite improvement"+ date="2013-05-03T06:27:12Z"+ content="""+Hi,++I have just tried it out again with the latest (20130501) version.++It is really nice to see you have been working on it, and it have improved tremendously!+The logging issue solved, and logrotates even, and it finished importing without crashing!++Remaining polishing things:++a)+The import time is not as good (as you write), it slowes itself down.+It is true the first 10000 files import in about an hour, but it finishes with everything+in 9 hours 20 minutes.+(on a normal laptop, the last 5000 file portion took more then 2 hours)++b) +Every startup means rechecksuming everything, so it means the second start took also around 8-12 hours.+(I don't know exactly because it finished somewhere during the night, but it was longer then 8 hours)+I don't think rechecksuming is necessary at all, if the filename, size and date have not modified, +then why rechecksuming (sha) it?+++c) +It is leaking. +At the second startup, it reported it successfully added:+    Added 2375 files 5 files probe25366.txt++I have not touched the directory. ls confirms leaking:++    After first start (importing):+    annex_many/.git$ ls -lR |wc -l+    770199++    After second startup:+    annex_many/.git$ ls -lR |wc -l+    788351++d) Without ulimit raise, it does not work at all.+I think it could be solved by not watching each and every directory all the time.+Every users will likely have a working directory and some which he don't intend to touch/modify at all.+Some usecases: photo archiving, video archiving, finished work archiving, etc++All the above results with the stress test script. +I would love to have a confirmation by a thirdparty.++Overall I'm impressed with the work you have done.++Best, + Laszlo++"""]]
+ doc/bugs/Stress_test/comment_9_9f7efe81b7e40aaa04a865394c53e20f._comment view
@@ -0,0 +1,52 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"+ nickname="Laszlo"+ subject="Maybe it is not leaking after all"+ date="2013-05-03T18:37:48Z"+ content="""+I have been working the whole day zipping up (tar.gz) all the unused directories.+Now my real data dir looks like this:++    ./annex_real/work_done$ du -hs .+    1,1G	.+    Has 9088 files and 1608 directories in total:+    ./annex_real/work_done$ ls -R1l |grep \\-r |wc -l+    9088+    ./annex_real/work_done$ ls -R1l |grep ^d |wc -l+    1608++When I first started git annex, it added 5492 files, then next time it added the missing 3596 files. Then it stopped adding files.+From the gui everything looked fine even at the first start (performed startup scan), even in the log files (daemon.log.x) was nothing suspicious.++    ./annex_real/work_done$ for i in ../.git/annex/daemon.log.*; do echo $i; cat $i |grep files; done+     ../.git/annex/daemon.log.1+     ../.git/annex/daemon.log.2+     ../.git/annex/daemon.log.3+     ../.git/annex/daemon.log.4+     [2013-05-03 20:03:34 CEST] Committer: Adding 3596 files+     ../.git/annex/daemon.log.5+     [2013-05-03 19:15:22 CEST] Committer: Adding 5492 files++As you can see, this case is not a stress test at all, +it is really the minimal test case, 1.1GB diskspace, 9088 files and a thousand dirs. +The real question is, why git-annex miss at the first startup 3492 files (ie. adding all the files).++It would help tremendously, if it would display at startup how many files he found, +and when it adds, then how many left to be added.+Something like this:++    (scanning...) [2013-05-03 20:03:14 CEST] Watcher: Performing startup scan+    (started...)+    [2013-05-03 20:03:34 CEST] Committer: Found 9088 files+    [2013-05-03 20:03:34 CEST] Committer: Adding 3596 files of 9088 remaining files (9088 in total)+    ....+    [2013-05-03 20:05:04 CEST] Committer: Adding 1492 files of 5492 remaining files (9088 in total)+    ....+    [2013-05-03 20:06:02 CEST] Committer: Adding 4000 files of 4000 remaining files (9088 in total)++So it is definietly a bug, and I stuck how to debug it further. Everything looks just fine.++Best, + Laszlo++"""]]
+ doc/bugs/Switching_from_indirect_mode_to_direct_mode_breaks_duplicates.mdwn view
@@ -0,0 +1,30 @@+#What steps will reproduce the problem?++1. Create a new repository in indirect mode.++2. Add the same file twice under a different name. Now you have two symlinks pointing to the same file under .git/annex/objects/++3. Switch to direct mode. The first symlink gets replaced by the actual file. The second stays unchanged, pointing to nowhere. But git annex whereis still reports it has a copy.++4. Delete the first file. Git annex whereis still thinks it has a copy of file 2, which is not true -> data loss.++#What is the expected output? What do you see instead?++When switching to direct mode, both symlinks should be replaced by a copy (or at least a hardlink) of the actual file.++> The typo that caused this bug is fixed. --[[Joey]] ++#What version of git-annex are you using? On what operating system?++3.20130107 on Arch Linux x64++#Please provide any additional information below.++The deduplication performed by git-annex is very dangerous in itself+because files with identical content become replaced by references to the+same file without the user necessarily being aware. Think of the user+making a copy of a file, than modifying it. He would expect to end up with+two files, the unchanged original and the modified copy. But what he really+gets is two symlinks pointing to the same modified file.++> I agree, it now copies rather than hard linking.  [[done]] --[[Joey]] 
doc/bugs/Unable_to_switch_back_to_direct_mode.mdwn view
@@ -52,3 +52,4 @@ ### Please provide any additional information below.  +> [[done]]; see comments. --[[Joey]]
+ doc/bugs/android_4.2.1__44___galaxy_nexus_java.lang.SecurityException.mdwn view
@@ -0,0 +1,41 @@+### Please describe the problem.+The app fails to open after the install++### What steps will reproduce the problem?+Downloaded, installed, chose open.++### What version of git-annex are you using? On what operating system?+today's version. android 4.2.1++### Please provide any additional information below.++I also sent this by email.++Falling back to hardcoded app location; cannot find expected files in /data/app-lib+git annex webapp+u0_a72@android:/sdcard/git-annex.home $ git annex webapp+Launching web browser on http://127.0.0.1:48812/?auth=cf45448c3690730f05f1a9567e62c6a3cf8d25c43ed14362c8ae78601de0e96d32d2b02923ba95962e80c9bd8ffab621918dd582741f18160f6e2565af61aba5+Starting: Intent { act=android.intent.action.VIEW dat=http://127.0.0.1:48812/?auth=cf45448c3690730f05f1a9567e62c6a3cf8d25c43ed14362c8ae78601de0e96d32d2b02923ba95962e80c9bd8ffab621918dd582741f18160f6e2565af61aba5 }+java.lang.SecurityException: Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL+        at android.os.Parcel.readException(Parcel.java:1425)+        at android.os.Parcel.readException(Parcel.java:1379)+        at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:1906)+        at com.android.commands.am.Am.runStart(Am.java:494)+        at com.android.commands.am.Am.run(Am.java:109)+        at com.android.commands.am.Am.main(Am.java:82)+        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)+        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)+        at dalvik.system.NativeStart.main(Native Method)+failed to start web browser++[[!format sh """+# If you can, paste a complete transcript of the problem occurring here.+# If the problem is with the git-annex assistant, paste in .git/annex/debug.log+++# End of transcript or log.+"""]]++This is a duplicate of [[Android_app_permission_denial_on_startup]]++[[closing|done]] as dup. --[[Joey]] 
+ doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn view
@@ -0,0 +1,27 @@+### Please describe the problem.++This is a one-off thing, not a reproducible bug.  It was just so weird that I wanted to make a note of it in case somebody else had the same problem and it was reproducible.++I have a remote on the a USB drive which I mount once in a while on /Volumes/TOSHIBAEXT which has a remote on /Volumes/TOSHIBAEXT/annex.   It's a remote which I created by hand using "git clone" a long time ago, not something the assistant set up for me.++Anyway, today the assistant kept reporting that it could not sync to it.  I didn't know why, because I checked in my Finder sidebar and it showed a mounted drive called TOSHIBAEXT.  It's only when I checked with the command line that I noticed something was up!  There was now an ordinary directory at /Volumes/TOSHIBAEXT/annex.   This had apparently been created at some point when the drive was unmounted, so when it re-mounted, because there was a directory in the way, it re-mounted at "/Volumes/TOSHIBAEXT 1".  But it was displayed in the finder sidebar as just "TOSHIBAEXT" anyway because the finder hides this workaround from the user for whatever reason.++Presumably git-annex assistant at some point, for some reason, created an ordinary directory where it expected to find the annex.++I wonder if this may have to do with the fact that this is a non-bare, created-by-hand repo, from before I was using the assistant, not a normal bare remote that the assistant would have created for me if I'd been using the webapp.++### What steps will reproduce the problem?++I've only seen it once, and report the bug not as an outstanding issue but only as a heads-up that this has ever happened.++### What version of git-annex are you using? On what operating system?++git-annex version: 4.20130501-gb61740e++OS X lion (10.7)++### Please provide any additional information below.++I wasn't logging when this happened.++Again, just a heads-up; I'll keep my eye open for this happening again and post more info if it does.
+ doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn view
@@ -0,0 +1,34 @@+After a series of pretty convoluted copying files around between annex'd repos and pulling changes around between repos. I noticed that occassionally when git-annex tries to stage files (the `.git-annex/*/*/*logs`) git some times gets wedged and doing a "git commit -a" doesn't seem to work or files might not get added thus leaving a bunch of untracked files or modified files that aren't staged for a commit.++I tried running a *`git rm --cached -f -r *`* then *git add -u .git-annex/* or the usual *git add* then a commit fixes things for me. If I don't do that then my subsequent merges/pulls will fail and result in *no known copies of files* I suspect git-annex might have just touched some file modes and git picked up the changes but got confused since there was no content change. It might also just be a git on OSX thing and it doesn't affect linux/bsd users.++For now it's just a bit of extra work for me when it does occur but it does not seem to occur often.++> What do you mean when you say that git "got wedged"? It hung somehow?+>+> If git-annex runs concurrently with another git command that locks+> the repository, its git add of log files can fail.+> +> Update: Also, of course, if you are running a "got annex get" or+> similar, and ctrl-c it after it has gotten some files, it can+> end up with unstaged or in some cases un-added log files that git-annex+> wrote -- since git-annex only stages log files in git on shutdown, and+> ctrl-c bypasses that.+> --[[Joey]] ++>> It "got wedged" as in git doesn't let me commit anything, even though it tells me that there is stuff to be committed in the staging area.++>>> I've never seen git refuse to commit staged files. There would have to+>>> be some error message? --[[Joey]] ++>>>> there were no error messages at all++>>>>> Can I see a transcript? I'm having difficulty getting my head around+>>>>> what git is doing. Sounds like the files could just not be `git+>>>>> added` yet, but I get the impression from other things that you say+>>>>> that it's not so simple. --[[Joey]] ++This turns out to be a bug in git, and I have posted a bug report on the mailing list.+The git-annex behavior that causes this situation is being handled as+another bug, [[git-annex directory hashing problems on osx]].+So, closing this bug report. [[done]] --[[Joey]]
+ doc/bugs/git-annex_on_crippled_filesystem_can_still_failed_due_to_case_.mdwn view
@@ -0,0 +1,32 @@+What steps will reproduce the problem?++    $ git clone ~/corbeau/travail/ travail+    Cloning into 'travail'...+    done.+    Checking out files: 100% (8670/8670), done.+    $ cd travail+    $ git annex init "portable USB drive"+    init portable USB drive +      Detected a crippled filesystem.++      Enabling direct mode.++    git-annex: /media/LACIE/travail/.git/annex/objects/k1: createDirectory: already exists (File exists)+    failed+    git-annex: init: 1 failed++What version of git-annex are you using? On what operating system?+    $ apt-cache policy git-annex+    git-annex:+    Installé : 3.20130216++This on a amd64 debian sid recently updated+++Please provide any additional information below.++The problem is that git annex already created a /media/LACIE/travail/.git/annex/objects/K1 file (same name in uppercase) and FAT isn't realy case sensitive.+++> I *think* I've found the place that used createDirectory+> rather than createDirectoryIfMissing and fixed it. [[done]] --[[Joey]]
+ doc/bugs/git_annex_gets_confused_about_remotes_with_dots_in_their_names.mdwn view
@@ -0,0 +1,34 @@+For test.com//test, I get this:++    % git annex copy . --to test.com//test+    (getting UUID for test...) git-annex: there is no git remote named "test.com//test"++And my .git/config changes from++    [remote "test.com//test"]+    	url = richih@test.com:/test+    	fetch = +refs/heads/*:refs/remotes/test.com//test/*++to++    [remote "test.com//test"]+    	url = richih@test.com:/test+    	fetch = +refs/heads/*:refs/remotes/test.com//test/*+    	annex-uuid = xyz+    [remote "test"]+    	annex-uuid = xyz+++Unless I am misunderstanding something, git annex gets confused about what the name of the remote it supposed to be, truncates at the dot for some operations and uses the full name for others.++> I've fixed this bug. [[done]]+> +> However, using "/" in a remote name seems likely to me to confuse +> git's own remote branch handling. Although I've never tried it.+> --[[Joey]] ++>> From what I can see, git handles / just fine, but would get upset about : which is why it's not allowed in a remote's name.+>> My naming scheme is host//path/to/annex. It sorts nicely and gives all important information left to right with the most specific parts at the beginning and end.+>> If you have any other ideas or scheme, I am all ears :)+>> Either way, thanks for fixing this so quickly.+>> -- RichiH
+ doc/bugs/git_defunct_processes___40__child_of_git-annex_assistant__41__.mdwn view
@@ -0,0 +1,34 @@+What steps will reproduce the problem?++run git annex assistant, add a file, which is picked up and pushed by the assistant.  ++What is the expected output? What do you see instead?++a ps -ef shows a large number of defunct git processes.. for example:+<pre>+nelg      9622     1  0 02:01 ?        00:00:01 git-annex assistant+nelg      9637  9622  0 02:01 ?        00:00:00 git --git-dir=/home/nelg/Downloads/test2/.git --work-tree=/home/nelg/Downloads/test2 cat-file --batch+nelg     12080  9622  0 02:19 ?        00:00:00 [git] &lt;defunct&gt;+nelg     12082  9622  0 02:19 ?        00:00:00 [git] &lt;defunct&gt;+nelg     12083  9622  0 02:19 ?        00:00:00 [git] &lt;defunct&gt;+nelg     12084  9622  0 02:19 ?        00:00:00 [git] &lt;defunct&gt;+-----+</pre>++What version of git-annex are you using? On what operating system?++Compiled git annex from git (cbcd208d158f8e42dda03a5eeaf1bac21045a140), on Mandriva 2010.2, 32 bit, using ghc-7.4.1.+ git version 1.7.1+++Please provide any additional information below.++I also found that the version of git I have does not support the option: --allow-empty-message+So, suggest that if the version of git installed is an older version, that the params in  Assistant/Threads/Committer.hs+are changed to  [ Param "-m", Param "git assistant".... or something like that.++I have done this on my copy for testing it.++For testing, I am also using two repositories on the same computer.  I set this up from the command line, as the web app does not seem to support syncing to two different git folders on the same computer.++> [[done]]; all zombies are squelched now in the assistant. --[[Joey]]
+ doc/bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.mdwn view
@@ -0,0 +1,39 @@+as of git-annex version 3.20110719, all git-annex commits only contain the word "update" as a commit message. given that the contents of the commit are pretty non-descriptive (SHA1 hashes for file names, uuids for repository names), i suggest to have more descriptive commit messages, as shown here:++    /mnt/usb_disk/photos/2011$ git annex get+    /mnt/usb_disk/photos/2011$ git show git-annex+    [...]+    usb-disk-photos: get 2011+    +    * 10 files retrieved from 2 sources (9 from local-harddisk, 1 from my-server)+    * 120 files were already present+    * 2 files could not be retrieved+    /mnt/usb_disk/photos/2011$ cd ~/photos/2011/07+    ~/photos/2011/07$ git copy --to my-server+    ~/photos/2011/07$ git show git-annex+    [...]+    local-harddisk: copy 2011/07 to my-server+    +    * 20 files pushed+    ~/photos/2011/07$++in my opinion, the messages should at least contain++* what command was used+* in which repository they were executed+* which files or directories they affected (not necessarily all files, but what was given on command line or implicitly from the working directory)++--[[chrysn]]++> The implementation of the git-annex branch precludes more descriptive+> commit messages, since a single commit can include changes that were+> previously staged to the branch's index file, or spooled to its journal+> by other git-annex commands (either concurrently running or+> interrupted commands, or even changes needed to automatically merge+> other git-annex branches).+> +> It would be possible to make it *less* verbose, with an empty commit+> message. :) --[[Joey]] ++>> Closing as this is literally impossible to do without making+>> git-annex worse. [[done]] --[[Joey]] 
doc/design/assistant.mdwn view
@@ -15,18 +15,18 @@   [presentation at LCA2013](http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4) * Month 8: [[!traillink Android]] * Month 9: [[screencasts|videos]] and polishing-* Month 10: bugfixing, Android webapp+* Month 10: bugfixing, [[Android]] webapp  We are, approximately, here: -* Month 11: more user-driven features and polishing-* Month 12: "Windows purgatory" [[Windows]]+* Month 11: [[Android]] and [[!traillink Windows]] porting+* Month 12: finishing touches  ## porting  * [[OSX]] port is in fairly good shape, but still has some room for improvement-* [[android]] port is just getting started-* Windows port does not exist yet+* [[android]] port is zooming along+* [[Windows]] port is barely getting started  ## not yet on the map: 
+ doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment view
@@ -0,0 +1,14 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"+ nickname="Jörn"+ subject="Mount detection"+ date="2012-09-21T09:23:34Z"+ content="""+regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?++Details see:++1. <http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x>+2. <http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c>+3. <https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438>+"""]]
doc/design/assistant/android.mdwn view
@@ -1,29 +1,20 @@-### goals--1. Get git-annex working at the command line in Android,-   along with all the programs it needs, and the assistant. **done**-2. Deal with crippled filesystem; no symlinks; etc. **done**-3. Get an easy to install Android app built. **done**-4. Get the webapp working. Needs Template Haskell, or -   switching to <http://www.yesodweb.com/blog/2012/10/yesod-pure>.-5. Possibly, switch from running inside terminal app to real standalone app.-   See <https://github.com/neurocyte/android-haskell-activity>-   and <https://github.com/neurocyte/foreign-jni>.--### Android specific features+The Android port is just about usable. Still, we have some fun todo items+to improve it. -The app should be aware of power status, and avoid expensive background-jobs when low on battery or run flat out when plugged in.+## high-priority TODO -The app should be aware of network status, and avoid expensive data-transfers when not on wifi. This may need to be configurable.+* [[bugs/Android_app_permission_denial_on_startup]]+* S3 doesn't work (at least to Internet Archive: +  "connect: does not exist (connection refused)")  ## TODO -* autostart any configured assistants. Best on boot, but may need to only-  do it when app is opened for the first time.-* Don't make app initially open terminal, but go to a page that-  allows opening the webapp or terminal.+* Don't make app initially open terminal + webapp, but go to a page that+  allows opening the webapp or terminal.  +  Possibly, switch from running inside terminal app to real standalone app.+  See <https://github.com/neurocyte/android-haskell-activity>+  and <https://github.com/neurocyte/foreign-jni>.+ * I have seen an assistant thread crash with an interrupted system call   when the device went to sleep while it was running. Auto-detect and deal with   that somehow.@@ -31,11 +22,19 @@ * git does not support http remotes. To fix, need to port libcurl and   allow git to link to it. * getEnvironment is broken on Android <https://github.com/neurocyte/ghc-android/issues/7>-  and a few places use it.+  and a few places use it. I have some horrible workarounds in place. * Get local pairing to work. network-multicast and network-info don't   currently install.-* Get test suite to pass. Current failure is because `git fetch` is somehow-  broken with local repositories.-* Webapp: Bootstrap icons are not displayed. Check, is this a problem-  with the icon file not being served up with right content, or is it-  a browser incompatability?+* Get test suite to pass.+* Make app autostart on boot, optionally. <http://stackoverflow.com/questions/1056570/how-to-autostart-an-android-application>+* The app should be aware of power status, and avoid expensive background+  jobs when low on battery or run flat out when plugged in.+* The app should be aware of network status, and avoid expensive data+  transfers when not on wifi. This may need to be configurable.+* glacier and local pairing are not yet enabled for Android.+* The "Files" link doesn't start a file browser. Should be possible to do+  on Android via intents, I suppose?+* Adding removable drives would work, but the android app is not in the +  appropriate group to write to them. `WRITE_MEDIA_STORAGE` permission+  needed. Added to AndroidManifest, but did not seem to be used.+  Googleing for it will find a workaround that needs a rooted device.
doc/design/assistant/blog/day_195__real_android_app.mdwn view
@@ -1,12 +1,12 @@ Well, it's built. [Real Android app for git-annex](http://downloads.kitenet.net/git-annex/android/current/). -[[!img /assistant/android/appinstalled.png]]+[[!img /android/appinstalled.png]]  When installed, this will open a terminal in which you have access to git-annex and all the git commands and busybox commands as well. No webapp yet, but command line users should feel right at home. -[[!img /assistant/android/terminal.png]]+[[!img /android/terminal.png]]  Please test it out, at least as far as installing it, opening the terminal, and checking that you can run `git annex`; I've only been able to test on
doc/design/assistant/blog/day_253__OMG.mdwn view
@@ -1,4 +1,4 @@-[[!img /assistant/android/webapp.png alt="git-annex webapp on Android"]]+[[!img /android/webapp.png alt="git-annex webapp on Android"]]  I fixed what I thought was keeping the webapp from working on Android, but then it started segfaulting every time it was started. Eventually I
+ doc/design/assistant/blog/day_254__Android_app_polishing.mdwn view
@@ -0,0 +1,35 @@+There's a new page [[/Android]] that documents using git-annex on Android+in detail.++The Android app now opens the webapp when a terminal window is opened.+This is good enough for trying it out easily, but far from ideal.++Fixed an EvilSplicer bug that corrupted newlines in +the static files served by the webapp. Now the icons in the webapp+display properly, and the javascript works.++Made the startup screen default to `/sdcard/annex` for the repository+location, and also have a button to set up a camera repository. The camera+repository is put in the "source" preferred content group, so it will only+hang onto photos and videos until they're uploaded off the Android device.++Quite a lot of other small fixes on Android. At this point I've tested the+following works:++* Starting webapp.+* Making a repository, adding files.+* All the basic webapp UI.++However, I was not able to add any remote repository using only the webapp,+due to some more problems with the network stack.++* Jabber and Webdav don't quite work ("getProtocolByname: does not exist (no+  such protocol name: tcp)").+* SSH server fails.+  ("Network/Socket/Types.hsc:(881,3)-(897,61): Non-exhaustive patterns in case")+  I suspect it will work if I disable the DNS expansion code.++So, that's the next thing that needs to be tackled.++If you'd like to play with it in its current state, I've updated the+Android builds to incorporate all my work so far.
+ doc/design/assistant/blog/day_255__Debian_release_day.mdwn view
@@ -0,0 +1,26 @@+Created a backport of the latest git-annex release for Debian 7.0 wheezy.+Needed to backport a dozen haskell dependencies, but not too bad.+This will be available in the backports repository once Debian+starts accepting new packages again. I plan to keep the backport up-to-date+as I make new releases.++The cheap Android tablet I bought to do this last Android push with came+pre-rooted from the factory. This may be why I have not seen this bug:+[[bugs/Android_app_permission_denial_on_startup]]. If you have Android+4.2.2 or a similar version, your testing would be helpful for me to know if+this is a widespread problem. I have an idea about a way to work around the+problem, but it involves writing Java code, and probably polling a file,+ugh.++Got S3 support to build for Android. Probably fails to work +due to the same network stack problems affecting WebDAV and Jabber.++Got removable media mount detection working on Android. Bionic has an+amusing stub for `getmntent` that prints out "FIX ME! implement+getmntent()". But, `/proc/mounts` is there, so I just parse it.+Also enabled the app's `WRITE_MEDIA_STORAGE` permission to allow+access to removable media. However, this didn't seem to do anything. :(++Several fixes to make the Android webapp be able to set up repositories on+remote ssh servers. However, it fails at the last hurdle with what+looks like a `git-annex-shell` communication problem. Almost there..
+ doc/design/assistant/blog/day_256__8bit.mdwn view
@@ -0,0 +1,27 @@+This seems a very auspicious day to have finally gotten the Android app+doing something useful! I've fixed the last bugs with using it to set up a+remote ssh server, which is all I need to make my Android tablet+sync photos I take with a repository on my laptop.++[[!img /android/DCIM.png alt="git-annex webapp running on Android"]]++I set this up entirely in the GUI, except for needing to switch to the+terminal twice to enter my laptop's password.++How fast is it? Even several minute long videos transfer before I can+switch from the camera app to the webapp. To get this screenshot with it in+the process of syncing, I had to take a dozen pictures in a minute. Nice+problem to have. ;)++Have fun trying this out for yourself after tonight's autobuilds. But a+warning: One of the bugs I fixed today had to be fixed in `git-annex-shell`,+as run on the ssh server that the Android connects to. So the Android app+will only work with ssh servers running a new enough version of git-annex.++----++Worked on geting git-annex into Debian testing, which is needed before+the wheezy backport can go in. Think I've worked around most of the issues+that were keeping it from building on various architectures.++Caught up on some bug reports and fixed some of them.
+ doc/design/assistant/blog/day_257__rainy_day.mdwn view
@@ -0,0 +1,6 @@+Put in a fix for `getprotobyname` apparently not returning anything for+"tcp" on Android. This might fix all the special remotes there, but I don't+know yet, because I have to rebuild a lot of Haskell libraries to try it.++So, I spent most of today writing a script to build all the Haskell+libraries for Android from scratch, with all my patches.
+ doc/design/assistant/blog/day_258__beginning_of_the_end.mdwn view
@@ -0,0 +1,24 @@+Fixed a nasty bug that affects at least some FreeBSD systems. It misparsed+the output of `sha256`, and thought every file had a SHA256 of "SHA256".+Added multiple layers of protection against checksum programs not having+the expected output format.++Lots more building and rebuilding today of Android libs than I wanted to do.+Finally have a completly clean build, which might be able to open TCP+connections. Will test tomorrow.++In the meantime, I fired up the evil twin of my development laptop.+It's identical, except it runs Windows.++I installed the Haskell Platform for Windows on it, and removed+some of the bloatware to free up disk space and memory for development.+While a rather disgusting experience, I certainly have a usable Haskell+development environment on this OS a lot faster than I did on Android!+Cabal is happily installing some stuff, and other stuff wants me to install+Cygwin.++So, the clock on my month of working on a Windows port starts now. Since+I've already done rather a lot of ground work that was necessary for a+Windows port (direct mode, crippled filesystem support), and for general+sanity and to keep everything else from screeching to a halt, I plan to+only spend half my time messing with Windows over the next 30 days.
+ doc/design/assistant/blog/day_259__Android_dominos_toppling.mdwn view
@@ -0,0 +1,15 @@+It all came together for Android today. Went from a sort of working app+to a fully working app!++* rsync.net works.+* Box.com appears to work -- at least it's failing with the same+  timeout I get on my linux box here behind the firewall of dialup doom.+* XMPP is working too!++These all needed various little fixes. Like loading TLS certificates from+where they're stored on Android, and ensuring that totally crazy file+permissions from Android (----rwxr-x for files?!) don't leak out into rsync+repositories. Mostly though, it all just fell into place today.+Wonderful..++The Android autobuild is updated with all of today's work, so try it out.
+ doc/design/assistant/blog/day_260__Windows_dev_environment.mdwn view
@@ -0,0 +1,46 @@+Set up my Windows development environment. For future reference, I've+installed:++* haskell platform for windows+* cygwin+* gcc and a full C toolchain in cygwin+* git from upstream (probably git-annex will use this)+* git in cygwin (the other git was not visible inside cygwin)+* vim in cygwin+* vim from upstream, as the cygwin vim is not very pleasant to use+* openssh in cygwin (seems to be missing a ssh server)+* rsync in cygwin+* Everything that `cabal install git-annex` is able to install successfully.  +  This includes all the libraries needed to build regular git-annex,+  but not the webapp. Good start though.++Result basically feels like a linux system that can't decide which way+slashes in paths go. :P I've never used Cygwin before (I last used a+Windows machine in 2003 for that matter), and it's a fairly impressive hack.++----++Fixed up git-annex's configure program to run on Windows (or, at least, in+Cygwin), and have started getting git-annex to build.++For now, I'm mostly stubbing out functions that use unix stuff. Gotten the+first 44 of 300 source files to build this way.++Once I get it to build, if only with stubs, I'll have a good+idea about all the things I need to find Windows equivilants of.+Hopefully most of it will be provided by+<http://hackage.haskell.org/package/unix-compat-0.3.0.1>.++----++So that's the plan. There is a possible shortcut, rather than doing a full+port. It seems like it would probably not be too hard to rebuild ghc inside+Cygwin, and the resulting ghc would probably have a full POSIX emulation+layer going through cygwin. From ghc's documentation, it looks like that's+how ghc used to be built at some point in the past, so it would probably+not be too hard to build it that way. With such a cygwin ghc, git-annex+would probably build with little or no changes. However, it would be a+git-annex targeting Cygwin, and not really a native Windows port. So+it'd see Cygwin's emulated POSIX filesystem paths, etc. That+seems probably not ideal for most windows users.. but if I get really stuck+I may go back and try this method.
+ doc/design/assistant/blog/day_261__Windows_first_stage_complete.mdwn view
@@ -0,0 +1,29 @@+After working on it all day, git-annex now builds on Windows!++Even better, `git annex init` works. So does `git annex status`, and+probably more. Not `git annex add` yet, so I wasn't able to try much more.++I didn't have to add many stubs today, either. Many of the missing Windows+features were only used in code paths that made git-annex faster, but I+could fall back to a slower code path on Windows.++The things that are most problimatic so far:++* POSIX file locking. This is used in git-annex in several places to +  make it safe when multiple git-annex processes are running. I put in+  really horrible dotfile type locking in the Windows code paths, but I+  don't trust it at all of course.+* There is, apparently, no way to set an environment variable in Windows+  from Haskell. It is only possible to set up a new process' environment+  before starting it. Luckily most of the really crucial environment+  variable stuff in git-annex is of this latter sort, but there were+  a few places I had to stub out code that tries to manipulate git-annex's+  own environment.++The `windows` branch has a diff of 2089 lines. It add 88 ifdefs to the code+base. Only 12 functions are stubbed out on Windows. This could be so much+worse.++Next step: Get the test suite to build. Currently ifdefed out because it+uses some stuff like `setEnv` and `changeWorkingDirectory` that I don't know+how to do in Windows yet.
+ doc/design/assistant/blog/day_262__DOS_path_separators.mdwn view
@@ -0,0 +1,14 @@+It's remarkable that a bad decision made in 1982 can cause me to waste an+entire day in 2013. Yes, `/` vs `\` fun time. Even though I long ago+converted git-annex to use the haskell `</>` operator wherever it builds+up paths (which transparently handles either type of separator), I still+spent most of today dealing with it. Including some libraries I use that+get it wrong. Adding to the fun is that git uses `/` internally, even on+Windows, so Windows separated paths have to be converted when being fed+into git.++Anyway, `git annex add` now works on Windows. So does `git annex find`,+and `git annex whereis`, and probably most query stuff.++Today was very un-fun and left me with a splitting headache, so I will+certainly *not* be working on the Windows port tomorrow.
+ doc/design/assistant/blog/day_263_catching_up.mdwn view
@@ -0,0 +1,11 @@+Spent some time today to get caught up on bug reports and website traffic.+Fixed a few things.++Did end up working on Windows for a while too. I got `git annex drop`+working. But nothing that moves content quite works yet..++I've run into a stumbling block with `rsync`. It thinks that+`C:\repo` is a path on a ssh server named "C". Seems I will need to translate+native windows paths to unix-style paths when running rsync.++[[!meta date="13 May 2013"]]
+ doc/design/assistant/blog/day_264__Windows_second_stage_complete.mdwn view
@@ -0,0 +1,21 @@+The Windows port can now do everything in the [[walkthrough]]. It can use+both local and remote git repositories. Some special remotes work+(directory at least; probably rsync; likely any other special remote that+can have its dependencies built). Missing features include most special+remotes, gpg encryption, and of course, the assistant.++Also built a NullSoft installer for git-annex today. This was made very+easy when I found the Haskell ncis library, which provides a DSL embedding+the language used to write NullSoft installers into Haskell. So I didn't+need to learn a new language, yay! And could pull in all my helpful+Haskell utility libraries in the program that builds the installer.++The only tricky part was: How to get git-annex onto PATH? The standard way+to do this seems to be to use a multiple-hundred line include file. Of+course, that file does not have any declared license..  Instead of that,+I used a hack. The git installer for Windows adds itself to PATH, and is+a pre-requisite for git-annex. So the git-annex installer just installs+it into the same directory as git.++So.. I'll be including this first stage Windows port, with installer in+the next release. Anyone want to run a Windows autobuilder?
+ doc/design/assistant/blog/day_265__correctness.mdwn view
@@ -0,0 +1,23 @@+Laid some groundwork for porting the test suite to Windows, and getting it+working in direct mode. That's not complete, but even starting to run the+test suite in direct mode and looking at all the failures (many of them+benign, like files not being symlinks) highlighted something+I have been meaning to look into for quite a while: Why, in direct mode,+`git-annex` doesn't operate on data staged in the index, but requires you+commit changes to files before it'll see them. That's an annoying+difference between direct and indirect modes.++It turned out that I introduced this behavior back on+[[January 5th|day_163__free_features]], working around a nasty+bug I didn't understand. Bad Joey, should have root caused the bug at the+time! But the commit says I was stuck on it for hours, and it was+presenting as if it was a bug in `git cat-file` itself, so ok. Anyway,+I quickly got to the bottom of it today, fixed the underlying bug (which +was in git-annex, not git itself), and got rid of the workaround and its+undesired consequences. Much better.++The test suite is turning up some other minor problems with direct mode.+Should have found time to port it earlier.++Also, may have fixed the issue that was preventing GTalk from working on+Android. (Missing DNS library so it didn't do SRV lookups right.)
+ doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn view
@@ -0,0 +1,34 @@+It's possible for one git annex repository to configure a special remote+that it makes sense for other repositories to also be able to use. Today I+added the UI to support that; in the list of repositories, such+repositories have a "enable" link.++To enable pre-existing rsync special remotes, the webapp has to do the same+probing and ssh key setup that it does when initially creating them.+Rsync.net is also handled as a special case in that code. There was one+ugly part to this.. When a rsync remote is configured in the webapp,+it uses a mangled hostname like "git-annex-example.com-user", to+make ssh use the key it sets up. That gets stored in the `remote.log`, and so+the enabling code has to unmangle it to get back to the real hostname.++---++Based on the still-running [[prioritizing_special_remotes]] poll, a lot+of people want special remote support for their phone or mp3 player.+(As opposed to running git-annex on an Android phone, which comes later..)+It'd be easy enough to make the webapp set up a directory special remote+on such a device, but that makes consuming some types of content on the+phone difficult (mp3 players seem to handle them ok based on what people tell+me). I need to think more about some of the ideas mentioned in [[android]]+for more suitable ways of storing files.++One thing's for sure: You won't want the assistant to sync all your files+to your phone! So I also need to start coming up with partial syncing+controls. One idea is for each remote to have a configurable matcher for files+it likes to receive. That could be only mp3 files, or all files inside a+given subdirectory, or all files *not* in a given subdirectory. That means+that when the assistant detects a file has been moved, it'll need to add+(or remove) a queued transfer. Lots of other things could be matched on,+like file size, number of copies, etc. Oh look, I have a+[beautiful library I wrote earlier](http://joeyh.name/blog/entry/happy_haskell_hacker)+that I can reuse!
doc/design/assistant/partial_content.mdwn view
@@ -12,3 +12,25 @@ request they be transferred to it. This could be done as a browser in the web app, or using a subdirectory full of placeholder files (not symlinks; see [[Android]]) that start transfer of the real file when accessed.++----++Currently, Android uses the "source" repository type in some+configurations. This makes files be removed as soon as they are sent+somewhere else.++A compromise that avoids needing UI might be to change "source" so it+retained files for a while after they were created, even after they were+uploaded elsewhere. For example, it could hold onto them for a day. This+would allow the user time to do things with new files before they are+removed from the android device.++Once way to implement that would be a new preferred content expression like+"age(1 day)". But this would need at least a daily full transfer scan to be+run. ++Another way would be to have a way to make drops of files be deferred+for a period of time. This approach would not need to be specific to the+"source" repository type. And seems easy enough to do, just have a+configuration setting for the time interval, and an ordered drop queue+and a thread that waits as needed before dropping.
doc/design/assistant/polls/Android_default_directory.mdwn view
@@ -4,4 +4,4 @@ want the first time they run it, but to save typing on android, anything that gets enough votes will be included in a list of choices as well. -[[!poll open=yes expandable=yes 42 "/sdcard/annex" 3 "Whole /sdcard" 4 "DCIM directory (photos and videos only)" 1 "Same as for regular git-annex. ~/annex/"]]+[[!poll open=yes expandable=yes 44 "/sdcard/annex" 3 "Whole /sdcard" 4 "DCIM directory (photos and videos only)" 1 "Same as for regular git-annex. ~/annex/"]]
doc/design/assistant/windows.mdwn view
@@ -8,10 +8,7 @@  NTFS supports symbolic links two different ways: an [[!wikipedia NTFS symbolic link]] and an [[!wikipedia NTFS_junction_point]].  The former seems like the closest analogue to POSIX symlinks. -Make git use them, as it (apparently) does not yet.--Currently, on Windows, git checks out symlinks as files containing the symlink-target as their contents.+The windows port will not use symlinks. It will only support direct mode.  ## POSIX 
doc/direct_mode.mdwn view
@@ -14,6 +14,7 @@ * Repositories on FAT and other less than stellar filesystems   that don't support things like symlinks will be automatically put   into direct mode.+* Windows always uses direct mode.  ## enabling (and disabling) direct mode 
+ doc/forum/Accessing_files_in_bare_repository.mdwn view
@@ -0,0 +1,5 @@+I have set up a remote server repository using the git-annex web assistant, accessed via ssh. The repository is a bare one according to the config file in the annex directory on the server.++I am wondering how I could access any of the files in the repository while logged in to the server - they don't have their usual file names to look for clearly. Is there a way to get a list of the files for starters? I tried using git annex find, but it never returns any files. git annex get followed by a filename of a document in the repository also doesn't work.++Thanks to help me understand better how to approach this.
+ doc/forum/Cleaning_up_after_aborted_sync_in_direct_mode.mdwn view
@@ -0,0 +1,19 @@+I recently began experimenting with direct mode on a repository where only a very limited number of commands (`git annex sync`, `git annex add .`, etc.) are being used (through desktop buttons).++Things were working well, and then on another repository in indirect mode I moved a large folder and synced that data with a bare repo, and synced the repo in direct mode with the same bare repo (to get everything in sync).++At that point, git annex seemed to hang, taking forever to complete, and from looking a processes and files it seemed like it was going nowhere, so I killed it. I wish I had done a bit more diagnostics before that, but unfortunately I didn't.++At that point, I noticed that the old directory was still there and that there were still many files in it, but the new folder had also been created and there were files there, too. So I thought the transfer was done, and for whatever reason `git annex sync` had just not cleaned up properly.++In fact, the sync was only half done and the remaining files in the old directory were the only (local) copies (on the direct mode repo). I removed them and then synced again, which actually told git to delete those symlinks.++When I updated another (indirect mode) repository I noticed this, so I reverted the commit in question and got the symlinks back, no data lost. Then I went back to the direct mode repo, switched to indirect mode because I was worried about direct mode, `git annex sync`ed, then `git annex get` to get the files again from a usb and everything was back to normal.++Except that when I tried to go back to direct mode in that original repo, I got an error saying that git could not stat a file which is in the old (deleted) folder. Searching around, I noticed that in the `.git/annex/objects` directory, there are many remaining `.map` files with lines referring to the old (deleted) directory.++Is there any way to "reset" this somehow? I would like to switch back to direct mode, and I'd prefer not to recreate the repo.++Oh and I'm using version: 4.20130501-g4a5bfb3.++Thanks!
+ doc/forum/Does_migrate_ensure_data_integrity__63__.mdwn view
@@ -0,0 +1,7 @@+Out of simple curiosity, how does 'git annex migrate' work?  I'm mostly wondering how file integrity is ensured.++Let's say you want to migrate foo.txt from (say) md5 to sha256.  Does git annex simply sha256sum foo.txt and rename it in the .git/objects folder to the new sum?  Or does it md5sum foo.txt, verify that it's the not corrupt, then sha256sum it and rename to the new sum?++You could run into problems if you migrate without first verifying; if the file is corrupt and you simply sha256sum and rename it, then the file wouldn't seem corrupt at your next fsck.++I'm sure you've considered this during the basic design phase of git-annex, but I'd just like to be sure.  I'm kind of paranoid when it comes to data integrity. =P
+ doc/forum/How_do_I_dropunused_with_an_rsync_remote__63__.mdwn view
@@ -0,0 +1,3 @@+`git annex dropunused` is simple enough.++But how do I perform the equivalent procedure on an rsync remote?  I'd presume that `git annex copy --to remote` is not sufficient.
+ doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn view
@@ -0,0 +1,9 @@+I have a repository on my laptop with a single remote on a USB drive. Both were created without the assistant.++The remote holds all the content. My understanding is that this would be a "backup" repository, using the group definitions.++The local repository generally holds no content. When I want a file, I make sure the remote is available, and then I `git annex get` it.++This works fine in git annex, but I'm now experimenting with the assistant. As soon as I fire up the assistant, it starts downloading all of the data from the remote. I don't ever want it to automatically get any content from the remote. If it sees new content in the repository, I would like it to push that out to the remote. But never get anything from the remote, and never drop anything that is in the repository.++How can I setup this behaviour in the assistant? I have set the remote's repository group to "backup". The local repository is not in any group, since none of the groups fit my model for this repo.
+ doc/forum/Problems_syncing_with_box.com.mdwn view
@@ -0,0 +1,26 @@+I have a repository synchronized between two PCs and box.com . I chose encryption for box.com. Today on my work computer I changed files, on box.com I see that there are changed files today. When I got home, I still see files with yesterday's date.+One thing to mention is that currently the work PC is not accessible. ++1. How do I debug this problem? I have logging set to debug via web console, saved, restarted daemon, but after restart the debug checkbox is unchecked.+From logs it looks like that after failing to connect to work pc via ssh it gives up:++    [2013-05-09 21:42:52 CEST] main: Syncing with box.com+this is first and last line mentioning box today, I restarted the daemon several times around 22:14 :++    [2013-05-09 22:11:40 CEST] TransferScanner: Syncing with [work pc repo]+    Already up-to-date.+    +    (scanning...) [2013-05-09 22:11:40 CEST] Watcher: Performing startup scan+    Already up-to-date.+    +    (started...) ssh: connect to host [work pc] port 22: No route to host+    fatal: The remote end hung up unexpectedly+++2. where is the configuration for box.com stored? How can I check gpg key ID mentioned at http://git-annex.branchable.com/tips/using_box.com_as_a_special_remote/+3. how do I manually trigger sync with box.com? git fetch box.com neither git annex sync box.com doesn't work.+++---+Version: 4.20130501+Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
+ doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn view
@@ -0,0 +1,11 @@+Hello Joey,++I just want to know if file transfers between three inter-connected repositories somehow gets syncronized. I have a laptop, a local file server in my home and a virtual server on the internet.++Both my laptop and my file server are configured with a full git repository and connected through pairing and xmpp. The server on the internet is configured as a rsync special remote.++I want the local file server to hold a copy of everything in my annex, the rsync remote should get everything except the folder "media" (too large to upload and not that important) and the laptop whatever I manually decide (preferred content is set to "present").++I have added some files to the repository on the local file server and transferred their content to my laptop by using "git annex get". But when I started the web interface, I saw that those files who are present on both the file server and on the laptop get uploaded to the remote server from both computers, often the same file at the same time. Previously I though the two assistants would somehow talk to each other via xmpp so that doubled effort like that would be avoided. I'm also worried about data consistency because two apparently separate processes rsync to the same remote repository at the same time.++So my question would be: Is your xmpp protocol designed to deal with situations like this and I did not set it up correctly or is what I'm trying to accomplish simply not (yet) possible?
+ doc/forum/Ubuntu_PPA/comment_4_3a8bbd0a7450a7f5323cd13144824aea._comment view
@@ -0,0 +1,12 @@+[[!comment format=mdwn+ username="http://grossmeier.net/"+ nickname="greg"+ subject="All PPAs are outdated"+ date="2013-05-08T17:38:04Z"+ content="""+My work preinstalled Ubuntu machine is now on Raring, and even there the version of git-annex is only 3.20121112ubuntu3; too old to have the webapp option enabled :/ The two PPAs mentioned here aren't configured to build for Raring, so even though the one from François has a build from May 1st (7 days ago), it doesn't help me ;)++François: mind updating your PPA to support Raring? Thanks much if you do!++Either that, or I'll take the time some day to do a proper install on this machine (read: Debian). ;-)+"""]]
+ doc/forum/Ubuntu_PPA/comment_5_2e1beaeebda0201c635db8b276cedf20._comment view
@@ -0,0 +1,12 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo"+ nickname="Justin"+ subject="comment 5"+ date="2013-05-08T23:25:37Z"+ content="""+If you are on raring you can still use++    deb http://ppa.launchpad.net/fmarier/ppa/ubuntu precise main++It's worked fine for me so far.+"""]]
+ doc/forum/annexed_file_key_for_web_remote_with_SHA256E_backend.mdwn view
@@ -0,0 +1,12 @@+First off, thanks so much for your hard work, git-annex is amazing.++I just started using the [web as a special remote](http://git-annex.branchable.com/tips/using_the_web_as_a_special_remote/) feature with the SHA256E backend, and I noticed that although the annexed file has the correct backend prefix (SHA256E) it does not have the extension of the file in the URL. The URL is `https://...IMG_1234.JPG` but the annexed file is `SHA256E-...832c99` with no extension.++This is fine for most use cases, but I actually access an S3 remote directly from another app (independent of git-annex) to render photos, and in that app I'm using the extensions to figure out file types, so not having that info is slightly inconvenient.++Is there any way to either:++1. tell git-annex to preserve the extension of a file on the web in the annexed file, or+2. alternatively, change the annexed filename (add the extension manually) without screwing anything up?++Any help would be much appreciated, thanks!
+ doc/forum/first-time_setup_git-annex.mdwn view
@@ -0,0 +1,7 @@+I have a git installation on my web server (web faction hosting). It allows me to run repositories from my hosting account. ++What I want is to use git-annex as a dropbox replacement. Specifically, the central repository being my web server and then using local installations on my 2 mac laptops (primarily), access through browser on windows, and access on android as well (browser or some other method). ++I'm looking at the install instructions, walkthrough, etc. What I'm initially not clear on is whether I need to install git-annex on my (linux centOS) webserver and any machine through which I'm accessing the repo? Seems like that would be the case of course, but I wanted to validate. ++Am I going to run into issues that folks might already be able to warn me about? Anything I need to know? 
+ doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer..mdwn view
@@ -0,0 +1,3 @@+A couple times working in an annex manually, I accidentally did "git add" instead of "git annex add" and ended up with files checked into my repo instead of symlinks.  So now there is some file content in git, rather than in the annex.  Is there any way to root that out, or is it there forever?  (My limited knowledge of git says: it's there forever, unless maybe you go into the branches where it lives, do an interactive rebase to the time before it was added, remove that commit, replay history, and then garbage collect, but I have no idea if that would suddenly break git annex, and it sounds painful anyway.)++If say I were a neat freak and wanted to just start over with a clean annex, I imagine the thing to do would be to just start the hell over -- and if I wanted to do that, the way to go would be to get into a full repository, do a "git annex uninit" and then throw away the .git directory, then do "git init" and "git annex init" and then "git annex add ." ?
+ doc/forum/nntp__47__usenet_special_remote.mdwn view
@@ -0,0 +1,18 @@+Over the last few weeks i've been working on a seperate python nntp project. But decided that it would be fun to make it usable with git-annex.++The code is almost complete. One major feature left(make it usable without a mysql/sqlite database, and without fetching headers). And of course a lot of bugfixes.++I'm wondering if there is any interest in this special remote hook.++The thought is, buy unlimited usenet account, and you can have a git-annex repository without any upper size limit. You want 100GB, well that'll be 10$ a month, want 100000GB, well that'll be 10$ a month.++Of course there are plenty of caveats(retention on server, it is doubtfull the data will stay up for more than 4 years.). Because the code is in python3 i had to use a lot of external tools (uudeview, par2, ydecode/yydecode) and parse their output. Which is a horrid horrid solution. Since the code is nearing "beta" stage i might see if i can improve on that(possibly with ctypes), if there is any interest.++Currently working on freebsd, ubuntu, debian, mac os x(10.7, not tested in 10.8)++The last feature to be done (and this is UUUUUGLY) is to make it get nzb files from a source like this: http://nzbindex.nl/search/?q=GPGHMACSHA (yes, that is my git-annex repo) instead of from a mysql database.++So, this is a call to see if anyone is interested, and if anyone proficient in *NIX want to test it out.++Sincerely+Tobias
+ doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn view
@@ -0,0 +1,2 @@+Is that really unsafe?  Because I did that and the switch to direct mode seemed to leave a lot of files still as links, and when I panicked and switched back to indirect mode, a whole lot of stuff seemed to have become unannexed and I reannexed it.+
doc/git-annex.mdwn view
@@ -726,8 +726,8 @@   copies, on remotes with the specified trust level. For example,   "--copies=trusted:2" -  To match any trust level at or higher than a given level, use-  'trustlevel+'. For example, "--copies=semitrusted+:2"+  To match any trust level at or higher than a given level,+  use 'trustlevel+'. For example, "--copies=semitrusted+:2"  * --copies=groupname:number 
doc/install.mdwn view
@@ -14,19 +14,13 @@ [[Gentoo]]            | `emerge git-annex` [[ScientificLinux5]]  | (and other RHEL5 clones like CentOS5) [[openSUSE]]          | -Windows               | [[sorry, Windows not supported yet|todo/windows_support]]+[[Windows]]           | **alpha** """]]  ## Using cabal -As a haskell package, git-annex can be installed using cabal.-Start by installing the [Haskell Platform](http://hackage.haskell.org/platform/),-and then:--	cabal install git-annex --bindir=$HOME/bin--That installs the latest release. Alternatively, you can [[download]]-git-annex yourself and [[manually_build_with_cabal|install/cabal]].+As a haskell package, git-annex can be installed from source pretty easily+[[using cabal|cabal]].  ## Installation from scratch 
doc/install/Android.mdwn view
@@ -1,20 +1,15 @@-git-annex can be used on Android, however you need to know your way around-the command line to install and use it. (Hope to get the webapp working-eventually.)+Now git-annex can be used on Android! +[[Documentation for using git-annex on Android|/android]]+ ## Android app -First, ensure your Android device is configured to allow installation of-non-Market apps. Go to Setup -&gt; Security, and enable "Unknown Sources".+First, ensure your Android device is configured to allow installation+of the app. Go to Setup -&gt; Security, and enable "Unknown Sources". -Download the [git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/)+[Download the git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/) onto your Android device, and open it to install. -When you start the Git Annex app, it will dump you into terminal. From-here, you can run git-annex, as well as many standard git and unix commands-provided with the app. You can do everything in the [[walkthrough]] and-more.- ## autobuilds  A daily build is also available.@@ -27,12 +22,10 @@ process:  * First, install <https://github.com/neurocyte/ghc-android>.-* You also need to install git and all the utilities listed on [[fromscratch]],-  on the system doing the building.-* Use ghc-android's cabal to install all necessary dependencies.-  Some packages will fail to install on Android; patches to fix them-  are in `standalone/android/haskell-patches/` * You will need to have the Android SDK and NDK installed; see   `standalone/android/Makefile` to configure the paths to them. You'll also   need ant, and the JDK.+* In `standalone/android/`, run `install-haskell-packages native`+* You also need to install git and all the utilities listed on [[fromscratch]],+  on the system doing the building. * Then to build the full Android app bundle, use `make androidapp`
+ doc/install/Windows.mdwn view
@@ -0,0 +1,26 @@+git-annex has recently been ported to Windows!++* First, [install git](http://git-scm.com/downloads)+* Then, [install git-annex](http://downloads.kitenet.net/git-annex/windows/current/)++This port is in an early state. While it works well enough to use+git-annex, many things will not work. See [[todo/windows_support]] for+current status. Note especially that git-annex always uses [[direct_mode]]+on Windows.++## building it yourself++To build git-annex from source on Windows, you need to install+the Haskell Platform and Cygwin. Use Cygwin to install gcc, rsync, git,+ssh, and gpg.++Then, within Cygwin, git-annex can be compiled following the instructions+for [[using cabal|cabal]].++Once git-annex is built, the NullSoft installer can be built, as follows:++<pre>+	cabal install nsis+	ghc --make Build/NullSoftInstaller.hs+	Build/NullSoftInstaller.exe+</pre>
+ doc/install/Windows/comment_1_77e6b1023fee32277f1890def86b0106._comment view
@@ -0,0 +1,14 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM"+ nickname="Bruno"+ subject="comment 1"+ date="2013-05-15T18:29:19Z"+ content="""+Did you have any problem installing unix-2.6.0.1?++I got :++    cabal.exe: Missing dependencies on foreign libraries:+    * Missing (or bad) header file: HsUnix.h+    * Missing C libraries: rt, dl+"""]]
+ doc/install/Windows/comment_2_1b4eaffa46dfff0a5e20f7f2016bdf9a._comment view
@@ -0,0 +1,52 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM"+ nickname="Bruno"+ subject="comment 2"+ date="2013-05-16T02:22:26Z"+ content="""+By doing `cabal install --only-dependencies -v3` I saw that the problem was that it didn't find `sys/times.h`:++    In file included from C:\cygwin\tmp\36.c:1:0:+    include/HsUnix.h:33:23: fatal error: sys/times.h: No such file or directory+    compilation terminated.+    (\"C:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\mingw\\bin\\gcc.exe\",[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\",\"C:\\cygwin\\tmp\\36.c\",\"-o\",\"C:\\cygwin\\tmp\\36\",\"-E\",\"-D__GLASGOW_HASKELL__=704\",\"-Dmingw32_HOST_OS=1\",\"-Di386_HOST_ARCH=1\",\"-Idist\\build\\autogen\",\"-Iinclude\",\"-I.\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib/include\"])+    C:\Program Files (x86)\Haskell Platform\2012.4.0.0\mingw\bin\gcc.exe returned+    ExitFailure 1 with error message:+    In file included from C:\cygwin\tmp\36.c:1:0:+    include/HsUnix.h:33:23: fatal error: sys/times.h: No such file or directory+    compilation terminated.+    cabal.exe: Missing dependencies on foreign libraries:+    * Missing (or bad) header file: HsUnix.h+    * Missing C libraries: rt, dl+    This problem can usually be solved by installing the system packages that+    provide these libraries (you may need the \"-dev\" versions). If the libraries+    are already installed but in a non-standard location then you can use the+    flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.+    If the header file does exist, it may contain errors that are caught by the C+    compiler at the preprocessing stage. In this case you can re-run configure+    with the verbosity flag -v3 to see the error messages.+    Failed to install unix-2.6.0.1++Is it normal that cabal use mingw's gcc (from the Haskell Platform)?++If so, should the following command work (I'm not sure if mixing mingw and cygwin stuff is ok) ?++cabal install --only-dependencies -v3 --extra-include-dirs=C:\\cygwin\\usr\\include --extra-lib-dirs=c:\\cygwin\\lib++    configure: WARNING: unrecognized options: --with-compiler, --with-gcc+    Reading parameters from .\unix.buildinfo+    (\"C:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\mingw\\bin\\gcc.exe\",[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\",\"C:\\cygwin\\tmp\\3504.c\",\"-o\",\"C:\\cygwin\\tmp\\3504\",\"-D__GLASGOW_HASKELL__=704\",\"-Dmingw32_HOST_OS=1\",\"-Di386_HOST_ARCH=1\",\"-Idist\\build\\autogen\",\"-Iinclude\",\"-IC:\\cygwin\\usr\\include\",\"-I.\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib/include\",\"-lrt\",\"-ldl\",\"-Lc:\\cygwin\\lib\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\old-locale-1.0.0.4\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\deepseq-1.3.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\array-0.4.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\integer-gmp-0.4.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\ghc-prim-0.2.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\"])+    C:\Program Files (x86)\Haskell Platform\2012.4.0.0\mingw\bin\gcc.exe returned+    ExitFailure 1 with error message:+    In file included from include/HsUnix.h:39:0,+    from C:\cygwin\tmp\3504.c:1:+    C:\cygwin\usr\include/sys/resource.h:76:29: error: expected declaration+    specifiers or '...' before 'id_t'+    C:\cygwin\usr\include/sys/resource.h:77:29: error: expected declaration+    specifiers or '...' before 'id_t'+    In file included from C:\cygwin\usr\include/dirent.h:6:0,+    from include/HsUnix.h:75,+    from C:\cygwin\tmp\3504.c:1:+    C:\cygwin\usr\include/sys/dirent.h:24:3: error: expected+    specifier-qualifier-list before '__ino64_t'+"""]]
+ doc/install/Windows/comment_3_b0c4c6e77246b1b4a81f6940e11b67d3._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 3"+ date="2013-05-16T02:29:10Z"+ content="""+You need to build from git master, which is fixed to not use unix on windows, or wait for tomorrow's release.++(Cabal will also try to upgrade network as part of installing yesod. Since the webapp is not ported yet, you need to `cabal configure -f-Webapp` for now.)+"""]]
doc/install/cabal.mdwn view
@@ -1,4 +1,7 @@-As a haskell package, git-annex can be installed using cabal. For example:+As a haskell package, git-annex can be installed using cabal.++Start by installing the [Haskell Platform](http://hackage.haskell.org/platform/),+and then:  	cabal update 	PATH=$HOME/bin:$PATH
+ doc/install/cabal/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment view
@@ -0,0 +1,18 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlJemqsekZTC5dvc-MAByUWaBvsYE-mFUo"+ nickname="Gábor"+ subject="Cabal dependencies"+ date="2013-05-12T12:52:20Z"+ content="""+After finishing the installation the cabal way, here are the packages I installed. It is possible that there are other packages I installed previously as dependency for other packages.++    $ lsb_release -a+    No LSB modules are available.+    Distributor ID:	Ubuntu+    Description:	Ubuntu 12.04.2 LTS+    Release:	12.04+    Codename:	precise+    +    $ apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc-libxml-sax-dev zlib1g-dev libghc-zlib-dev+    $ cabal install git-annex --bindir=$HOME/bin+"""]]
doc/install/fromscratch.mdwn view
@@ -21,7 +21,7 @@   * [SafeSemaphore](http://hackage.haskell.org/package/SafeSemaphore)   * [UUID](http://hackage.haskell.org/package/uuid)   * [regex-tdfa](http://hackage.haskell.org/package/regex-tdfa)-* Optional haskell stuff, used by the [[assistant]] and its webapp (edit Makefile to disable)+* Optional haskell stuff, used by the [[assistant]] and its webapp   * [stm](http://hackage.haskell.org/package/stm)     (version 2.3 or newer)   * [hinotify](http://hackage.haskell.org/package/hinotify)@@ -48,6 +48,7 @@   * [xml-types](http://hackage.haskell.org/package/xml-types)   * [async](http://hackage.haskell.org/package/async)   * [HTTP](http://hackage.haskell.org/package/HTTP)+  * [unix-compat](http://hackage.haskell.org/package/unix-compat) * Shell commands   * [git](http://git-scm.com/)   * [xargs](http://savannah.gnu.org/projects/findutils/)
− doc/news/version_4.20130314.mdwn
@@ -1,68 +0,0 @@-git-annex 4.20130314 released with [[!toggle text="these changes"]]-[[!toggleable text="""-   * Bugfix: git annex add, when ran without any file or directory specified,-     should add files in the current directory, but not act on unlocked files-     elsewhere in the tree.-   * Bugfix: drop --from an unavailable remote no longer updates the location-     log, incorrectly, to say the remote does not have the key.-   * Bugfix: If the UUID of a remote is not known, prevent --from, --to,-     and other ways of specifying remotes by name from selecting it,-     since it is not possible to sanely use it.-   * Bugfix: Fix bug in inode cache sentinal check, which broke-     copying to local repos if the repo being copied from had moved-     to a different filesystem or otherwise changed all its inodes-   * Switch from using regex-compat to regex-tdfa, as the C regex library-     is rather buggy.-   * status: Can now be run with a directory path to show only the-     status of that directory, rather than the whole annex.-   * Added remote.&lt;name&gt;.annex-gnupg-options setting.-     Thanks, guilhem for the patch.-   * addurl: Add --relaxed option.-   * addurl: Escape invalid characters in urls, rather than failing to-     use an invalid url.-   * addurl: Properly handle url-escaped characters in file:// urls.-   * assistant: Fix dropping content when a file is moved to an archive-     directory, and getting contennt when a file is moved back out.-   * assistant: Fix bug in direct mode that could occur when a symlink is-     moved out of an archive directory, and resulted in the file not being-     set to direct mode when it was transferred.-   * assistant: Generate better commits for renames.-   * assistant: Logs are rotated to avoid them using too much disk space.-   * assistant: Avoid noise in logs from git commit about typechanged-     files in direct mode repositories.-   * assistant: Set gc.auto=0 when creating repositories to prevent-     automatic commits from causing git-gc runs.-   * assistant: If gc.auto=0, run git-gc once a day, packing loose objects-     very non-aggressively.-   * assistant: XMPP git pull and push requests are cached and sent when-     presence of a new client is detected.-   * assistant: Sync with all git remotes on startup.-   * assistant: Get back in sync with XMPP remotes after network reconnection,-     and on startup.-   * assistant: Fix syncing after XMPP pairing.-   * assistant: Optimised handling of renamed files in direct mode,-     avoiding re-checksumming.-   * assistant: Detects most renames, including directory renames, and-     combines all their changes into a single commit.-   * assistant: Fix ~/.ssh/git-annex-shell wrapper to work when the-     ssh key does not force a command.-   * assistant: Be smarter about avoiding unncessary transfers.-   * webapp: Work around bug in Warp's slowloris attack prevention code,-     that caused regular browsers to stall when they reuse a connection-     after leaving it idle for 30 seconds.-     (See https://github.com/yesodweb/wai/issues/146)-   * webapp: New preferences page allows enabling/disabling debug logging-     at runtime, as well as configuring numcopies and diskreserve.-   * webapp: Repository costs can be configured by dragging repositories around-     in the repository list.-   * webapp: Proceed automatically on from "Configure jabber account"-     to pairing.-   * webapp: Only show up to 10 queued transfers.-   * webapp: DTRT when told to create a git repo that already exists.-   * webapp: Set locally paired repositories to a lower cost than other-     network remotes.-   * Run ssh with -T to avoid tty allocation and any login scripts that-     may do undesired things with it.-   * Several improvements to Makefile and cabal file. Thanks, Peter Simmons-   * Stop depending on testpack.-   * Android: Enable test suite."""]]
+ doc/news/version_4.20130516.mdwn view
@@ -0,0 +1,29 @@+git-annex 4.20130516 released with [[!toggle text="these changes"]]+[[!toggleable text="""+   * Android: The webapp is ported and working.+   * Windows: There is a very rough Windows port. Do not trust it with+     important data.+   * git-annex-shell: Ensure that received files can be read. Files+     transferred from some Android devices may have very broken permissions+     as received.+   * direct mode: Direct mode commands now work on files staged in the index,+     they do not need to be committed to git.+   * Temporarily add an upper bound to the version of yesod that can be built+     with, since yesod 1.2 has a great many changes that will require extensive+     work on the webapp.+   * Disable building with the haskell threaded runtime when the assistant+     is not built. This may fix builds on s390x and sparc, which are failing+     to link -lHSrts\_thr+   * Avoid depending on regex-tdfa on mips, mipsel, and s390, where it fails+     to build.+   * direct: Fix a bug that could cause some files to be left in indirect mode.+   * When initializing a directory special remote with a relative path,+     the path is made absolute.+   * SHA: Add a runtime sanity check that sha commands output something+     that appears to be a real sha.+   * configure: Better checking that sha commands output in the desired format.+   * rsync special remotes: When sending from a crippled filesystem, use+     the destination's default file permissions, as the local ones can+     be arbitrarily broken. (Ie, ----rwxr-x for files on Android)+   * migrate: Detect if a file gets corrupted while it's being migrated.+   * Debian: Add a menu file."""]]
+ doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment view
@@ -0,0 +1,23 @@+[[!comment format=mdwn+ username="http://sekenre.wordpress.com/"+ nickname="sekenre"+ subject="Synchronizing Bup repositories"+ date="2013-05-07T16:46:34Z"+ content="""+Hi All,++I managed to answer my questions above about copying changes between local bup repositories efficiently.++You run the following commands ++    git annex copy . --to bup_repo_1                      # Uses bup split in the background (slow)+    rsync -av /mnt/repodisk1/repo/ /mnt/repodisk2/repo/ \+    --exclude=config --exclude=*.bloom --exclude=*.midx   # rsync without bup-specific indices (speed depends on delta between repositories)+    BUP_DIR=/mnt/repodisk2/repo/ bup midx -a && bup bloom # rebuild bup-specific indices on the target (this is extremely fast)+    git annex copy . --to bup_repo_2                      # Records file is now available in repo2 (also extremely fast)++Now `git annex whereis` will show the correct location and `git annex get <file> --from bup_repo_2` will work.++So far in my testing I haven't found any problems...++"""]]
+ doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment view
@@ -0,0 +1,24 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"+ nickname="Tim"+ subject="bup location data not synced through annex assistant"+ date="2013-05-15T15:08:54Z"+ content="""+I set up 2 servers running git annex assistant, both with a ~/annex dir and an additional ~/annex-bup bup repo. There is no additional cloud repository.+For test, I added my /etc dir which uploaded correctly from server1, but which never arrived on server2++    bup@bup1:~/annex/etc$ git annex whereis updatedb.conf+    whereis updatedb.conf (3 copies) +  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- here (bup@bup1:~/annex)+   	    adfc1307-771f-40e9-b794-bae2e1f21b8b -- bup2-annex-bup+   	    e4e0ac0b-992a-4312-a4ac-fc8d3d9f7c0f -- bup1-annex-bup+    ok++    bup@bup2:~/annex/etc$ git annex whereis updatedb.conf+    whereis updatedb.conf (1 copy) +  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- bup1 (bup@bup1:~/annex)+    ok++As you can see, server 2 just doesn't know the data is already on it's own disk in it's local bup repo.+Is there a reason this data does not get synced? Should I set up a transfer repo?+"""]]
+ doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"+ nickname="Tim"+ subject="my bad"+ date="2013-05-15T15:39:31Z"+ content="""+Sorry, looks like I did initremote twice on the same folder, instead of enableremote the second time...+"""]]
+ doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment view
@@ -0,0 +1,43 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk"+ nickname="Albert"+ subject="Error with bup and gnupg"+ date="2012-10-22T20:56:56Z"+ content="""+Hello,++I get this error when trying to use git-annex with bup and gnupg:++<pre>+move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) +Traceback (most recent call last):+  File \"/usr/lib/bup/cmd/bup-split\", line 133, in <module>+    progress=prog)+  File \"/usr/lib/bup/bup/hashsplit.py\", line 167, in split_to_shalist+    for (sha,size,bits) in sl:+  File \"/usr/lib/bup/bup/hashsplit.py\", line 118, in _split_to_blobs+    for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):+  File \"/usr/lib/bup/bup/hashsplit.py\", line 86, in _hashsplit_iter+    bnew = next(fi)+  File \"/usr/lib/bup/bup/helpers.py\", line 86, in next+    return it.next()+  File \"/usr/lib/bup/bup/hashsplit.py\", line 49, in blobiter+    for filenum,f in enumerate(files):+  File \"/usr/lib/bup/cmd/bup-split\", line 128, in <genexpr>+    files = extra and (open(fn) for fn in extra) or [sys.stdin]+IOError: [Errno 2] No such file or directory: '-'+</pre>+++I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:++files = [sys.stdin]++on ~ line 128.++Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?++Thanks! Git annex rules!++Albert+"""]]
+ doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment view
@@ -0,0 +1,12 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ ip="4.154.0.23"+ subject="comment 2"+ date="2012-10-23T20:01:43Z"+ content="""+@Albert, thanks for reporting this bug (but put them in [[bugs]] in future please).++This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know. ++I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.+"""]]
+ doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment view
@@ -0,0 +1,17 @@+[[!comment format=mdwn+ username="http://sekenre.wordpress.com/"+ nickname="sekenre"+ subject="Bup remotes in git-annex assistant"+ date="2013-03-13T12:54:56Z"+ content="""+Hi,++Is the bup remote available via the Assistant user interface?++Unrelated question;++If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use \"bup split\" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)++Many Thanks,+Sek+"""]]
+ doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 4"+ date="2013-03-13T16:05:50Z"+ content="""+I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.++Your two bup repos would be synced using bup-split.+"""]]
+ doc/special_remotes/bup/comment_5_61b32f9ee00e6016443a1cf10273959c._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 5"+ date="2013-03-13T16:05:57Z"+ content="""+I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.++Your two bup repos would be synced using bup-split.+"""]]
+ doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo"+ nickname="Tobias"+ subject="bup fail?"+ date="2013-03-31T21:05:32Z"+ content="""+I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.++How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?+"""]]
+ doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ nickname="joey"+ subject="comment 7"+ date="2013-04-02T21:24:06Z"+ content="""+`bup-split` uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.++Yes, it would be possible to make git-annex store this in the git-annex branch instead.+"""]]
+ doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment view
@@ -0,0 +1,12 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"+ nickname="Yung-Chin"+ subject="re scaling issue"+ date="2013-05-03T14:57:51Z"+ content="""+Tobias/joey,++I think there are at least two scaling issues that may be causing you trouble. One is that bup writes pack+idx files rather than bare objects, and if you send 1 file per call to bup-split, you end up with a pair of pack and idx files for each such call. When you later try to retrieve a blob, bup currently just calls git, and git will have to traverse all these tiny idx files looking for the right hash (bare objects you could at least find by name). You can probably ameliorate the pain by calling git repack (look at the -a and --max-pack-size switches) on your bup repository. The other is the \"thousands of branches\" issue, and I think \"git pack-refs --all\" (that's again on your bup repository) might help a little bit. ++It would certainly help performance if you could store blob/tree ids in git-annex instead of branch names. For small files, all bup would need to store is a blob, but currently you end up storing a blob, a tree, and a commit (and looking-up all of those, plus the ref too, on calling bup-join). (you might want to patch bup-split, so it would allow you to ask it for \"--blob-or-tree\", because currently if you say you pass it -b for blob-ids, then for bigger files you get a series of IDs, whereas you'd be much better off with a tree-id there)+"""]]
+ doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"+ nickname="Yung-Chin"+ subject="comment 9"+ date="2013-05-03T16:34:05Z"+ content="""+Thinking about this some more, a very elegant way to make a bup remote could actually be to just pass the whole .git/annex tree into bup-index/save (you could avoid sending some files by only bup-indexing select subtrees, or by using --exclude-*'s, but you'd run bup-save over the whole .git/annex tree). You could then use bup-restore to retrieve files or whole subtrees, and you'd refer to the files you're retrieving by their actual pathname under which they live in .git/annex (if that doesn't make sense it's because I've misunderstood how git-annex is organised!), so something like \"bup restore branch_name/latest/.git/annex/aa/bb/sha-of-some-sort\" would work - that's cute, right? And you'd only have 1 branch.++However... somebody who is good with lazy-evaluation would need to rework bup.vfs: currently, if you'd call bup-restore on a path like that, it would instantiate a _lot_ of vfs-nodes you don't need - to begin with, it would make a node for every commit you ever made (on any branch!) - on a big repository you'd wait ages for it to just find the commit objects...+"""]]
+ doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment view
@@ -0,0 +1,32 @@+[[!comment format=mdwn+ username="helmut"+ ip="89.0.176.236"+ subject="Asynchronous hooks?"+ date="2012-10-13T09:46:14Z"+ content="""+Is there a way to use asynchronous remotes? Interaction with git annex would have to+split the part of initiating some action from completing it.++I imagine I could `git annex copy` a file to an asynchronous remote and the command+would almost immediately complete. Later I would learn that the transfer is+completed, so the hook must be able to record that information in the `git-annex`+branch. An additional plumbing command seems required here as well as a way to+indicate that even though the store-hook completed, the file is not transferred.++Similarly `git annex get` would immediately return without actually fetching the+file. This should already be possible by returning non-zero from the retrieve-hook.+Later the hook could use plumbing level commands to actually stick the received file+into the repository.++The remove-hook should need no changes, but the checkpresent-hook would be more like+a trigger without any actual result. The extension of the plumbing required for the+extension to the receive-hook could update the location log. A downside here is that+you never know when a fsck has completed.++My proposal does not include a way to track the completion of actions, but relies on+the hook to always complete them reliably. It is not clear that this is the best road+for asynchronous hooks.++One use case for this would be a remote that is only accessible via uucp. Are there+other use cases? Is the drafted interface useful?+"""]]
doc/special_remotes/rsync.mdwn view
@@ -36,3 +36,25 @@  The `annex-rsync-options` git configuration setting can be used to pass parameters to rsync.++## annex-rsync-transport++You can use the `annex-rsync-transport` git configuration setting to choose+whether we run rsync over ssh or rsh.  This setting is also used to specify+parameters that git annex will pass to ssh/rsh.++ssh is the default transport; if you'd like to run rsync over rsh, modify your+.git/config to include++        annex-rsync-transport = rsh++under the appropriate remote.++To pass parameters to ssh/rsh, include the parameters after "rsh" or+"ssh".  For example, to configure ssh to use the private key at+`/path/to/private/key`, specify++         annex-rsync-transport = ssh -i /path/to/private/key++Note that environment variables aren't expanded here, so for example, you+cannot specify `-i $HOME/.ssh/private_key`.
+ doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment view
@@ -0,0 +1,11 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"+ nickname="Tobias"+ subject="User defined server"+ date="2013-04-17T09:45:59Z"+ content="""+It would be nice if you could expand the XMPP setup in the assistant to support an \"advanced\" settings view where a custom server could be defined.++Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.++"""]]
+ doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"+ nickname="Andrew"+ subject="comment 2"+ date="2013-04-17T22:28:39Z"+ content="""+Yeah, I agree, this would be nice. ++For your own domain, you can configure DNS like this: [[http://support.google.com/a/bin/answer.py?hl=en&answer=34143]] to make XMPP find the right server. But for some that's not an option and the \"advanced\" mode would be useful in that case.+"""]]
+ doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6"+ nickname="Olivier R"+ subject="It doesn't work 100%"+ date="2012-05-03T21:42:54Z"+ content="""+When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.+++"""]]
+ doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"+ nickname="Matt"+ subject="ANNEX_S3 vs AWS for keys"+ date="2012-05-29T12:24:25Z"+ content="""+The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both \"AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\" instead, which works. This is with Xubuntu 12.04.+"""]]
+ doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="http://joeyh.name/"+ ip="4.153.81.112"+ subject="comment 2"+ date="2012-05-29T19:10:42Z"+ content="""+Thanks, I've fixed that. (You could have too.. this is a wiki ;)+"""]]
+ doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn view
@@ -0,0 +1,7 @@+There are times when it is handy to be able to upload a file to a web host somewhere and share a link for that file to a select few people.++It seems to be that the assistant could handle this scenario. It could generate a directory with a random name on the remote, and transfer the file there (using the existing filename) and the appropriate URL could be displayed in the assistant webapp to allow the user to copy the URL to send it to the appropriate people.++Note: Joey and I had a quick chat about this use case at LCA2013.++[[!tag design/assistant]]
+ doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment view
@@ -0,0 +1,11 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"+ nickname="Richard"+ subject="comment 1"+ date="2011-05-17T07:27:02Z"+ content="""+Sounds like a good idea.++* git annex fsck (or similar) should check/rebuild the caches+* I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.+"""]]
+ doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment view
@@ -0,0 +1,8 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"+ nickname="Michael"+ subject="comment 1"+ date="2013-03-01T01:26:36Z"+ content="""+This would indeed be very helpful when remotely mounting a photo/video collection over samba.+"""]]
+ doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment view
@@ -0,0 +1,9 @@+[[!comment format=mdwn+ username="http://edheil.wordpress.com/"+ ip="173.162.44.162"+ subject="comment 2"+ date="2013-03-01T04:50:28Z"+ content="""++1 this would be sweet as hell++"""]]
doc/todo/windows_support.mdwn view
@@ -1,61 +1,13 @@-Can it be built on Windows?--short answer: not yet--First, you need to get some unix utilities for windows. Git of course.-Also rsync, and a `cp` command that understands at least `cp -p`, and-`uuid`, and `xargs` and `sha1sum`. Note that some of these could be-replaced with haskell libraries to some degree.--There are probably still some places where it assumes / as a path-separator, although I fixed probably almost all by now.--Then 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.+The git-annex Windows port is not ready for prime time. But it does exist+now! --[[Joey]]  -<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>+## status -A good starting point is-<http://hackage.haskell.org/package/unix-compat-0.3.0.1>. However, note-that its implementations of stuff like `createSymbolicLink` are stubs.---[[Joey]] +* Does not support encryption with gpg.+* Does not work with Cygwin's build of git (that git does not consistently+  support use of DOS style paths, which git-annex uses on Windows). +  Must use the upstream build of git for Windows.+* test suite doesn't work+* Bad file locking, it's probably not safe to run more than one git-annex+  process at the same time on Windows.+* No support for the assistant or webapp.
+ doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment view
@@ -0,0 +1,10 @@+[[!comment format=mdwn+ username="https://www.google.com/accounts/o8/id?id=AItOawkRITTYYsN0TFKN7G5sZ6BWGZOTQ88Pz4s"+ nickname="Zoltán"+ subject="cygwin"+ date="2012-05-15T00:14:08Z"+ content="""+What about [Cygwin](http://cygwin.com/)? It emulates POSIX fairly well under Windows (including signals, forking, fs (also things like /dev/null, /proc), unix file permissions), has all standard gnu utilities. It also emulates symlinks, but they are unfortunately incompatible with NTFS symlinks introduced in Vista [due to some stupid restrictions on Windows](http://cygwin.com/ml/cygwin/2009-10/msg00756.html).++If git-annex could be modified to not require symlinks to work, the it would be a pretty neat solution (and you get a real shell, not some command.com on drugs (aka cmd.exe))+"""]]
+ doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment view

file too large to diff

+ doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment view

file too large to diff

+ doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment view

file too large to diff

+ doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment view

file too large to diff

+ doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment view

file too large to diff

+ doc/todo/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.mdwn view

file too large to diff

+ doc/todo/wishlist:_print_locations_for_files_in_rsync_remote.mdwn view

file too large to diff

file too large to diff

git-annex.1 view

file too large to diff

git-annex.cabal view

file too large to diff

git-annex.hs view

file too large to diff

standalone/android/Makefile view

file too large to diff

− standalone/android/haskell-patches/DAV-0.3-0001-build-without-TH.patch

file too large to diff

+ standalone/android/haskell-patches/DAV_0.3-0001-build-without-TH.patch view

file too large to diff

− standalone/android/haskell-patches/aeson-0.6.1.0_0001-disable-TH.patch

file too large to diff

+ standalone/android/haskell-patches/aeson_0.6.1.0_0001-disable-TH.patch view

file too large to diff

file too large to diff

+ standalone/android/haskell-patches/hS3_0.5.7_0001-fix-build.patch view

file too large to diff

− standalone/android/haskell-patches/hamlet-1.1.6.1_0001-remove-TH.patch

file too large to diff

+ standalone/android/haskell-patches/hamlet_1.1.6.1_0001-remove-TH.patch view

file too large to diff

− standalone/android/haskell-patches/lens-3.8.5-0001-build-without-TH.patch

file too large to diff

+ standalone/android/haskell-patches/lens_3.8.5-0001-build-without-TH.patch view

file too large to diff

+ standalone/android/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch view

file too large to diff

− standalone/android/haskell-patches/shakespeare-1.0.3_0001-remove-TH.patch

file too large to diff

+ standalone/android/haskell-patches/shakespeare-js_1.1.2_0001-remove-TH.patch view

file too large to diff

+ standalone/android/haskell-patches/shakespeare_1.0.3_0001-remove-TH.patch view

file too large to diff

+ standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch view

file too large to diff

− standalone/android/haskell-patches/wai-app-static-1.3.1-remove-TH.patch

file too large to diff

+ standalone/android/haskell-patches/wai-app-static_1.3.1-remove-TH.patch view

file too large to diff

− standalone/android/haskell-patches/yesod-core-1.1.8_0001-remove-TH.patch

file too large to diff

+ standalone/android/haskell-patches/yesod-core_1.1.8_0001-remove-TH.patch view

file too large to diff

− standalone/android/haskell-patches/yesod-form-1.2.1.1-0002-expand-TH.patch

file too large to diff

+ standalone/android/haskell-patches/yesod-form_1.2.1.1-0002-expand-TH.patch view

file too large to diff

− standalone/android/haskell-patches/yesod-static-1.1.2-remove-TH.patch

file too large to diff

+ standalone/android/haskell-patches/yesod-static_1.1.2-remove-TH.patch view

file too large to diff

+ standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png view

file too large to diff

+ standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png view

file too large to diff

+ standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png view

file too large to diff

+ standalone/android/install-haskell-packages view

file too large to diff

standalone/android/openssh.patch view

file too large to diff

standalone/android/runshell view

file too large to diff

+ standalone/android/start view

file too large to diff

standalone/android/term.patch view

file too large to diff

templates/configurators/addrepository/misc.hamlet view

file too large to diff

templates/configurators/newrepository/first.hamlet view

file too large to diff

templates/documentation/repogroup.hamlet view

file too large to diff

templates/page.hamlet view

file too large to diff