Release 4.20130827 for sid [dgit]

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.14 (GNU/Linux)
 
 iQIVAwUAUh0JyckQ2SIlEuPHAQihEQ/+Ix0nlizcigYfHqmqea8DQTE4mlIlGEng
 IkUX5e1dir1JqqHk+4jjSdrjuopAnZ5wsf+bWnMEC7yOYftq/59OGowDIy9jWqqf
 oN0BQDNIwgR8+5WETewM9ZWc+I5yCcj6sEyf0/BrJJY5QUMENDsRKLF79ADPHWuU
 5EGezOHTD0m+KBqSw+s+Cj+XUmZHJgPq2j6kFqlrFMc7qv7rLnj3bI3Mc7aHfWua
 g0oHMyXA2jMiP2UwjMU/hAPq6dqt0fjeJ7vyYyIsETQ1jZsdZQtRjaSSxNAEBEJ1
 eGD0zYJ6GdusD0IpI+UVp6Wkw3y0kKA0WsYXtu3vVqyEjO7uHBGcWPePiGISd7nd
 GPW7KBftKFBa7DQe56d/Ztk05Aze0eeek50DGMovzKfOj/FysNn3ystUy43RBSF8
 40kCb8S/Rs2VPVOWNrcccYo2Hx5SFaYG+YBHJTxYNdwsx4DyMB1iGowe3fASJgnF
 VMhqkKWn55i/CdJG2jlWr4wSiW44iY3b/na/f3Ktb1FamveYCxJIH+trFBAv3qn3
 EWh0wuFeg8VF/WDK/IRcuH12jup784JhIEjTeTvURd4/TJXkNtxO1xHV7BG1VuhR
 rSr9AUNfdiPwRZViK4jQUd6x9OF+Qil8pSe3XbvIsJLfpWkiK80kcbFCFmXaJIrQ
 5cspJ23ALTI=
 =gpx9
 -----END PGP SIGNATURE-----

Merge tag 'debian/4.20130827' into debian-wheezy-backport

Release 4.20130827 for sid [dgit]

# gpg: Signature made Tue Aug 27 20:19:21 2013 UTC using RSA key ID 2512E3C7
# gpg: Good signature from "Joey Hess <joeyh@debian.org>"
# gpg:                 aka "Joey Hess <joey@kitenet.net>"
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: E85A 5F63 B31D 24C1 EBF0  D81C C910 D922 2512 E3C7
This commit is contained in:
Joey Hess 2013-09-09 20:25:26 +00:00
commit 35cedd6457
226 changed files with 3637 additions and 364 deletions

View file

@ -12,6 +12,7 @@ module Annex.CatFile (
catFileHandle,
catKey,
catKeyFile,
catKeyFileHEAD,
) where
import qualified Data.ByteString.Lazy as L
@ -87,6 +88,9 @@ catKey ref = do
-}
catKeyFile :: FilePath -> Annex (Maybe Key)
catKeyFile f = ifM (Annex.getState Annex.daemon)
( catKey $ Ref $ "HEAD:./" ++ f
( catKeyFileHEAD f
, catKey $ Ref $ ":./" ++ f
)
catKeyFileHEAD :: FilePath -> Annex (Maybe Key)
catKeyFileHEAD f = catKey $ Ref $ "HEAD:./" ++ f

20
Annex/Quvi.hs Normal file
View file

@ -0,0 +1,20 @@
{- quvi options for git-annex
-
- Copyright 2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE Rank2Types #-}
module Annex.Quvi where
import Common.Annex
import qualified Annex
import Utility.Quvi
import Utility.Url
withQuviOptions :: forall a. (Query a) -> [CommandParam] -> URLString -> Annex a
withQuviOptions a ps url = do
opts <- map Param . annexQuviOptions <$> Annex.getGitConfig
liftIO $ a (ps++opts) url

View file

@ -29,6 +29,10 @@ notifyNetMessagerRestart :: Assistant ()
notifyNetMessagerRestart =
flip writeSV () <<~ (netMessagerRestart . netMessager)
{- This can be used to get an early indication if the network has
- changed, to immediately restart a connection. However, that is not
- available on all systems, so clients also need to deal with
- restarting dropped connections in the usual way. -}
waitNetMessagerRestart :: Assistant ()
waitNetMessagerRestart = readSV <<~ (netMessagerRestart . netMessager)

View file

@ -39,7 +39,11 @@ netWatcherThread = thread noop
- network connection changes, but it also ensures that
- any networked remotes that may have not been routable for a
- while (despite the local network staying up), are synced with
- periodically. -}
- periodically.
-
- Note that it does not call notifyNetMessagerRestart, because
- it doesn't know that the network has changed.
-}
netWatcherFallbackThread :: NamedThread
netWatcherFallbackThread = namedThread "NetWatcherFallback" $
runEvery (Seconds 3600) <~> handleConnection

View file

@ -27,7 +27,7 @@ pairListenerThread :: UrlRenderer -> NamedThread
pairListenerThread urlrenderer = namedThread "PairListener" $ do
listener <- asIO1 $ go [] []
liftIO $ withSocketsDo $
runEvery (Seconds 1) $ void $ tryIO $
runEvery (Seconds 60) $ void $ tryIO $
listener =<< getsock
where
{- Note this can crash if there's no network interface,

View file

@ -32,6 +32,7 @@ tests =
, TestCase "curl" $ testCmd "curl" "curl --version >/dev/null"
, TestCase "wget" $ testCmd "wget" "wget --version >/dev/null"
, TestCase "bup" $ testCmd "bup" "bup --version >/dev/null"
, TestCase "quvi" $ testCmd "quvi" "quvi --version >/dev/null"
, TestCase "ionice" $ testCmd "ionice" "ionice -c3 true >/dev/null"
, TestCase "gpg" $ maybeSelectCmd "gpg"
[ ("gpg", "--version >/dev/null")

View file

@ -27,6 +27,8 @@ import Annex.Content.Direct
import Logs.Location
import qualified Logs.Transfer as Transfer
import Utility.Daemon (checkDaemon)
import Annex.Quvi
import qualified Utility.Quvi as Quvi
def :: [Command]
def = [notBareRepo $ withOptions [fileOption, pathdepthOption, relaxedOption] $
@ -51,15 +53,51 @@ seek = [withField fileOption return $ \f ->
start :: Bool -> Maybe FilePath -> Maybe Int -> String -> CommandStart
start relaxed optfile pathdepth s = go $ fromMaybe bad $ parseURI s
where
bad = fromMaybe (error $ "bad url " ++ s) $
parseURI $ escapeURIString isUnescapedInURI s
go url = do
pathmax <- liftIO $ fileNameLengthLimit "."
let file = fromMaybe (url2file url pathdepth pathmax) optfile
(s', downloader) = getDownloader s
bad = fromMaybe (error $ "bad url " ++ s') $
parseURI $ escapeURIString isUnescapedInURI s'
badquvi = error $ "quvi does not know how to download url " ++ s'
choosefile = flip fromMaybe optfile
go url = case downloader of
QuviDownloader -> usequvi
DefaultDownloader -> ifM (liftIO $ Quvi.supported s')
( usequvi
, do
pathmax <- liftIO $ fileNameLengthLimit "."
let file = choosefile $ url2file url pathdepth pathmax
showStart "addurl" file
next $ perform relaxed s' file
)
usequvi = do
page <- fromMaybe badquvi
<$> withQuviOptions Quvi.forceQuery [Quvi.quiet, Quvi.httponly] s'
let link = fromMaybe badquvi $ headMaybe $ Quvi.pageLinks page
let file = choosefile $ sanitizeFilePath $
Quvi.pageTitle page ++ "." ++ Quvi.linkSuffix link
showStart "addurl" file
next $ perform relaxed s file
next $ performQuvi relaxed s' (Quvi.linkUrl link) file
perform :: Bool -> String -> FilePath -> CommandPerform
performQuvi :: Bool -> URLString -> URLString -> FilePath -> CommandPerform
performQuvi relaxed pageurl videourl file = ifAnnexed file addurl geturl
where
quviurl = setDownloader pageurl QuviDownloader
addurl (key, _backend) = next $ cleanup quviurl file key Nothing
geturl = do
key <- Backend.URL.fromUrl quviurl Nothing
ifM (pure relaxed <||> Annex.getState Annex.fast)
( next $ cleanup quviurl file key Nothing
, do
tmp <- fromRepo $ gitAnnexTmpLocation key
showOutput
ok <- Transfer.download webUUID key (Just file) Transfer.forwardRetry $ const $ do
liftIO $ createDirectoryIfMissing True (parentDir tmp)
downloadUrl [videourl] tmp
if ok
then next $ cleanup quviurl file key (Just tmp)
else stop
)
perform :: Bool -> URLString -> FilePath -> CommandPerform
perform relaxed url file = ifAnnexed file addurl geturl
where
geturl = next $ addUrlFile relaxed url file
@ -78,7 +116,7 @@ perform relaxed url file = ifAnnexed file addurl geturl
stop
)
addUrlFile :: Bool -> String -> FilePath -> Annex Bool
addUrlFile :: Bool -> URLString -> FilePath -> Annex Bool
addUrlFile relaxed url file = do
liftIO $ createDirectoryIfMissing True (parentDir file)
ifM (Annex.getState Annex.fast <||> pure relaxed)
@ -88,7 +126,7 @@ addUrlFile relaxed url file = do
download url file
)
download :: String -> FilePath -> Annex Bool
download :: URLString -> FilePath -> Annex Bool
download url file = do
dummykey <- genkey
tmp <- fromRepo $ gitAnnexTmpLocation dummykey
@ -130,7 +168,7 @@ download url file = do
downloadUrl [url] tmp
cleanup :: String -> FilePath -> Key -> Maybe FilePath -> Annex Bool
cleanup :: URLString -> FilePath -> Key -> Maybe FilePath -> Annex Bool
cleanup url file key mtmp = do
when (isJust mtmp) $
logStatus key InfoPresent
@ -144,7 +182,7 @@ cleanup url file key mtmp = do
maybe noop (moveAnnex key) mtmp
return True
nodownload :: Bool -> String -> FilePath -> Annex Bool
nodownload :: Bool -> URLString -> FilePath -> Annex Bool
nodownload relaxed url file = do
headers <- getHttpHeaders
(exists, size) <- if relaxed

View file

@ -9,6 +9,7 @@ module Command.Copy where
import Common.Annex
import Command
import GitAnnex.Options
import qualified Command.Move
import qualified Remote
import Annex.Wanted
@ -19,8 +20,8 @@ def = [withOptions Command.Move.moveOptions $ command "copy" paramPaths seek
seek :: [CommandSeek]
seek =
[ withField Command.Move.toOption Remote.byNameWithUUID $ \to ->
withField Command.Move.fromOption Remote.byNameWithUUID $ \from ->
[ withField toOption Remote.byNameWithUUID $ \to ->
withField fromOption Remote.byNameWithUUID $ \from ->
withKeyOptions (Command.Move.startKey to from False) $
withFilesInGit $ whenAnnexed $ start to from
]

View file

@ -33,7 +33,7 @@ import qualified Option
import Types.Key
import Utility.HumanTime
import Git.FilePath
import GitAnnex.Options
import GitAnnex.Options hiding (fromOption)
#ifndef mingw32_HOST_OS
import System.Posix.Process (getProcessID)

View file

@ -11,10 +11,10 @@ import Common.Annex
import Command
import qualified Remote
import Annex.Content
import qualified Command.Move
import Logs.Transfer
import Annex.Wanted
import GitAnnex.Options
import qualified Command.Move
import Types.Key
def :: [Command]
@ -22,11 +22,11 @@ def = [withOptions getOptions $ command "get" paramPaths seek
SectionCommon "make content of annexed files available"]
getOptions :: [Option]
getOptions = [Command.Move.fromOption] ++ keyOptions
getOptions = fromOption : keyOptions
seek :: [CommandSeek]
seek =
[ withField Command.Move.fromOption Remote.byNameWithUUID $ \from ->
[ withField fromOption Remote.byNameWithUUID $ \from ->
withKeyOptions (startKeys from) $
withFilesInGit $ whenAnnexed $ start from
]

View file

@ -1,6 +1,6 @@
{- git-annex command
-
- Copyright 2012 Joey Hess <joey@kitenet.net>
- Copyright 2012-2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -13,30 +13,92 @@ import Common.Annex
import Command
import qualified Annex
import qualified Command.Add
import qualified Option
import Utility.CopyFile
import Backend
import Remote
import Types.KeySource
def :: [Command]
def = [notBareRepo $ command "import" paramPaths seek
def = [withOptions opts $ notBareRepo $ command "import" paramPaths seek
SectionCommon "move and add files from outside git working copy"]
seek :: [CommandSeek]
seek = [withPathContents start]
opts :: [Option]
opts =
[ duplicateOption
, deduplicateOption
, cleanDuplicatesOption
]
start :: (FilePath, FilePath) -> CommandStart
start (srcfile, destfile) =
duplicateOption :: Option
duplicateOption = Option.flag [] "duplicate" "do not delete outside files"
deduplicateOption :: Option
deduplicateOption = Option.flag [] "deduplicate" "do not add files whose content has been seen"
cleanDuplicatesOption :: Option
cleanDuplicatesOption = Option.flag [] "clean-duplicates" "delete outside duplicate files (import nothing)"
data DuplicateMode = Default | Duplicate | DeDuplicate | CleanDuplicates
deriving (Eq)
getDuplicateMode :: Annex DuplicateMode
getDuplicateMode = gen
<$> getflag duplicateOption
<*> getflag deduplicateOption
<*> getflag cleanDuplicatesOption
where
getflag = Annex.getFlag . Option.name
gen False False False = Default
gen True False False = Duplicate
gen False True False = DeDuplicate
gen False False True = CleanDuplicates
gen _ _ _ = error "bad combination of --duplicate, --deduplicate, --clean-duplicates"
seek :: [CommandSeek]
seek = [withValue getDuplicateMode $ \mode -> withPathContents $ start mode]
start :: DuplicateMode -> (FilePath, FilePath) -> CommandStart
start mode (srcfile, destfile) =
ifM (liftIO $ isRegularFile <$> getSymbolicLinkStatus srcfile)
( do
showStart "import" destfile
next $ perform srcfile destfile
next $ perform mode srcfile destfile
, stop
)
perform :: FilePath -> FilePath -> CommandPerform
perform srcfile destfile = do
whenM (liftIO $ doesFileExist destfile) $
unlessM (Annex.getState Annex.force) $
error $ "not overwriting existing " ++ destfile ++
" (use --force to override)"
liftIO $ createDirectoryIfMissing True (parentDir destfile)
liftIO $ moveFile srcfile destfile
Command.Add.perform destfile
perform :: DuplicateMode -> FilePath -> FilePath -> CommandPerform
perform mode srcfile destfile =
case mode of
DeDuplicate -> ifM isdup
( deletedup
, go
)
CleanDuplicates -> ifM isdup
( deletedup
, next $ return True
)
_ -> go
where
isdup = do
backend <- chooseBackend destfile
let ks = KeySource srcfile srcfile Nothing
v <- genKey ks backend
case v of
Just (k, _) -> not . null <$> keyLocations k
_ -> return False
deletedup = do
showNote "duplicate"
liftIO $ removeFile srcfile
next $ return True
go = do
whenM (liftIO $ doesFileExist destfile) $
unlessM (Annex.getState Annex.force) $
error $ "not overwriting existing " ++ destfile ++
" (use --force to override)"
liftIO $ createDirectoryIfMissing True (parentDir destfile)
liftIO $ if mode == Duplicate
then void $ copyFileExternal srcfile destfile
else moveFile srcfile destfile
Command.Add.perform destfile

View file

@ -12,7 +12,6 @@ import Text.Feed.Query
import Text.Feed.Types
import qualified Data.Set as S
import qualified Data.Map as M
import Data.Char
import Data.Time.Clock
import Common.Annex
@ -172,20 +171,15 @@ feedFile tmpl i = Utility.Format.format tmpl $ M.fromList
, fieldMaybe "itemdescription" $ getItemDescription $ item i
, fieldMaybe "itemrights" $ getItemRights $ item i
, fieldMaybe "itemid" $ snd <$> getItemId (item i)
, ("extension", map sanitize $ takeExtension $ location i)
, ("extension", sanitizeFilePath $ takeExtension $ location i)
]
where
field k v =
let s = map sanitize v in
let s = sanitizeFilePath v in
if null s then (k, "none") else (k, s)
fieldMaybe k Nothing = (k, "none")
fieldMaybe k (Just v) = field k v
sanitize c
| c == '.' = c
| isSpace c || isPunctuation c || c == '/' = '_'
| otherwise = c
{- Called when there is a problem with a feed.
- Throws an error if the feed is broken, otherwise shows a warning. -}
feedProblem :: URLString -> String -> Annex ()

58
Command/Mirror.hs Normal file
View file

@ -0,0 +1,58 @@
{- git-annex command
-
- Copyright 2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.Mirror where
import Common.Annex
import Command
import GitAnnex.Options
import qualified Command.Move
import qualified Command.Drop
import qualified Command.Get
import qualified Remote
import Annex.Content
import qualified Annex
def :: [Command]
def = [withOptions fromToOptions $ command "mirror" paramPaths seek
SectionCommon "mirror content of files to/from another repository"]
seek :: [CommandSeek]
seek =
[ withField toOption Remote.byNameWithUUID $ \to ->
withField fromOption Remote.byNameWithUUID $ \from ->
withFilesInGit $ whenAnnexed $ start to from
]
start :: Maybe Remote -> Maybe Remote -> FilePath -> (Key, Backend) -> CommandStart
start to from file (key, _backend) = do
noAuto
case (from, to) of
(Nothing, Nothing) -> error "specify either --from or --to"
(Nothing, Just r) -> mirrorto r
(Just r, Nothing) -> mirrorfrom r
_ -> error "only one of --from or --to can be specified"
where
noAuto = whenM (Annex.getState Annex.auto) $
error "--auto is not supported for mirror"
mirrorto r = ifM (inAnnex key)
( Command.Move.toStart r False (Just file) key
, do
numcopies <- numCopies file
Command.Drop.startRemote file numcopies key r
)
mirrorfrom r = do
haskey <- Remote.hasKey r key
case haskey of
Left _ -> stop
Right True -> Command.Get.start' (return True) Nothing key (Just file)
Right False -> ifM (inAnnex key)
( do
numcopies <- numCopies file
Command.Drop.startLocal file numcopies key Nothing
, stop
)

View file

@ -14,7 +14,6 @@ import qualified Annex
import Annex.Content
import qualified Remote
import Annex.UUID
import qualified Option
import Logs.Presence
import Logs.Transfer
import GitAnnex.Options
@ -24,14 +23,8 @@ def :: [Command]
def = [withOptions moveOptions $ command "move" paramPaths seek
SectionCommon "move content of files to/from another repository"]
fromOption :: Option
fromOption = Option.field ['f'] "from" paramRemote "source remote"
toOption :: Option
toOption = Option.field ['t'] "to" paramRemote "destination remote"
moveOptions :: [Option]
moveOptions = [fromOption, toOption] ++ keyOptions
moveOptions = fromToOptions ++ keyOptions
seek :: [CommandSeek]
seek =
@ -54,7 +47,7 @@ start' to from move afile key = do
(Nothing, Nothing) -> error "specify either --from or --to"
(Nothing, Just dest) -> toStart dest move afile key
(Just src, Nothing) -> fromStart src move afile key
(_ , _) -> error "only one of --from or --to can be specified"
_ -> error "only one of --from or --to can be specified"
where
noAuto = when move $ whenM (Annex.getState Annex.auto) $ error
"--auto is not supported for move"

View file

@ -12,6 +12,7 @@ import Command
import qualified Command.Add
import qualified Command.Fix
import qualified Git.DiffTree
import qualified Git.Ref
import Annex.CatFile
import Annex.Content.Direct
import Git.Sha
@ -38,7 +39,7 @@ startIndirect file = next $ do
startDirect :: [String] -> CommandStart
startDirect _ = next $ do
(diffs, clean) <- inRepo $ Git.DiffTree.diffIndex
(diffs, clean) <- inRepo $ Git.DiffTree.diffIndex Git.Ref.headRef
forM_ diffs go
next $ liftIO clean
where

View file

@ -101,10 +101,13 @@ mergeLocal :: Git.Ref -> CommandStart
mergeLocal branch = go =<< needmerge
where
syncbranch = syncBranch branch
needmerge = do
unlessM (inRepo $ Git.Ref.exists syncbranch) $
inRepo $ updateBranch syncbranch
inRepo $ Git.Branch.changed branch syncbranch
needmerge = ifM isBareRepo
( return False
, do
unlessM (inRepo $ Git.Ref.exists syncbranch) $
inRepo $ updateBranch syncbranch
inRepo $ Git.Branch.changed branch syncbranch
)
go False = stop
go True = do
showStart "merge" $ Git.Ref.describe syncbranch

View file

@ -15,23 +15,23 @@ import Logs.Location
import Logs.Transfer
import qualified Remote
import Types.Remote
import qualified Command.Move
import GitAnnex.Options
import qualified Option
def :: [Command]
def = [withOptions options $
def = [withOptions transferKeyOptions $
noCommit $ command "transferkey" paramKey seek SectionPlumbing
"transfers a key from or to a remote"]
options :: [Option]
options = [fileOption, Command.Move.fromOption, Command.Move.toOption]
transferKeyOptions :: [Option]
transferKeyOptions = fileOption : fromToOptions
fileOption :: Option
fileOption = Option.field [] "file" paramFile "the associated file"
seek :: [CommandSeek]
seek = [withField Command.Move.toOption Remote.byNameWithUUID $ \to ->
withField Command.Move.fromOption Remote.byNameWithUUID $ \from ->
seek = [withField toOption Remote.byNameWithUUID $ \to ->
withField fromOption Remote.byNameWithUUID $ \from ->
withField fileOption return $ \file ->
withKeys $ start to from file]

View file

@ -21,15 +21,15 @@ import Common.Annex
import Command
import Logs.Unused
import Annex.Content
import Utility.FileMode
import Logs.Location
import Logs.Transfer
import qualified Annex
import qualified Git
import qualified Git.Command
import qualified Git.Ref
import qualified Git.Branch
import qualified Git.LsFiles as LsFiles
import qualified Git.LsTree as LsTree
import qualified Git.DiffTree as DiffTree
import qualified Backend
import qualified Remote
import qualified Annex.Branch
@ -241,7 +241,7 @@ withKeysReferenced' mdir initial a = do
( return ([], return True)
, do
top <- fromRepo Git.repoPath
inRepo $ LsFiles.inRepo [top]
inRepo $ LsFiles.allFiles [top]
)
Just dir -> inRepo $ LsFiles.inRepo [dir]
go v [] = return v
@ -255,35 +255,48 @@ withKeysReferenced' mdir initial a = do
withKeysReferencedInGit :: (Key -> Annex ()) -> Annex ()
withKeysReferencedInGit a = do
rs <- relevantrefs <$> showref
forM_ rs (withKeysReferencedInGitRef a)
current <- inRepo Git.Branch.currentUnsafe
shaHead <- maybe (return Nothing) (inRepo . Git.Ref.sha) current
showref >>= mapM_ (withKeysReferencedInGitRef a) .
relevantrefs (shaHead, current)
where
showref = inRepo $ Git.Command.pipeReadStrict [Param "show-ref"]
relevantrefs = map (Git.Ref . snd) .
nubBy uniqref .
relevantrefs headRef = addHead headRef .
filter ourbranches .
map (separate (== ' ')) . lines
uniqref (x, _) (y, _) = x == y
map (separate (== ' ')) .
lines
nubRefs = map (Git.Ref . snd) . nubBy (\(x, _) (y, _) -> x == y)
ourbranchend = '/' : show Annex.Branch.name
ourbranches (_, b) = not (ourbranchend `isSuffixOf` b)
&& not ("refs/synced/" `isPrefixOf` b)
addHead headRef refs = case headRef of
-- if HEAD diverges from all branches (except the branch it
-- points to), run the actions on staged keys (and keys
-- that are only present in the work tree if the repo is
-- non bare)
(Just (Git.Ref x), Just (Git.Ref b))
| all (\(x',b') -> x /= x' || b == b') refs ->
Git.Ref.headRef
: nubRefs (filter ((/= x) . fst) refs)
_ -> nubRefs refs
{- Runs an action on keys referenced in the given Git reference which
- differ from those referenced in the index. -}
withKeysReferencedInGitRef :: (Key -> Annex ()) -> Git.Ref -> Annex ()
withKeysReferencedInGitRef a ref = do
showAction $ "checking " ++ Git.Ref.describe ref
go <=< inRepo $ LsTree.lsTree ref
bare <- isBareRepo
(ts,clean) <- inRepo $ if bare
then DiffTree.diffIndex ref
else DiffTree.diffWorkTree ref
let lookAtWorkingTree = not bare && ref == Git.Ref.headRef
forM_ ts $ tKey lookAtWorkingTree >=> maybe noop a
liftIO $ void clean
where
go [] = noop
go (l:ls)
| isSymLink (LsTree.mode l) = do
content <- encodeW8 . L.unpack
<$> catFile ref (LsTree.file l)
case fileKey (takeFileName content) of
Nothing -> go ls
Just k -> do
a k
go ls
| otherwise = go ls
tKey True = Backend.lookupFile . DiffTree.file >=*>
fmap fst
tKey False = catFile ref . DiffTree.file >=*>
fileKey . takeFileName . encodeW8 . L.unpack
{- Looks in the specified directory for bad/tmp keys, and returns a list
- of those that might still have value, or might be stale and removable.

View file

@ -18,6 +18,9 @@ import Config.Cost
type UnqualifiedConfigKey = String
data ConfigKey = ConfigKey String
instance Show ConfigKey where
show (ConfigKey s) = s
{- Looks up a setting in git config. -}
getConfig :: ConfigKey -> String -> Annex String
getConfig (ConfigKey key) def = fromRepo $ Git.Config.get key def

View file

@ -91,7 +91,7 @@ fromUrl url
fromUrlStrict :: String -> IO Repo
fromUrlStrict url
| startswith "file://" url = fromAbsPath $ uriPath u
| startswith "file://" url = fromAbsPath $ unEscapeString $ uriPath u
| otherwise = newFrom $ Url u
where
u = fromMaybe bad $ parseURI url

View file

@ -10,6 +10,7 @@ module Git.DiffTree (
diffTree,
diffTreeRecursive,
diffIndex,
diffWorkTree,
) where
import Numeric
@ -41,15 +42,26 @@ diffTreeRecursive :: Ref -> Ref -> Repo -> IO ([DiffTreeItem], IO Bool)
diffTreeRecursive src dst = getdiff (Param "diff-tree")
[Param "-r", Param (show src), Param (show dst)]
{- Diffs between the repository and index. Does nothing if there is not
- yet a commit in the repository. -}
diffIndex :: Repo -> IO ([DiffTreeItem], IO Bool)
diffIndex repo = do
{- Diffs between a tree and the index. Does nothing if there is not yet a
- commit in the repository. -}
diffIndex :: Ref -> Repo -> IO ([DiffTreeItem], IO Bool)
diffIndex ref = diffIndex' ref [Param "--cached"]
{- Diffs between a tree and the working tree. Does nothing if there is not
- yet a commit in the repository, of if the repository is bare. -}
diffWorkTree :: Ref -> Repo -> IO ([DiffTreeItem], IO Bool)
diffWorkTree ref repo =
ifM (Git.Ref.headExists repo)
( diffIndex' ref [] repo
, return ([], return True)
)
diffIndex' :: Ref -> [CommandParam] -> Repo -> IO ([DiffTreeItem], IO Bool)
diffIndex' ref params repo =
ifM (Git.Ref.headExists repo)
( getdiff (Param "diff-index")
[ Param "--cached"
, Param $ show Git.Ref.headRef
] repo
( params ++ [Param $ show ref] )
repo
, return ([], return True)
)

View file

@ -8,6 +8,7 @@
module Git.LsFiles (
inRepo,
notInRepo,
allFiles,
deleted,
modified,
staged,
@ -41,6 +42,11 @@ notInRepo include_ignored l repo = pipeNullSplit params repo
| include_ignored = []
| otherwise = [Param "--exclude-standard"]
{- Finds all files in the specified locations, whether checked into git or
- not. -}
allFiles :: [FilePath] -> Repo -> IO ([FilePath], IO Bool)
allFiles l = pipeNullSplit $ Params "ls-files --cached --others -z --" : map File l
{- Returns a list of files in the specified locations that have been
- deleted. -}
deleted :: [FilePath] -> Repo -> IO ([FilePath], IO Bool)

View file

@ -56,6 +56,7 @@ import qualified Command.Content
import qualified Command.Ungroup
import qualified Command.Vicfg
import qualified Command.Sync
import qualified Command.Mirror
import qualified Command.AddUrl
#ifdef WITH_FEED
import qualified Command.ImportFeed
@ -93,6 +94,7 @@ cmds = concat
, Command.Unlock.def
, Command.Lock.def
, Command.Sync.def
, Command.Mirror.def
, Command.AddUrl.def
#ifdef WITH_FEED
, Command.ImportFeed.def

View file

@ -65,3 +65,12 @@ keyOptions =
, Option ['U'] ["unused"] (NoArg (Annex.setFlag "unused"))
"operate on files found by last run of git-annex unused"
]
fromOption :: Option
fromOption = Option.field ['f'] "from" paramRemote "source remote"
toOption :: Option
toOption = Option.field ['t'] "to" paramRemote "destination remote"
fromToOptions :: [Option]
fromToOptions = [fromOption, toOption]

View file

@ -13,7 +13,10 @@ module Logs.Web (
setUrlMissing,
urlLog,
urlLogKey,
knownUrls
knownUrls,
Downloader(..),
getDownloader,
setDownloader,
) where
import qualified Data.ByteString.Lazy.Char8 as L
@ -101,3 +104,19 @@ knownUrls = do
where
geturls Nothing = return []
geturls (Just logsha) = getLog . L.unpack <$> catObject logsha
data Downloader = DefaultDownloader | QuviDownloader
{- Determines the downloader for an URL.
-
- Some URLs are not downloaded by normal means, and this is indicated
- by prefixing them with downloader: when they are recorded in the url
- logs. -}
getDownloader :: URLString -> (URLString, Downloader)
getDownloader u = case separate (== ':') u of
("quvi", u') -> (u', QuviDownloader)
_ -> (u, DefaultDownloader)
setDownloader :: URLString -> Downloader -> URLString
setDownloader u DefaultDownloader = u
setDownloader u QuviDownloader = "quvi:" ++ u

View file

@ -55,6 +55,7 @@ import Logs.UUID
import Logs.Trust
import Logs.Location hiding (logStatus)
import Remote.List
import Config
{- Map from UUIDs of Remotes to a calculated value. -}
remoteMap :: (Remote -> a) -> Annex (M.Map UUID a)
@ -81,13 +82,16 @@ byName (Just n) = either error Just <$> byName' n
{- Like byName, but the remote must have a configured UUID. -}
byNameWithUUID :: Maybe String -> Annex (Maybe Remote)
byNameWithUUID n = do
v <- byName n
return $ checkuuid <$> v
byNameWithUUID = checkuuid <=< byName
where
checkuuid r
| uuid r == NoUUID = error $ "cannot determine uuid for " ++ name r
| otherwise = r
checkuuid Nothing = return Nothing
checkuuid (Just r)
| uuid r == NoUUID = do
let e = "cannot determine uuid for " ++ name r
if remoteAnnexIgnore (gitconfig r)
then error $ e ++ " (" ++ show (remoteConfig (repo r) "ignore") ++ " is set)"
else error e
| otherwise = return $ Just r
byName' :: String -> Annex (Either String Remote)
byName' "" = return $ Left "no remote specified"

View file

@ -15,9 +15,11 @@ import Annex.Content
import Config
import Config.Cost
import Logs.Web
import qualified Utility.Url as Url
import Types.Key
import Utility.Metered
import qualified Utility.Url as Url
import Annex.Quvi
import qualified Utility.Quvi as Quvi
import qualified Data.Map as M
@ -67,7 +69,12 @@ downloadKey key _file dest _p = get =<< getUrls key
return False
get urls = do
showOutput -- make way for download progress bar
downloadUrl urls dest
untilTrue urls $ \u -> do
let (u', downloader) = getDownloader u
case downloader of
QuviDownloader -> flip downloadUrl dest
=<< withQuviOptions Quvi.queryLinks [Quvi.httponly, Quvi.quiet] u'
DefaultDownloader -> downloadUrl [u'] dest
downloadKeyCheap :: Key -> FilePath -> Annex Bool
downloadKeyCheap _ _ = return False
@ -90,6 +97,11 @@ checkKey key = do
else return . Right =<< checkKey' key us
checkKey' :: Key -> [URLString] -> Annex Bool
checkKey' key us = untilTrue us $ \u -> do
showAction $ "checking " ++ u
headers <- getHttpHeaders
liftIO $ Url.check u headers (keySize key)
let (u', downloader) = getDownloader u
showAction $ "checking " ++ u'
case downloader of
QuviDownloader ->
withQuviOptions Quvi.check [Quvi.httponly, Quvi.quiet] u'
DefaultDownloader -> do
headers <- getHttpHeaders
liftIO $ Url.check u' headers (keySize key)

15
Seek.hs
View file

@ -26,6 +26,7 @@ import qualified Option
import Config
import Logs.Location
import Logs.Unused
import Annex.CatFile
seekHelper :: ([FilePath] -> Git.Repo -> IO ([FilePath], IO Bool)) -> [FilePath] -> Annex [FilePath]
seekHelper a params = do
@ -86,12 +87,16 @@ withFilesUnlocked = withFilesUnlocked' LsFiles.typeChanged
withFilesUnlockedToBeCommitted :: (FilePath -> CommandStart) -> CommandSeek
withFilesUnlockedToBeCommitted = withFilesUnlocked' LsFiles.typeChangedStaged
{- Unlocked files have changed type from a symlink to a regular file.
-
- Furthermore, unlocked files used to be a git-annex symlink,
- not some other sort of symlink.
-}
withFilesUnlocked' :: ([FilePath] -> Git.Repo -> IO ([FilePath], IO Bool)) -> (FilePath -> CommandStart) -> CommandSeek
withFilesUnlocked' typechanged a params = do
-- unlocked files have changed type from a symlink to a regular file
typechangedfiles <- seekHelper typechanged params
let unlockedfiles = liftIO $ filterM notSymlink typechangedfiles
prepFiltered a unlockedfiles
withFilesUnlocked' typechanged a params = prepFiltered a unlockedfiles
where
check f = liftIO (notSymlink f) <&&> isJust <$> catKeyFileHEAD f
unlockedfiles = filterM check =<< seekHelper typechanged params
{- Finds files that may be modified. -}
withFilesMaybeModified :: (FilePath -> CommandStart) -> CommandSeek

31
Test.hs
View file

@ -587,6 +587,37 @@ test_unused env = "git-annex unused/dropunused" ~: intmpclonerepoInDirect env $
checkunused [] "after dropunused"
not <$> git_annex env "dropunused" ["--force", "10", "501"] @? "dropunused failed to fail on bogus numbers"
-- unused used to miss symlinks that were not staged and pointed
-- at annexed content, and think that content was unused
writeFile "unusedfile" "unusedcontent"
git_annex env "add" ["unusedfile"] @? "add of unusedfile failed"
unusedfilekey <- annexeval $ findkey "unusedfile"
renameFile "unusedfile" "unusedunstagedfile"
boolSystem "git" [Params "rm -qf", File "unusedfile"] @? "git rm failed"
checkunused [] "with unstaged link"
removeFile "unusedunstagedfile"
checkunused [unusedfilekey] "with unstaged link deleted"
-- unused used to miss symlinks that were deleted or modified
-- manually, but commited as such.
writeFile "unusedfile" "unusedcontent"
git_annex env "add" ["unusedfile"] @? "add of unusedfile failed"
boolSystem "git" [Param "add", File "unusedfile"] @? "git add failed"
unusedfilekey' <- annexeval $ findkey "unusedfile"
checkunused [] "with staged deleted link"
boolSystem "git" [Params "rm -qf", File "unusedfile"] @? "git rm failed"
checkunused [unusedfilekey'] "with staged link deleted"
-- unused used to miss symlinks that were deleted or modified
-- manually, but not staged as such.
writeFile "unusedfile" "unusedcontent"
git_annex env "add" ["unusedfile"] @? "add of unusedfile failed"
boolSystem "git" [Param "add", File "unusedfile"] @? "git add failed"
unusedfilekey'' <- annexeval $ findkey "unusedfile"
checkunused [] "with unstaged deleted link"
removeFile "unusedfile"
checkunused [unusedfilekey''] "with unstaged link deleted"
where
checkunused expectedkeys desc = do
git_annex env "unused" [] @? "unused failed"

View file

@ -37,6 +37,7 @@ data GitConfig = GitConfig
, annexAutoCommit :: Bool
, annexDebug :: Bool
, annexWebOptions :: [String]
, annexQuviOptions :: [String]
, annexWebDownloadCommand :: Maybe String
, annexCrippledFileSystem :: Bool
, annexLargeFiles :: Maybe String
@ -62,6 +63,7 @@ extractGitConfig r = GitConfig
, annexAutoCommit = getbool (annex "autocommit") True
, annexDebug = getbool (annex "debug") False
, annexWebOptions = getwords (annex "web-options")
, annexQuviOptions = getwords (annex "quvi-options")
, annexWebDownloadCommand = getmaybe (annex "web-download-command")
, annexCrippledFileSystem = getbool (annex "crippledfilesystem") False
, annexLargeFiles = getmaybe (annex "largefiles")

View file

@ -8,7 +8,7 @@
module Utility.Monad where
import Data.Maybe
import Control.Monad (liftM)
import Control.Monad
{- Return the first value from a list, if any, satisfying the given
- predicate -}
@ -53,6 +53,16 @@ ma <&&> mb = ifM ma ( mb , return False )
infixr 3 <&&>
infixr 2 <||>
{- Left-to-right Kleisli composition with a pure left/right hand side. -}
(*>=>) :: Monad m => (a -> b) -> (b -> m c) -> (a -> m c)
f *>=> g = return . f >=> g
(>=*>) :: Monad m => (a -> m b) -> (b -> c) -> (a -> m c)
f >=*> g = f >=> return . g
{- Same fixity as >=> and <=< -}
infixr 1 *>=>, >=*>
{- Runs an action, passing its value to an observer before returning it. -}
observe :: Monad m => (a -> m b) -> m a -> m a
observe observer a = do

View file

@ -14,6 +14,7 @@ import System.FilePath
import System.Directory
import Data.List
import Data.Maybe
import Data.Char
import Control.Applicative
#ifdef mingw32_HOST_OS
@ -236,3 +237,18 @@ fileNameLengthLimit dir = do
else return $ minimum [l, 255]
where
#endif
{- Given a string that we'd like to use as the basis for FilePath, but that
- was provided by a third party and is not to be trusted, returns the closest
- sane FilePath.
-
- All spaces and punctuation are replaced with '_', except for '.'
- "../" will thus turn into ".._", which is safe.
-}
sanitizeFilePath :: String -> FilePath
sanitizeFilePath = map sanitize
where
sanitize c
| c == '.' = c
| isSpace c || isPunctuation c || c == '/' = '_'
| otherwise = c

81
Utility/Quvi.hs Normal file
View file

@ -0,0 +1,81 @@
{- querying quvi (import qualified)
-
- Copyright 2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE OverloadedStrings #-}
module Utility.Quvi where
import Common
import Utility.Url
import Data.Aeson
import Data.ByteString.Lazy.UTF8 (fromString)
data Page = Page
{ pageTitle :: String
, pageLinks :: [Link]
} deriving (Show)
data Link = Link
{ linkSuffix :: String
, linkUrl :: URLString
} deriving (Show)
instance FromJSON Page where
parseJSON (Object v) = Page
<$> v .: "page_title"
<*> v .: "link"
parseJSON _ = mzero
instance FromJSON Link where
parseJSON (Object v) = Link
<$> v .: "file_suffix"
<*> v .: "url"
parseJSON _ = mzero
type Query a = [CommandParam] -> URLString -> IO a
{- Throws an error when quvi is not installed. -}
forceQuery :: Query (Maybe Page)
forceQuery ps url = query' ps url `catchNonAsync` onerr
where
onerr _ = ifM (inPath "quvi")
( error "quvi failed"
, error "quvi is not installed"
)
{- Returns Nothing if the page is not a video page, or quvi is not
- installed. -}
query :: Query (Maybe Page)
query ps url = flip catchNonAsync (const $ return Nothing) (query' ps url)
query' :: Query (Maybe Page)
query' ps url = decode . fromString
<$> readProcess "quvi" (toCommand $ ps ++ [Param url])
queryLinks :: Query [URLString]
queryLinks ps url = maybe [] (map linkUrl . pageLinks) <$> query ps url
{- Checks if quvi can still find a download link for an url.
- If quvi is not installed, returns False. -}
check :: Query Bool
check ps url = maybe False (not . null . pageLinks) <$> query ps url
{- Checks if an url is supported by quvi, without hitting it, or outputting
- anything. Also returns False if quvi is not installed. -}
supported :: URLString -> IO Bool
supported url = boolSystem "quvi" [Params "-v mute --support", Param url]
quiet :: CommandParam
quiet = Params "-v quiet"
noredir :: CommandParam
noredir = Params "-e -resolve"
{- Only return http results, not streaming protocols. -}
httponly :: CommandParam
httponly = Params "-c http"

View file

@ -110,7 +110,7 @@ download' quiet url headers options file =
_ -> return False
where
headerparams = map (\h -> Param $ "--header=" ++ h) headers
wget = go "wget" $ headerparams ++ quietopt "-q" ++ [Params "-c -O"]
wget = go "wget" $ headerparams ++ quietopt "-q" ++ [Params "--clobber -c -O"]
{- Uses the -# progress display, because the normal
- one is very confusing when resuming, showing
- the remainder to download as the whole file,

30
debian/changelog vendored
View file

@ -1,3 +1,33 @@
git-annex (4.20130827) unstable; urgency=low
* Youtube support! (And 53 other video hosts). When quvi is installed,
git-annex addurl automatically uses it to detect when an page is
a video, and downloads the video file.
* web special remote: Also support using quvi, for getting files,
or checking if files exist in the web.
* unused: Is now a minimum of 30 times faster, and typically many
more times than that (when a repository has several branches).
(Thanks, guilhem for the patch.)
* unused: Fix bugs in two edge cases involving manually staged changes.
(Thanks, guilhem for the patch.)
* Android: Fix bug in terminal app that caused it to spin using much
CPU and battery. This problem was introduced in version 4.20130601.
* sync, merge: Bug fix: Don't try to merge into master when in a bare repo.
* import: Add options to control handling of duplicate files:
--duplicate, --deduplicate, and --clean-duplicates
* mirror: New command, makes two repositories contain the same set of files.
* Set --clobber when running wget to ensure resuming works properly.
* Unescape characters in 'file://...' URIs. (Thanks, guilhem for the patch.)
* Better error message when trying to use a git remote that has annex.ignore
set.
* Fix bug that caused typechanged symlinks to be assumed to be unlocked
files, so they were added to the annex by the pre-commit hook.
* Debian: Run the builtin test suite as an autopkgtest.
* Debian: Recommend ssh-askpass, which ssh will use when the assistant
is run w/o a tty. Closes: #719832
-- Joey Hess <joeyh@debian.org> Tue, 27 Aug 2013 11:03:00 -0400
git-annex (4.20130815~bpo70+1) wheezy-backports; urgency=low
* assistant, watcher: .gitignore files and other git ignores are now

4
debian/control vendored
View file

@ -20,6 +20,7 @@ Build-Depends:
libghc-dlist-dev,
libghc-uuid-dev,
libghc-json-dev,
libghc-aeson-dev,
libghc-ifelse-dev,
libghc-bloomfilter-dev,
libghc-edit-distance-dev,
@ -59,6 +60,7 @@ Maintainer: Joey Hess <joeyh@debian.org>
Standards-Version: 3.9.4
Vcs-Git: git://git.kitenet.net/git-annex
Homepage: http://git-annex.branchable.com/
XS-Testsuite: autopkgtest
Package: git-annex
Architecture: any
@ -69,7 +71,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends},
wget,
curl,
openssh-client (>= 1:5.6p1)
Recommends: lsof, gnupg, bind9-host
Recommends: lsof, gnupg, bind9-host, ssh-askpass, quvi
Suggests: graphviz, bup, libnss-mdns
Description: manage files with git, without checking their contents into git
git-annex allows managing files with git, without checking the file

4
debian/tests/basics vendored Normal file
View file

@ -0,0 +1,4 @@
#!/bin/sh
testdir="$(mktemp -d)"
cd "$testdir"
exec git-annex test

4
debian/tests/control vendored Normal file
View file

@ -0,0 +1,4 @@
Tests: basics
Depends: @, git, rsync, gnupg
Restrictions: allow-stderr

View file

@ -14,7 +14,7 @@ can use different ones for different files.
lead to better deduplication but can confuse some programs.
* `WORM` ("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
This is the least expensive backend, recommended for really large
files or slow systems.
* `SHA512`, `SHA512E` -- Best currently available hash, for the very paranoid.
* `SHA1`, `SHA1E` -- Smaller hash than `SHA256` for those who want a checksum

View file

@ -0,0 +1,17 @@
git-annex tends to preserve files that are added to an annex with
a mode such as 400. (Happens to me sometimes with email attachments.)
As these files are rsynced around, and end up on eg, a
publically visible repo with a webserver frontend, or a repo that is
acessible to a whole group of users, they will not be readable.
I think it would make sense for git-annex to normalize file permissions
when adding them. Of course, there's some tension here with generally
storing file metadata when possible. Perhaps the normalization should only
ensure that group and other have read access?
(Security: We can assume that a repo that is not intended to be public is
in a 700 directory. And since git-annex cannot preserve file modes when
files transit through a special remote, using modes to limit access to
individual files is not wise.)
--[[Joey]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 3"
date="2013-08-24T19:27:57Z"
content="""
Leonardo, you made me boot up my windows machine just to check if cygwin git truncated files at the colon. It does not.
AFAIK, Cygwin transliterates colons to another unicode character or something like that. I would be highly surprised if the Cygwin people consider this feature to be a bug.
Since you need Cygwin to build git-annex on Windows anyway (though not to run it!), this remains WONTFIX.
"""]]

View file

@ -0,0 +1,158 @@
### Please describe the problem.
The android app won't start on Cyanogenmod 10.2. Not sure if this is cyanogenmod specific or if it is because the underlying android is now version 4.3
### What steps will reproduce the problem?
Install the apk and start the program
### What version of git-annex are you using? On what operating system?
A 7 day old nightly as of this post(can't get specific number since it won't run)
### Please provide any additional information below.
Tested this on both a samsung galaxy S and a samsung galaxy note 2. With different nightlies of cyanogenmod 10.2
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
Falling back to hardcoded app location; cannot find expected files in /data/app-lib
git annex webapp
u0_a115@android:/sdcard/git-annex.home $ git annex webapp
CANNOT LINK EXECUTABLE: git-annex invalid R_ARM_COPY relocation against DT_SYMBOLIC shared library libc.so (built with -Bsymbolic?)
1|u0_a115@android:/sdcard/git-annex.home $
---
cat git-annex-install.log
Installation starting to /data/data/ga.androidterm
34c88243533e9b0a725ebe33533d990e628dc44b
installing busybox
installing git-annex
installing git-shell
installing git-upload-pack
installing git
installing gpg
installing rsync
installing ssh
installing ssh-keygen
linking ./libexec/git-core/git-config to git
linking ./libexec/git-core/git-fetch to git
linking ./libexec/git-core/git-fsck to git
linking ./libexec/git-core/git-unpack-file to git
linking ./libexec/git-core/git-get-tar-commit-id to git
linking ./libexec/git-core/git-fmt-merge-msg to git
linking ./libexec/git-core/git-push to git
linking ./libexec/git-core/git-for-each-ref to git
linking ./libexec/git-core/git-pack-redundant to git
linking ./libexec/git-core/git-mv to git
linking ./libexec/git-core/git-ls-remote to git
linking ./libexec/git-core/git-prune-packed to git
linking ./libexec/git-core/git-apply to git
linking ./libexec/git-core/git-check-ignore to git
linking ./libexec/git-core/git-log to git
linking ./libexec/git-core/git-cherry-pick to git
linking ./libexec/git-core/git-diff-files to git
linking ./libexec/git-core/git-commit-tree to git
linking ./libexec/git-core/git-index-pack to git
linking ./libexec/git-core/git-reflog to git
linking ./libexec/git-core/git-merge-index to git
linking ./libexec/git-core/git-column to git
linking ./libexec/git-core/git-checkout-index to git
linking ./libexec/git-core/git-diff-index to git
linking ./libexec/git-core/git-count-objects to git
linking ./libexec/git-core/git-fast-export to git
linking ./libexec/git-core/git-fetch-pack to git
linking ./libexec/git-core/git-merge-file to git
linking ./libexec/git-core/git-init to git
linking ./libexec/git-core/git-remote to git
linking ./libexec/git-core/git-init-db to git
linking ./libexec/git-core/git-ls-tree to git
linking ./libexec/git-core/git-merge-subtree to git
linking ./libexec/git-core/git-rev-parse to git
linking ./libexec/git-core/git-bundle to git
linking ./libexec/git-core/git-prune to git
linking ./libexec/git-core/git-peek-remote to git
linking ./libexec/git-core/git-tar-tree to git
linking ./libexec/git-core/git-describe to git
linking ./libexec/git-core/git-update-index to git
linking ./libexec/git-core/git to git
linking ./libexec/git-core/git-revert to git
linking ./libexec/git-core/git-show-ref to git
linking ./libexec/git-core/git-upload-archive to git
linking ./libexec/git-core/git-add to git
linking ./libexec/git-core/git-verify-tag to git
linking ./libexec/git-core/git-format-patch to git
linking ./libexec/git-core/git-show-branch to git
linking ./libexec/git-core/git-remote-fd to git
linking ./libexec/git-core/git-pack-refs to git
linking ./libexec/git-core/git-replace to git
linking ./libexec/git-core/git-pack-objects to git
linking ./libexec/git-core/git-notes to git
linking ./libexec/git-core/git-tag to git
linking ./libexec/git-core/git-var to git
linking ./libexec/git-core/git-help to git
linking ./libexec/git-core/git-gc to git
linking ./libexec/git-core/git-check-ref-format to git
linking ./libexec/git-core/git-shortlog to git
linking ./libexec/git-core/git-stage to git
linking ./libexec/git-core/git-mktree to git
linking ./libexec/git-core/git-merge-recursive to git
linking ./libexec/git-core/git-grep to git
linking ./libexec/git-core/git-clean to git
linking ./libexec/git-core/git-merge-base to git
linking ./libexec/git-core/git-repo-config to git
linking ./libexec/git-core/git-hash-object to git
linking ./libexec/git-core/git-read-tree to git
linking ./libexec/git-core/git-rm to git
linking ./libexec/git-core/git-fsck-objects to git
linking ./libexec/git-core/git-ls-files to git
linking ./libexec/git-core/git-mktag to git
linking ./libexec/git-core/git-stripspace to git
linking ./libexec/git-core/git-mailsplit to git
linking ./libexec/git-core/git-diff-tree to git
linking ./libexec/git-core/git-merge-ours to git
linking ./libexec/git-core/git-cherry to git
linking ./libexec/git-core/git-checkout to git
linking ./libexec/git-core/git-rev-list to git
linking ./libexec/git-core/git-write-tree to git
linking ./libexec/git-core/git-update-ref to git
linking ./libexec/git-core/git-blame to git
linking ./libexec/git-core/git-archive to git
linking ./libexec/git-core/git-update-server-info to git
linking ./libexec/git-core/git-merge-tree to git
linking ./libexec/git-core/git-show to git
linking ./libexec/git-core/git-remote-ext to git
linking ./libexec/git-core/git-merge to git
linking ./libexec/git-core/git-name-rev to git
linking ./libexec/git-core/git-bisect--helper to git
linking ./libexec/git-core/git-clone to git
linking ./libexec/git-core/git-symbolic-ref to git
linking ./libexec/git-core/git-send-pack to git
linking ./libexec/git-core/git-commit to git
linking ./libexec/git-core/git-mailinfo to git
linking ./libexec/git-core/git-credential to git
linking ./libexec/git-core/git-diff to git
linking ./libexec/git-core/git-patch-id to git
linking ./libexec/git-core/git-rerere to git
linking ./libexec/git-core/git-branch to git
linking ./libexec/git-core/git-reset to git
linking ./libexec/git-core/git-receive-pack to git
linking ./libexec/git-core/git-verify-pack to git
linking ./libexec/git-core/git-unpack-objects to git
linking ./libexec/git-core/git-check-attr to git
linking ./libexec/git-core/git-whatchanged to git
linking ./libexec/git-core/git-status to git
linking ./libexec/git-core/git-cat-file to git
linking ./libexec/git-core/git-annotate to git
linking ./bin/git-upload-archive to git
linking ./bin/git-receive-pack to git
linking ./libexec/git-core/git-shell to git-shell
linking ./libexec/git-core/git-upload-pack to git-upload-pack
Installation complete
# End of transcript or log.
"""]]
> [[dup|done]] of [[git-annex_broken_on_Android_4.3]].--[[Joey]]

View file

@ -31,3 +31,5 @@ Linux nas 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:19:35 UTC 2013 i686 i686
# End of transcript or log.
"""]]
> This is a different effect of the same bug in [[Hangs on creating repository when using --listen]]. Closing as [[dup|done]] --[[Joey]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 1"
date="2013-08-24T18:49:18Z"
content="""
git-annex assumes that it can make a stable symlink from a file in the working tree to a file in the .git directory. There are several ways to break this. One, as noted, is sometimes using a repository as a submodule, and sometimes not. Another would be to play around with `GIT_DIR`.
I don't see a way git-annex can support those use cases, at least in indirect mode.
It does seem like, in direct mode, it should just work. git-annex will commit various symlinks to git, but these symlinks will never be followed to get at the content of a file, since direct mode arranges for the content to be directly present in the working tree.
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="konubinix"
ip="82.243.233.186"
subject="Thanks"
date="2013-08-26T06:25:19Z"
content="""
Thanks for the reply.
Also thanks for this great tool (Though I am not sure I truelly realize the true power of git annex yet).
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 2"
date="2013-08-24T18:52:11Z"
content="""
This also affects creating a second repository in the webapp, not just the repository creation at first startup.
"""]]

View file

@ -0,0 +1,52 @@
### Please describe the problem.
(small) identical files fail to unannex, leaving broken symlinks, except for the first copy.
### What steps will reproduce the problem?
* Have multiple identical files. For example, run this, which creates four 6-byte files:
> echo Hello>file1.txt && cp file1.txt file2.txt && cp file1.txt file3.txt && cp file1.txt file4.txt
* Run this (git init needs credentials to have been specified though)
> git init && git-annex init && git-annex add
Now there are 4 symlinks, pointing to the same object:
> lrwxrwxrwx 1 186 Aug 16 15:54 file1.txt -> .git/annex/objects/31/XV/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt
* Optionally run "git commit -a". It doesn't affect the outcome.
* Run git-annex unannex
> $ git annex unannex
> unannex file1.txt ok
> (Recording state in git...)
> $
Now file1.txt is a normal 6-byte file again, but 2, 3, and 4 are broken symlinks:
-rw-r----- 1 6 Aug 16 15:54 file1.txt
lrwxrwxrwx 1 186 Aug 16 15:54 file2.txt -> .git/annex/objects/31/XV/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt
lrwxrwxrwx 1 186 Aug 16 15:54 file3.txt -> .git/annex/objects/31/XV/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt
lrwxrwxrwx 1 186 Aug 16 15:54 file4.txt -> .git/annex/objects/31/XV/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt/SHA256E-s6--66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18.txt
$ git-annex fsck
fsck file2.txt
** No known copies exist of file2.txt
failed
fsck file3.txt
** No known copies exist of file3.txt
failed
fsck file4.txt
** No known copies exist of file4.txt
failed
git-annex: fsck: 3 failed
### What version of git-annex are you using? On what operating system?
git-annex 4.20130802 package
on Debian GNU/Linux jessie/sid (testing), amd64.

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="http://openid.yandex.ru/deletesoftware/"
nickname="deletesoftware"
subject="duplicate"
date="2013-08-16T14:52:23Z"
content="""
It's the same as these:
* [Large unannex operations result in stale symlinks and data loss](http://git-annex.branchable.com/bugs/Large_unannex_operations_result_in_stale_symlinks_and_data_loss/)
* [unannex removes object even if referred to by others](http://git-annex.branchable.com/bugs/unannex_removes_object_even_if_referred_to_by_others/)
* [annex unannex/uninit should handle copies](http://git-annex.branchable.com/bugs/annex_unannex__47__uninit_should_handle_copies/)
and (as gernot mentioned) according to those, has a workaround of \"git annex unannex --fast\". Of course, it's not convenient to need to find a workaround, and to notice a potential dataloss issue…
"""]]

View file

@ -59,4 +59,6 @@ My .gitconfig is as follows:
"""]]
> Closing this because all autobuilders have been upgraded
> to a more recent version of git. [[done]] --[[Joey]]
> to a more recent version of git. done --[[Joey]]
>> Reopened, because the Linux autobuilds have been downgraded to Debian
>> stable and have this problem again. --[[Joey]]

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawmTNrhkVQ26GBLaLD5-zNuEiR8syTj4mI8"
nickname="Juan"
subject="Still happening in the linux autobuild (08/22/2013)"
date="2013-08-23T02:04:42Z"
content="""
I've seen that git-annex for linux is still coming with git 1.7, which causes problems with my installed git (1.8.1.2).
Wasn't that corrected in autobuilds?
Thanks in advance.
Keep up the good work.
Regards,
Juan
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 4"
date="2013-08-23T17:41:32Z"
content="""
It was done for the autobuilds, but then I switched them to build using Debian stable, which still has git 1.7, and there is not currently a backport of a newer git to stable for me to use.
"""]]

View file

@ -0,0 +1,17 @@
### Please describe the problem.
While dropping 19 unused files from an annex, I got this error:
error: invalid object 100644 c873416e78db4dd94b6ab40470d6fe99b2ecb8bd for '002/0a6/SHA256E-s427690--03aeabcde841b66168b72de80098d74e047f3ffc832d4bbefa1f2f70ee6c92f8.jpg.log'
fatal: git-write-tree: error building trees
git-annex: failed to read sha from git write-tree
I've actually seen this before, a few months ago.
### What steps will reproduce the problem?
I have no idea, but once it happens I can't interact with unused files anymore. Also, `git annex fsck` now reports this same problem as well.
### What version of git-annex are you using? On what operating system?
git-annex version: 4.20130815, OS X 10.8.4

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="https://me.yahoo.com/a/2grhJvAC049fJnvALDXek.6MRZMTlg--#eec89"
nickname="John"
subject="comment 1"
date="2013-08-24T05:01:37Z"
content="""
The following command restored some sanity:
find .git/annex/ -name '*.log' -delete
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="arand"
ip="130.243.226.21"
subject="comment 2"
date="2013-08-24T11:40:54Z"
content="""
If I recall, such files being stored in the annex object store is a result of using direct mode?
"""]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 3"
date="2013-08-24T16:04:21Z"
content="""
Unfortunately, the git error message you pasted suggests very strongly that your git repository has gotten corrupted. You can probably verify that by running `git annex fsck`. Assuming it is corrupted, the best thing to do is to make a new clone and move .git/annex and .git/config over from the corrupted repository to it, and finally run `git annex fsck`
You then seem to have some reason decided to go delete git-annex's .git/annex/journal/*.log files, which are just files that have not yet been committed to the git-annex branch. The only reason this \"restored some sanity\" is that git-annex was trying to commit that data to git, and failing because your git repository is corrupted.
(This has nothing at all to do with direct mode.)
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://me.yahoo.com/a/2grhJvAC049fJnvALDXek.6MRZMTlg--#eec89"
nickname="John"
subject="comment 4"
date="2013-08-25T05:27:57Z"
content="""
Do you have any thoughts on why it may have gotten corrupted, or why it seems to happen so commonly with large git-annex repositories? I've seen this exact same sort of error while processing log files maybe 5 or 6 times now.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://me.yahoo.com/a/2grhJvAC049fJnvALDXek.6MRZMTlg--#eec89"
nickname="John"
subject="comment 5"
date="2013-08-25T05:50:35Z"
content="""
I meant to say, in 5 or 6 different repositories. Further, when I see it happen the next time, how do you recommend I track down the real problem, instead of always just cloning and starting over?
"""]]

View file

@ -41,5 +41,5 @@ I'm interested in your thoughts.
Best,
Laszlo
[[!tag /design/assistant moreinfo]]
[[!tag /design/assistant]]
[[!meta title="assistant can try to add too many files at once in batch add mode"]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"
nickname="Michael"
subject="comment 10"
date="2013-08-26T18:33:40Z"
content="""
@Joey: it was a \"pretty large\" transfer, several hundred gigabytes in perhaps ~100000 files. The copying was going to a GPG-encrypted directory remote.
The error only happened once or twice so far. Point taken about find in /proc; I'll do that if it happens next time.
"""]]

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 9"
date="2013-08-24T19:10:21Z"
content="""
@Michael how large a copy are you doing? And what kind of remote are you copying the files to?
It would be helpful if you could be more specific about something I could do to reproduce the problem. Without a test case, I am unlikely to fix the bug. With a test case, I'd be surprised if it took long to fix it.
If you have a process running that is experiencing the problem, you can also narrow it down a *lot* by looking at what these leaking pipe file descriptors are pipes to. For example, if you have:
lr-x------ 1 michael michael 64 Aug 10 20:14 895 -> pipe:[2251602]
You can run `find /proc/ -ls 2251602` and find the process at other end of the pipe, and look its pid up in ps to see what command it is.
"""]]

View file

@ -0,0 +1,27 @@
Using `git-annex version: 4.20130802` on Debian unstable, when trying to add the feed at <http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml>, I get:
[[!format sh """
importfeed http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml
--2013-08-16 09:14:13-- http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml
Auflösen des Hostnamen »www.ndr.de (www.ndr.de)«... 212.201.100.171, 212.201.100.187
Verbindungsaufbau zu www.ndr.de (www.ndr.de)|212.201.100.171|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 61809 (60K) [application/xml]
In »»/tmp/feed4404«« speichern.
100%[============================================>] 61.809 --.-K/s in 0,03s
2013-08-16 09:14:13 (2,20 MB/s) - »»/tmp/feed4404«« gespeichert [61809/61809]
failed
git-annex: importfeed: 1 failed
"""]]
(Oh, and using `format` with nono-ASCII seems to break down., at least in the preview.)
> I'm going to close this since I've narrowed it down to a bug in the
> upstream feed library. [[done]]. Of course, if we get a lot of reports of
> the library not working, I may need to revisit using it, but for now this
> seems an isolated problem. Also, I tried validating the feed, and it is
> not 100% valid, and one of the validity problems is a missing enclosure
> length. --[[Joey]]

View file

@ -0,0 +1,45 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 1"
date="2013-08-23T18:09:27Z"
content="""
When I try this, without the German translation, I get:
<pre>
joey@gnu:~/tmp/newrepo>git annex importfeed 'http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml'
(checking known urls...)
importfeed http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml
--2013-08-23 13:58:19-- http://www.ndr.de/fernsehen/sendungen/extra_3/videos/zum_mitnehmen/extradrei196_version-hq.xml
Resolving www.ndr.de (www.ndr.de)... 23.73.180.154, 23.73.180.115
Connecting to www.ndr.de (www.ndr.de)|23.73.180.154|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 61865 (60K) [application/xml]
Saving to: /home/joey/tmp/feed31120
100%[======================================>] 61,865 151KB/s in 0.4s
2013-08-23 13:58:25 (151 KB/s) - /home/joey/tmp/feed31120 saved [61865/61865]
warning: bad feed content
</pre>
It seems you left out the last line of the error.
The feed library seems to fail to find any of the enclosures in this feed, although it is able to parse it as far as finding the individual items in the feed:
<pre>
Prelude Text.Feed.Query Text.Feed.Import> f <- parseFeedFromFile \"extradrei196_version-hq.xml\"
Prelude Text.Feed.Query Text.Feed.Import> map getItemEnclosure $ feedItems f
[Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing]
</pre>
The feed *appears* to contain enclosures, for example:
<pre>
<enclosure url=\"http://media.ndr.de/progressive/2013/0821/TV-20130821-2329-5942.hq.mp4\" type=\"video/mp4\"/>
</pre>
It may not be well-formed, or the feed library may have a bug. Assuming the latter, I have filed a bug report on the feed library: https://github.com/sof/feed/issues/3
"""]]

View file

@ -30,3 +30,6 @@ I'm using debian testing (jessie) on a i386 machine.
### Please provide any additional information below.
I don't use git annex assistant nor the webapp
> Tested and only file:// and not other urls have this problem.
> guilhem provided a fix. [[done]] --[[Joey]]

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="guilhem"
ip="129.16.20.209"
subject="comment 4"
date="2013-08-16T07:14:12Z"
content="""
The [[OpenPGP standard|https://tools.ietf.org/html/rfc4880]] specifies that revoked keys/subkeys \"are not to be used\". AFIK GnuPG, as any RFC-compliant implementation, will not let you encrypt to a revoked key no matter what. An extremely dirty workaround is to set up your system clock prior to the revocation date (but that might put your whole system at risk since other applications may rely synced clocks to work properly).
That said, what you really wanted to do was to revoke access to K1 and add K2 instead. That seems to be a perfectly valid use-case, and it shouldn't be hard to add to git-annex; stay tunned ;-)
Tobias: Not sure what you meant by \"revoke access to my annex\", but if you were thinking of the key owner, note that with the current [[encryption design|http://git-annex.branchable.com/design/encryption]], since that person may simply grab from the git repo and then at any time decrypt the passphrase for the symmetric cipher, it makes little sense to revoke access for that person unless you change that passphrase, and reencrypt all annexed files on the remote, which of course needs to be done locally for the encryption to make sense at all.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://www.rfc1149.net/"
nickname="Sam"
subject="comment 5"
date="2013-08-19T11:35:52Z"
content="""
Indeed, removing the revoked key and putting the new one would be acceptable, there is no reason to keep the revoked one around.
"""]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="guilhem"
ip="129.16.20.209"
subject="comment 6"
date="2013-08-19T13:22:59Z"
content="""
All right, what would be a nice user interface, compatible with the current commands? I was thinking of something along the lines of `git annex enableremote +encryption=newKey -encryption=oldKey`, with an alias `+encryption=encryption` to be backward compatible. It's probably not optimal though, feel free to comment :-)
Of course, `git-annex` should ensure that at any point in time the passphrase is always encrypted using an OpenPGP key. (Otherwise it might be stored clear in the git repository, which would void the encryption.) Also, anyone who can decrypt the passphrase can revoke all existing keys and reencrypt it using another key; this not really a big deal since the cipher is version-controlled anyway, so loosing access to the repo is unlikely.
By the way, since we're about to amend the arguments for `enableremote`, it'd be nice to take advantage of the situation to allow pure asymmetric encryption. I propose `git annex initremote ... encryption=myKey crypto={none,hybrid,pubkey}` to use respectively no-encryption, an asymmetrically encrypted passphrase (the current design, default), and OpenPGP keys only.
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="guilhem"
ip="129.16.20.209"
subject="comment 7"
date="2013-08-19T16:08:49Z"
content="""
On second thought, I think it makes more sense to have something like `git annex initremote ... encryption={none,shared,hybrid,pubkey} keyid=whatever` and `git annex enableremote ... [+keyid=newkey] [-keyid=oldkey]`, where `keyid` can only be used when `encryption` is either `hybrid` (default) or `pubkey`.
This would break compatibility with the current interpretation of `encryption`, but I believe it's not so invasive: People are not creating new remotes every day, and an error message could clarify the new behavior. It's also clearer, since key IDs can be added and deleted at will, whereas the encryption scheme cannot.
"""]]

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 8"
date="2013-08-22T17:05:49Z"
content="""
Note that the assistant generates initremote parameters so code there also needs to be changed if the syntax changes.
I think I am ok with changing the syntax. However, it seems that `encryption=-oldkey encryption=newkey` could be used to remove the old revoked key and add a new one. Using `-keyid` as a parameter to initremote is a bit tricky since git-annex's regular option parser would see it, before the parameter could get to initremote. (Unless -keyid was defined as a regular option specific to initremote.) OR, git-annex could just try to detect when a key is revoked and automatically remove it when a new encryption key is specified.
Hmm, it would be possible to have it just notice, when adding a new key, if one of the existing keys is revoked, and
remove the revoked key automatically.
The above doesn't deal with the case of wanting to add pure asymmetric encryption. It seems to me that from a user's point of view, what they really need to know about asymmetric encryption is that they can't easily give additional keyids access after the fact (without reencrypting and reuploading everything). So I think it would be good if the syntax made that obvious. Perhaps `encryptiononly=key`
"""]]

View file

@ -0,0 +1,42 @@
[[!comment format=mdwn
username="guilhem"
ip="129.16.20.209"
subject="comment 9"
date="2013-08-22T18:42:28Z"
content="""
Hehe, I ran into the option parser issue when implementing that change
;-) So I moved to `git annex enableremote ... [keyid+=newkey]
[keyid-=oldkey]` (where `+` is optional, for consistency) which doesn't
prevent users from specifying a key by something starting with a sign.
While it's certainly possible to tell git-annex to manage the authorized
keys itself, users may have other reasons to remove a key so I'm not
sure it's a good idea. Also, what if someone forgets to add his/her new
key after revocation (it's still possible to decrypt after all)? If
another person updates the keyring afterwards, the first user will be
denied further access, and will have to retrieve and reencrypt the
\"cipher\" manually, which is not so trivial.
I understand that asymmetric encryption needs special care, but Sam's
use case could be reproduced with that scheme I believe. For instance a
user may superseed and revoke his/her old key; then new files would be
uploaded with the new one, but as long as the old key is not
compromised, I don't see why s/he should reupload everything instead of
using the old key when pulling from the remote. Of course one may argue
that the key shouldn't be revoked at the first place, but if it's used
for other purposes (e.g., it's publicly available on a key server) it's
good practice to revoke it IMHO.
As for the removal of keys with pure asymmetric encryption, it is just
required I think: Otherwise revoking a key would prevent any further
content to be encrypted. There I can't see any problem with git-annex
managing the keyring itself (beside the extra code to write :-P).
All in all if we are to allow deletion/addition of keyIDs (and I think
we should!), I think it should be done for both `hybrid` and `pubkey`
schemes. Do you really want another syntax? I'd say clarify the manage
(plus maybe a warning when running the CLI) is enough, but true it's
easy to shoot oneself in the foot there...
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="bad bug report title 101"
date="2013-08-24T19:17:29Z"
content="""
I don't understand why you think the problem has something to do with Windows drive letters. There are no Windows drive letters in the symlinks you show. The only place I see any Windows drive letter is in the descripton of the remote that `git annex get` displays when it fails to get the file. That description is purely informative, it's not a path that git-annex is trying to use.
I'd suggest that you run `git annex get --debug` to see if it is doing anything obviously wrong. The mostly likely culprit is your SMB setup, which I am not going to be able to replicate.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawlzWwnBfgJrkhPQakBo6DbPXutJIVDHkj0"
nickname="Adam"
subject="comment 3"
date="2013-08-26T06:56:33Z"
content="""
You're correct. I can see in .git/config that the remote references z:\ which of course will break on the Linux side. Maybe this is a case of the error messages not quite telling me the right thing?
"""]]

View file

@ -79,3 +79,9 @@ What version of git-annex are you using? On what operating system?
git-annex version: 3.20130216
On current Debian sid/experimental
> [[Done]], thanks to guilhem. We ended up using a different algorythm
> which is faster yet, basically it now does a diff-index between the
> index and each branch for its second stage bloom filter.
> Speedup is 30x with 0 (or 1?) branch, and then massive for each
> additional branch. --[[Joey]]

View file

@ -0,0 +1,28 @@
### Please describe the problem.
I installed git-annex on my android device (Nook HD+, with Cyanogenmod 10.1 installed) for the first time today and was excited to get it working. However, I noticed the device warming alarmingly, and, after installing a CPU usage monitor, it became clear that git annex was the problem, as it was hovering around 30-40% even when idle.
I tried quitting git-annex using the webapp's "Shutdown Daemon" menu option, and it seemed to shut down successfully, but the CPU monitor still showed that process present and taking up high amounts of CPU (sometimes well over 50%). I used the android app switcher and noticed that the terminal emulator for git annex was still running; I tried to quit this by using the X button and it seemed to close, but the CPU monitor still showed the git-annex process consuming large amounts of CPU. Finally I had to quit the process forcefully from the monitor.
### What steps will reproduce the problem?
Install & run; observe CPU. I used a dedicated CPU monitor to stop it the first time; another time, I tried stopping it by going to Preferences, Apps, Running Applications, where it told me it had one process and one service running. I stopped the service without issue; it said the process could not be safely stopped but I stopped it anyway and that successfully stopped the app.
### What version of git-annex are you using? On what operating system?
the current (4.20130826-g46f422) version on Android.
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
(I'm not sure how to get a log out of the web app to paste here unfortunately.
# End of transcript or log.
"""]]
> [[done]]; I fixed the bug which turned out to be a stupid
> minunderstanding of how a java library worked. --[[Joey]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 10"
date="2013-08-27T01:46:36Z"
content="""
This seems to be a reversion instroduced in commit a48d340abdaf3296a2ddacd73c18adc9a13a02ef. With that backed out, I get 0% cpu usage for the terminal app. Even if I run top in the terminal, its CPU sits under 1%.
Clearly the infinite loop in that patch is running faster than expected!
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://edheil.wordpress.com/"
ip="173.162.44.162"
subject="comment 10"
date="2013-08-26T20:19:06Z"
content="""
Yeah, that would definitely explain both what I'm seeing and why you haven't been seeing it.
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://edheil.wordpress.com/"
ip="173.162.44.162"
subject="comment 1"
date="2013-08-26T18:34:44Z"
content="""
Just noticed I was using the autobuild instead of the last release version; I'll try the release version and see if that makes any difference.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 2"
date="2013-08-26T18:42:02Z"
content="""
If you shut down the daemon, it seems to me that the process that was still running would probably be `git annex transferkey` which runs in its own process to upload/download file contents. I normally see 0% to 1% cpu use from git-annex when it is running on my android tablet. It's possible that the 1% use is due to it waking up every second, which got fixed in 9dc2373977d583b4c4aa6cf0555dc97309f89991.
"""]]

View file

@ -0,0 +1,11 @@
[[!comment format=mdwn
username="http://edheil.wordpress.com/"
ip="173.162.44.162"
subject="comment 3"
date="2013-08-26T19:03:45Z"
content="""
OK, so I might have a rogue transferkey process going on, but one which starts over again when I restart the app?
I've set this all up purely as a \"can I do this\" experiment right now; there is literally zero important data there to lose, either on the tablet or on the laptop, so maybe I could just write this off as a bad result of my first few shaky attempts to get the device paired with my laptop, wipe out both annexes, and start completely from scratch.
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://edheil.wordpress.com/"
ip="173.162.44.162"
subject="comment 6"
date="2013-08-26T19:38:12Z"
content="""
a final note -- according to the process monitor, the process eating CPU is \"ga.androidterm\". There are also a small swarm of about 6 git processes none of which are consuming much CPU time at all.
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 7"
date="2013-08-26T20:00:39Z"
content="""
It's certianly possible that the terminal app eats cpu for some reason even when sitting idle. It's hard for me to tell since I've been measuring cpu use by running top inside that terminal, which necessarily seems to use a lot of the CPU just to draw the screen.
If it's the terminal at fault, it would continue after you shutdown the git-annex daemon, since that doesn't close the terminal.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="oh yeah, i can run top in adb.."
date="2013-08-26T20:14:13Z"
content="""
So, I can tell that on my tablet, the terminal app is using 82% cpu while idle.
"""]]

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://edheil.wordpress.com/"
ip="173.162.44.162"
subject="comment 9"
date="2013-08-26T20:49:34Z"
content="""
(removed my earlier comments with debug info, since it wasn't relevant and I'd just as soon not display my gmail id and home machine's address on the web if I don't need to)
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 9"
date="2013-08-26T20:16:05Z"
content="""
Strace doesn't show it doing anything. I suppose I should try building the terminal without the several patches I added to it to support git-annex to see if I somehow made it use all this cpu..
"""]]

View file

@ -25,3 +25,6 @@ git-annex version: 4.20130521 on debian linux 7.1.
That log is empty.
# End of transcript or log.
"""]]
> I added ssh-askpass as a recommends, so I suppose
> I can close this. [[done]] --[[Joey]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawliqfHEW134uawIUPwyKiyOdoF-oI5TxnQ"
nickname="Ethan"
subject="Doh. /usr/bin/ssh-askpass needs to be on *local* machine."
date="2013-08-15T20:13:31Z"
content="""
My mistake; the problem was the I was missing /usr/bin/ssh-askpass on my local machine, not the rsync.net host.
I still think this is a bug. I'm on a debian machine and installed git-annex from its debian package, so seems like the ssh-askpass package should be listed as a dependency. But that's a debian packaging problem, not a git-annex bug per se, so I'll go file it elsewhere.
"""]]

View file

@ -0,0 +1,135 @@
[[!toc]]
### Please describe the problem.
I get this error when trying to copy annexed files from my laptop to the bare repository on my server:
anarcat@angela:ohm2013$ git annex copy -t origin .
git-annex: cannot determine uuid for origin
### What steps will reproduce the problem?
Here's my setup:
* `angela`: regular git repository on my laptop (`angela`) where i ran `git annex init` and `git annex add`ed 4 big files (in `~anarcat/presentations/ohm2013`)
* `marcos-bare`: a bare git repository where i ran `git annex init` on a different server (`marcos`) (in `~anarcat/repos/presentations/ohm2013.git`)
* `marcos-checkout`: a checkout of the above repository on marcos (in `~anarcat/presentations/ohm2013`)
I ran `git pull/push` everwhere in there, and still get the error.
Remotes on all repos:
* `angela`: `origin anarcat.ath.cx:repos/presentations/ohm2013.git`
* `marcos-bare`: no remote
* `marcos-checkout`: `origin /home/anarcat/repos/presentations/ohm2013.git`
Note that file added with `git annex addurl` on `marcos-checkout` properly gets propagated on `angela` once i do `git annex get` there.
### What version of git-annex are you using? On what operating system?
`angela` runs:
[[!format txt """
git-annex version: 4.20130730-ge59a8c6
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS
local repository version: 3
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 0 1 2
"""]]
I was able to reproduce with the backport version too.
I compiled it by hand from git.
`marcos` runs:
[[!format txt """
git-annex version: 3.20120629
local repository version: unknown
default repository version: 3
supported repository versions: 3
upgrade supported from repository versions: 0 1 2
"""]]
### Please provide any additional information below.
In addition, there's this error on `marcos-bare`:
[[!format sh """
anarcat@marcos:ohm2013.git$ git annex status -d
supported backends: SHA256 SHA1 SHA512 SHA224 SHA384 SHA256E SHA1E SHA512E SHA224E SHA384E WORM URL
supported remote types: git S3 bup directory rsync web hook
trusted repositories: git ["--git-dir=/home/anarcat/repos/presentations/ohm2013.git","show-ref","git-annex"]
git ["--git-dir=/home/anarcat/repos/presentations/ohm2013.git","show-ref","--hash","refs/heads/git-annex"]
git ["--git-dir=/home/anarcat/repos/presentations/ohm2013.git","log","refs/heads/git-annex..6063e958c02259a39b87d0f1dc44c9272c52df3f","--oneline","-n1"]
git ["--git-dir=/home/anarcat/repos/presentations/ohm2013.git","cat-file","--batch"]
0
semitrusted repositories: 4
00000000-0000-0000-0000-000000000001 -- web
5868f840-02e7-11e3-94e9-9b3701bd28bb -- marcos-checkout
aafdd242-02e7-11e3-bb6a-6f16a5c6103e -- here (marcos-bare)
befc3057-d23d-4312-843a-0645e93107d8 -- angela
untrusted repositories: 0
dead repositories: 0
available local disk space: 14 gigabytes (+1 megabyte reserved)
local annex keys: 0
local annex size: 0 bytes
known annex keys: git ["--git-dir=/home/anarcat/repos/presentations/ohm2013.git","ls-files","--cached","-z","--","/home/anarcat/repos/presentations/ohm2013.git"]
fatal: '/home/anarcat/repos/presentations/ohm2013.git' is outside repository
0
known annex size: 0 bytes
bloom filter size: 16 mebibytes (0% full)
backend usage:
"""]]
### Workaround!
I found that I could succesfully push to the non-bare repo, like this:
[[!format txt """
anarcat@angela:ohm2013$ git remote add marcos-checkout ssh://anarcat.ath.cx/~/presentations/ohm2013
anarcat@angela:ohm2013$ git fetch marcos-checkout
From ssh://anarcat.ath.cx/~/presentations/ohm2013
* [new branch] git-annex -> marcos-checkout/git-annex
* [new branch] master -> marcos-checkout/master
anarcat@angela:ohm2013$ git annex copy AlerteRouge.webm --to marcos-checkout
copy AlerteRouge.webm (checking marcos-checkout...) (to marcos-checkout...)
SHA256E-s138903105--a69db8d4c3835b03bdb08cb1cccfde5c76f586f934d63283694e7101b25352a8.webm
[...]
"""]]
It seems that git-annex doesn't like bare repos at all...
### Fix
It seems that my problem was specifically related to [[bare repositories]], which are not well supported historically. There has been other reports of problems in the past, which I missed in my search because symptoms were different:
* [[bugs/bare git repos]]
* [[forum/get and copy with bare repositories]]
Yet while I was able to do `git annex get --all` *from* the `marcos-bare` repository, I still get the original error message while trying to `git annex copy -t marcos-bare`, which is pretty annoying considering the original files are on my laptop, which is not publicly accessible. So I basically need to add the `marcos-checkout` as a remote, copy there, then get from the bare repo to make this work, which is a rather convoluted way of doing things. :)
It seems to me a proper fix would be to be able to `git annex copy --to marcos-bare`. Thanks!
Update: it seems te problem was that I had the following in my `.git/config`:
[remote "marcos-bare"]
url = ssh://anarcat.ath.cx/~/repos/presentations/ohm2013.git
annex-ignore = true
fetch = +refs/heads/*:refs/remotes/marcos-bare/*
I have *no* idea how that `annex-ignore` got there, but that was the root of my problem. Removing it it allowed my to do `git annex copy`. I really don't know how this happened, but I guess this is [[done]], although I believe this error message is really confusing and could be improved.
> `annex-ignore` is set automatically by git-annex if it fails to query
> the uuid of a remote the first time it tries to use it. It will say
> when it does that. The assumption
> is that a remote whose uuid cannot be looked up is a git remote
> on a server w/o git-annex support (like github) and it would be annoying
> to constantly be trying and failing to get that uuid.
>
> So, I've improved the error message. Now when annex-ignore is set
> for a remote, the error you got will mention that.
>
> (Also, there is not currently anything lacking in git-annex's support
> for bare repositories.) --[[Joey]]

View file

@ -0,0 +1,28 @@
### Please describe the problem.
Then starting git-annex on my Galaxy Nexus Android device, in the terminal window I get:
[[!format sh """
Falling back to hardcoded app location: cannot find expected files in /data/app-lib
git annex webapp
u0_a123@maguro:/sdcad/git-annex.home $ git annex webapp
CANNOT LINK EXECUTABLE: git-annex invalid R_ARM_COPY relocation against DT_SYMBOLIC shared library libc.so (built with -Bsymbolic?)
u0_a123@maguro:/sdcad/git-annex.home $
"""]]
### What steps will reproduce the problem?
Start git-annex.
### What version of git-annex are you using? On what operating system?
Nightly build and release from a few days ago - 1.0.52
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
# End of transcript or log.
"""]]
> [[dup|done]] of [[git-annex_broken_on_Android_4.3]].--[[Joey]]

View file

@ -0,0 +1,137 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawlmRpGORNKWimtzqItvwm4I6cn16vx8OvU"
nickname="hayden"
subject="Many network sockets with associated fds hanging around"
date="2013-08-15T18:00:42Z"
content="""
I see something similar in logs and after roughly 10 mins the web-apps dies.
So I think I hit the same as the above user.
Sometimes I get thread deaths and restart requests but the root cause appears to match the scenario mentioned over.
Often the webapp just hangs. But always when it hits the fd ulimit... 1024 on this system.
git-annex version is 4.20130802-g1452ac3 and I used the static-linked linux tar.gz linux-binary download.
Test setup is a from scratch assistant startup on Ubuntu 12.04.
Not exactly a clean ubuntu though, so maybe difficult to duplicate troubles at your end.
I fired up the web-app with a cleaned out config. No signs of leaks until an annex is created.
On creation of an empty annex I get fd leaks a about 1 per second after a repository is created.
Strace'ing the main process only shows 8-bytes writes (see below) at the same rate as the leak.
Sometimes the fd-leak stops before the resource limit, sometimes not.
Creating a new annex on top of an existing directory tree with many files is pretty reliable trigger though.
Startup scan finishes and fds leak away until the ulimit is hit.
hayden@orca:~/gamma$ ls /proc/26319/fd
0 10 12 14 16 18 2 21 23 25 27 29 30 32 34 36 38 4 41 43 45 6 8
1 11 13 15 17 19 20 22 24 26 28 3 31 33 35 37 39 40 42 44 5 7 9
hayden@orca:~/gamma$ ls /proc/26319/fd
0 10 12 14 16 18 2 21 23 25 27 29 30 32 34 36 38 4 41 43 45 6 8
1 11 13 15 17 19 20 22 24 26 28 3 31 33 35 37 39 40 42 44 5 7 9
hayden@orca:~/gamma$ ls /proc/26319/fd
0 10 12 14 16 18 2 21 23 25 27 29 30 32 34 36 38 4 41 43 45 5 7 9
1 11 13 15 17 19 20 22 24 26 28 3 31 33 35 37 39 40 42 44 46 6 8
hayden@orca:~/gamma$ ls /proc/26319/fd/43
/proc/26319/fd/43
hayden@orca:~/gamma$ ls -l /proc/26319/fd/43
ls -l /proc/26319/fd/43
lrwx------ 1 hayden hayden 64 Aug 14 21:10 /proc/26319/fd/43 -> socket:[568994]
hayden@orca:~/gamma$ lsof | grep 568994
git-annex 26319 hayden 43u IPv4 568994 0t0 UDP 224.0.0.251:55556
hayden@orca:~/gamma$ uname -a
Linux orca 3.2.0-25-generic #40-Ubuntu SMP Wed May 23 20:30:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
hayden@orca:~/gamma$ cat /etc/issue
Ubuntu 12.04 LTS \n \l
hayden@orca:~/gamma$ fuser 55556/udp -a
55556/udp: 4415 26319 27080 27083
hayden@orca:~/gamma$ ps aux | grep 4415
hayden 4415 0.0 0.0 66716 3036 ? S Aug12 0:03 curl -s --head -L http://127.0.0.1:38464/?auth=da9c4aba4cc2db9cf78574753f6e94d8031c6a7bdf8bfe100bde868f57b81fd751965cc9d68a9afac79f826d257a256a04ce62615a7f23cd7c925969dda1c7b8 -w %{http_code}
hayden 27458 0.0 0.0 10612 924 pts/0 S+ 21:50 0:00 grep --color=auto 4415
hayden@orca:~/gamma$ ps aux | grep 26319
hayden 26319 0.1 0.7 497188 28560 pts/5 Sl 21:09 0:04 git-annex webapp
hayden 26338 3.4 3.4 1035572 137864 pts/5 Sl 21:09 1:25 /usr/lib/firefox/firefox /tmp/webapp26319.html
hayden 27460 0.0 0.0 10612 920 pts/0 S+ 21:50 0:00 grep --color=auto 26319
hayden@orca:~/gamma$ ps aux | grep 27080
hayden 27080 0.0 0.0 16476 1288 pts/5 S 21:33 0:00 git --git-dir=/home/hayden/boo/.git --work-tree=/home/hayden/boo cat-file --batch
hayden 27462 0.0 0.0 10612 924 pts/0 S+ 21:50 0:00 grep --color=auto 27080
hayden@orca:~/gamma$ ps aux | grep 27083
hayden 27083 0.0 0.0 16476 1060 pts/5 S 21:33 0:00 git --git-dir=/home/hayden/boo/.git --work-tree=/home/hayden/boo check-attr -z --stdin annex.backend annex.numcopies --
hayden 27464 0.0 0.0 10612 920 pts/0 S+ 21:51 0:00 grep --color=auto 27083
----> has 579 open fds at this point but this number holds stable over 10 min
(copy in new tree to provoke)
(no change)
----> restart daemon in gui to provoke
(new process has open fds slowly climbing after startup scan)
straces look like this repeating every second. (clipped down)
futex(0x34f001c, FUTEX_WAIT_PRIVATE, 51, NULL) = ? ERESTARTSYS (To be restarted)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
rt_sigreturn(0x1a) = 202
futex(0x34f001c, FUTEX_WAIT_PRIVATE, 51, NULL) = ? ERESTARTSYS (To be restarted)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
rt_sigreturn(0x1a) = 202
futex(0x34f001c, FUTEX_WAIT_PRIVATE, 51, NULL) = ? ERESTARTSYS (To be restarted)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
rt_sigreturn(0x1a) = 202
futex(0x34f001c, FUTEX_WAIT_PRIVATE, 51, NULL) = ? ERESTARTSYS (To be restarted)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
write(6, \"\377\0\0\0\0\0\0\0\", 8) = 8
rt_sigreturn(0x2) = 202
futex(0x34f001c, FUTEX_WAIT_PRIVATE, 51, NULL^C <unfinished ...>
Process 29803 detached
Until after roughly 10 mins...
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1017
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1023
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1024
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1024
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1024
hayden@orca:~/boo$ ls /proc/29803/fd | wc -l
1024
hayden@orca:~/boo$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31164
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31164
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
hayden@orca:~/boo$
At this point the webapp hangs but a number of interesting crashes may occur. I've also seen the particular error in the previous users log (on a big tree).
[2013-08-14 21:56:12 CEST] main: starting assistant version 4.20130802-g1452ac3
(scanning...) [2013-08-14 21:56:12 CEST] Watcher: Performing startup scan
(started...) DaemonStatus crashed: /home/hayden/boo/.git/annex/: openTempFile: resource exhausted (Too many open files)
[2013-08-14 22:06:12 CEST] DaemonStatus: warning DaemonStatus crashed: /home/hayden/boo/.git/annex/: openTempFile: resource exhausted (Too many open files)
Is any of the above helpful? Anything else useful to kick for testing that you'd like done?
I'd guess this is something weird with my ubuntu setup that provokes this as more users would see it otherwise.
"""]]

View file

@ -0,0 +1,18 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 5"
date="2013-08-24T17:09:43Z"
content="""
Thanks for an excellent amount of debug information.
I can see what's leaking is UDP connections to 224.0.0.251. That address is used for the \"local pairing\" option in the webapp.
I was able to reproduce the problem by disabling all network interfaces except `lo`. The PairListener then failed to open a multicast listening socket. When it fails that way, it retried every second, as you noticed. And there is a socket leak in that failure mode.
I wonder if you're seeing this even when on the network? If so, perhaps your Ubuntu system has something going on that prevents opening a multicast listening socket on even `eth0` or `wlan0` or whatever.
Unfortunately, the actual socket leak bug is in the [network-multicast](http://hackage.haskell.org/package/network-multicast) library, and not in git-annex. I have filed an upstream bug report: <https://github.com/audreyt/network-multicast/issues/4>
Hopefully that will be dealt with soon. There is a workaround I could do in git-annex: If it fails (leaking one socket), it could wait until the NetworkListener indicated a new network interface was opened, before trying again (possibly leaking one socket again). This would change it from a 1 per second leak to a 1 per change of network leak at worst, which is probably much less likely to cause problems.
"""]]

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 6"
date="2013-08-24T18:38:56Z"
content="""
My NetListener workaround turned out to not be portable enough.
However, I have sent a patch to fix the FD leak: <https://github.com/audreyt/network-multicast/pull/6>
Hopefully it gets applied soon.
I have also made the PairListener only retry every 60 seconds. Which makes the leak 1/60th as bad, for whatever that's worth.
Once a fix for this gets into Debian, I need to remember to backport it to stable, and update the autobuilders to use it. Also need to remember to update the Android autobuilder. Leaving this bug report open until that happens.
"""]]

View file

@ -0,0 +1,354 @@
### Please describe the problem.
I installed the git-annex app for MacOSX (10.8.4)
### What steps will reproduce the problem?
- Created a repository
- In the configuration, entered my google username/password
### What version of git-annex are you using? On what operating system?
bundle version: 0.0.1
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
Process: git-annex [12934]
Path: /Applications/git-annex.app/Contents/MacOS/bundle/git-annex
Identifier: git-annex
Version: 0
Code Type: X86-64 (Native)
Parent Process: ??? [1]
User ID: 502
Date/Time: 2013-08-17 12:27:12.495 -0700
OS Version: Mac OS X 10.8.4 (12E55)
Report Version: 10
Sleep/Wake UUID: 6DB42174-0147-4C8B-B83E-F305823297CA
Interval Since Last Report: 294009 sec
Crashes Since Last Report: 4
Per-App Crashes Since Last Report: 4
Anonymous UUID: 0D492F72-DAE5-360C-A6D6-ECB38FD53115
Crashed Thread: 3
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Regions Near 0:
-->
__TEXT 000000010b5e6000-000000010e08d000 [ 42.7M] r-x/rwx SM=COW /Applications/git-annex.app/Contents/MacOS/bundle/git-annex
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff931400fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff86adffe9 _pthread_cond_wait + 869
2 git-annex 0x000000010df20179 0x10b5e6000 + 43229561
3 git-annex 0x000000010defc8eb 0x10b5e6000 + 43084011
4 git-annex 0x000000010df0bc86 0x10b5e6000 + 43146374
5 git-annex 0x000000010df0c6fb 0x10b5e6000 + 43149051
6 git-annex 0x000000010df07b46 0x10b5e6000 + 43129670
7 git-annex 0x000000010df07c69 0x10b5e6000 + 43129961
8 git-annex 0x000000010bcff518 0x10b5e6000 + 7443736
9 libdyld.dylib 0x00007fff8c3e47e1 start + 1
Thread 1:
0 libsystem_kernel.dylib 0x00007fff931400fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff86adffe9 _pthread_cond_wait + 869
2 git-annex 0x000000010df20179 0x10b5e6000 + 43229561
3 git-annex 0x000000010defc8eb 0x10b5e6000 + 43084011
4 git-annex 0x000000010df0bc86 0x10b5e6000 + 43146374
5 git-annex 0x000000010df0c5e0 0x10b5e6000 + 43148768
6 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
7 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 2:
0 libsystem_kernel.dylib 0x00007fff931400fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff86adffe9 _pthread_cond_wait + 869
2 git-annex 0x000000010df20179 0x10b5e6000 + 43229561
3 git-annex 0x000000010defc8eb 0x10b5e6000 + 43084011
4 git-annex 0x000000010df0bc86 0x10b5e6000 + 43146374
5 git-annex 0x000000010df0c5e0 0x10b5e6000 + 43148768
6 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
7 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 3 Crashed:
0 libsystem_c.dylib 0x00007fff86ae0bf9 pthread_mutex_lock + 20
1 H 0x000000010e9fd29f gnutls_system_mutex_lock + 12
2 H 0x000000010ea7fa29 wrap_nettle_rnd_refresh + 20
3 H 0x000000010e9fee89 gnutls_deinit + 42
4 git-annex 0x000000010caf0a3a 0x10b5e6000 + 22063674
Thread 4:
0 libsystem_kernel.dylib 0x00007fff93140d2a kevent64 + 10
1 git-annex 0x000000010deab5fa 0x10b5e6000 + 42751482
Thread 5:
0 libsystem_kernel.dylib 0x00007fff931400fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff86adffe9 _pthread_cond_wait + 869
2 git-annex 0x000000010df20179 0x10b5e6000 + 43229561
3 git-annex 0x000000010defc8eb 0x10b5e6000 + 43084011
4 git-annex 0x000000010df0bc86 0x10b5e6000 + 43146374
5 git-annex 0x000000010df0c5e0 0x10b5e6000 + 43148768
6 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
7 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 6:: Dispatch queue: com.apple.libdispatch-manager
0 libsystem_kernel.dylib 0x00007fff93140d16 kevent + 10
1 libdispatch.dylib 0x00007fff8e6fedea _dispatch_mgr_invoke + 883
2 libdispatch.dylib 0x00007fff8e6fe9ee _dispatch_mgr_thread + 54
Thread 7:
0 libsystem_kernel.dylib 0x00007fff9313e686 mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff9313dc42 mach_msg + 70
2 com.apple.CoreFoundation 0x00007fff8c1e2233 __CFRunLoopServiceMachPort + 195
3 com.apple.CoreFoundation 0x00007fff8c1e7916 __CFRunLoopRun + 1078
4 com.apple.CoreFoundation 0x00007fff8c1e70e2 CFRunLoopRunSpecific + 290
5 com.apple.CoreFoundation 0x00007fff8c1f5dd1 CFRunLoopRun + 97
6 git-annex 0x000000010c72b3ec 0x10b5e6000 + 18109420
7 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
8 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 8:
0 libsystem_kernel.dylib 0x00007fff9313e686 mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff9313dc42 mach_msg + 70
2 com.apple.CoreFoundation 0x00007fff8c1e2233 __CFRunLoopServiceMachPort + 195
3 com.apple.CoreFoundation 0x00007fff8c1e7916 __CFRunLoopRun + 1078
4 com.apple.CoreFoundation 0x00007fff8c1e70e2 CFRunLoopRunSpecific + 290
5 com.apple.CoreFoundation 0x00007fff8c1f5dd1 CFRunLoopRun + 97
6 git-annex 0x000000010c72b3ec 0x10b5e6000 + 18109420
7 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
8 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 9:
0 libsystem_kernel.dylib 0x00007fff9313e686 mach_msg_trap + 10
1 libsystem_kernel.dylib 0x00007fff9313dc42 mach_msg + 70
2 com.apple.CoreFoundation 0x00007fff8c1e2233 __CFRunLoopServiceMachPort + 195
3 com.apple.CoreFoundation 0x00007fff8c1e7916 __CFRunLoopRun + 1078
4 com.apple.CoreFoundation 0x00007fff8c1e70e2 CFRunLoopRunSpecific + 290
5 com.apple.CoreFoundation 0x00007fff8c1f5dd1 CFRunLoopRun + 97
6 git-annex 0x000000010c72b3ec 0x10b5e6000 + 18109420
7 libsystem_c.dylib 0x00007fff86adb7a2 _pthread_start + 327
8 libsystem_c.dylib 0x00007fff86ac81e1 thread_start + 13
Thread 3 crashed with X86 Thread State (64-bit):
rax: 0x000000010eaaca28 rbx: 0x00007f9dc38000c0 rcx: 0x000000010f87ce00 rdx: 0x000000010e3c28f0
rdi: 0x0000000000000000 rsi: 0x001c4500001c4500 rbp: 0x000000010f87ce10 rsp: 0x000000010f87cdd0
r8: 0x0000000000002060 r9: 0x000000010f87ce00 r10: 0x000000010eabf328 r11: 0x000000010e9fee5f
r12: 0x000000010f5585d8 r13: 0x000000010e3c2798 r14: 0x0000000000000000 r15: 0x000000010f548140
rip: 0x00007fff86ae0bf9 rfl: 0x0000000000010202 cr2: 0x0000000000000000
Logical CPU: 0
Binary Images:
0x10b5e6000 - 0x10e08cff7 +git-annex (0) <2C4C13B3-4830-322A-A144-9E51B386EB1E> /Applications/git-annex.app/Contents/MacOS/bundle/git-annex
0x10e85a000 - 0x10e957ff7 +E (22.3) <47B09CB2-C636-3024-8B55-6040F7829B4C> /Applications/git-annex.app/Contents/MacOS/bundle/E
0x10e990000 - 0x10e9a4fff +F (0) <FA90B1B1-A866-3A6C-BB97-06955F4C8C0B> /Applications/git-annex.app/Contents/MacOS/bundle/F
0x10e9ab000 - 0x10e9d8ff7 +G (0) <D80652C0-9A55-351C-8EAF-2364359BA0A2> /Applications/git-annex.app/Contents/MacOS/bundle/G
0x10e9de000 - 0x10eaabfdf +H (0) <29C3AFF5-8EFB-3A16-81F6-0DA6CF2675A6> /Applications/git-annex.app/Contents/MacOS/bundle/H
0x10eadd000 - 0x10eaefff7 +B (43) <2A1551E8-A272-3DE5-B692-955974FE1416> /Applications/git-annex.app/Contents/MacOS/bundle/B
0x10eaf7000 - 0x10ebecfff +D (34) <FEE8B996-EB44-37FA-B96E-D379664DEFE1> /Applications/git-annex.app/Contents/MacOS/bundle/D
0x10ec01000 - 0x10ed1992f +I (532.2) <90D31928-F48D-3E37-874F-220A51FD9E37> /Applications/git-annex.app/Contents/MacOS/bundle/I
0x10ed3d000 - 0x10ef3dfff +S (491.11.3) <5783D305-04E8-3D17-94F7-1CEAFA975240> /Applications/git-annex.app/Contents/MacOS/bundle/S
0x10f048000 - 0x10f06dff7 +Z (26) <D86169F3-9F31-377A-9AF3-DB17142052E4> /Applications/git-annex.app/Contents/MacOS/bundle/Z
0x10f0a1000 - 0x10f109ff7 +0A (65.1) <20E31B90-19B9-3C2A-A9EB-474E08F9FE05> /Applications/git-annex.app/Contents/MacOS/bundle/0A
0x10f163000 - 0x10f1ccfff +0B (56) <EAA2B53E-EADE-39CF-A0EF-FB9D4940672A> /Applications/git-annex.app/Contents/MacOS/bundle/0B
0x10f235000 - 0x10f248fff +T (0) <C8970714-4C86-3BE6-94D6-4835DCC8A003> /Applications/git-annex.app/Contents/MacOS/bundle/T
0x10f257000 - 0x10f264ff7 +U (0) <DCFF385A-090B-3407-868C-91544A2EFEE1> /Applications/git-annex.app/Contents/MacOS/bundle/U
0x10f26f000 - 0x10f291ff7 +V (0) <51B317C7-94CC-3C58-B515-924BB3AF0BCC> /Applications/git-annex.app/Contents/MacOS/bundle/V
0x10f29b000 - 0x10f2a8ff7 +W (0) <91CF16BE-027F-3FE6-B1EE-6B8BFD51FC1B> /Applications/git-annex.app/Contents/MacOS/bundle/W
0x10f2b4000 - 0x10f310fd7 +X (0) <84D934AF-A321-36C0-BBCF-CD3FDAEB0B95> /Applications/git-annex.app/Contents/MacOS/bundle/X
0x7fff6b1e6000 - 0x7fff6b21a93f dyld (210.2.3) <36CAA36E-72BC-3E48-96D9-B96A2DF77730> /usr/lib/dyld
0x7fff8652a000 - 0x7fff865d0ff7 com.apple.CoreServices.OSServices (557.6 - 557.6) <FFDDD2D8-690D-388F-A48F-4750A792D2CD> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x7fff865d1000 - 0x7fff865e8fff libGL.dylib (8.9.2) <B8E5948D-BCF2-3727-B74E-D74B8EDC82D6> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x7fff865e9000 - 0x7fff86610fff com.apple.framework.familycontrols (4.1 - 410) <50F5A52C-8FB6-300A-977D-5CFDE4D5796B> /System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls
0x7fff86611000 - 0x7fff8663cfff libxslt.1.dylib (11.3) <441776B8-9130-3893-956F-39C85FFA644F> /usr/lib/libxslt.1.dylib
0x7fff86649000 - 0x7fff86698ff7 libcorecrypto.dylib (106.2) <CE0C29A3-C420-339B-ADAA-52F4683233CC> /usr/lib/system/libcorecrypto.dylib
0x7fff8669d000 - 0x7fff866a3fff com.apple.DiskArbitration (2.5.2 - 2.5.2) <C713A35A-360E-36CE-AC0A-25C86A3F50CA> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x7fff866a4000 - 0x7fff86ac1fff FaceCoreLight (2.4.1) <DDAFFD7A-D312-3407-A010-5AEF3E17831B> /System/Library/PrivateFrameworks/FaceCoreLight.framework/Versions/A/FaceCoreLight
0x7fff86ac7000 - 0x7fff86b93ff7 libsystem_c.dylib (825.26) <4C9EB006-FE1F-3F8F-8074-DFD94CF2CE7B> /usr/lib/system/libsystem_c.dylib
0x7fff86d50000 - 0x7fff86da1ff7 com.apple.SystemConfiguration (1.12.2 - 1.12.2) <581BF463-C15A-363B-999A-E830222FA925> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x7fff86dee000 - 0x7fff86deefff com.apple.Accelerate.vecLib (3.8 - vecLib 3.8) <B5A18EE8-DF81-38DD-ACAF-7076B2A26225> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x7fff86def000 - 0x7fff86df4fff com.apple.OpenDirectory (10.8 - 151.10) <CF44120B-9B01-32DD-852E-C9C0E1243FC0> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
0x7fff86df5000 - 0x7fff86df6fff libDiagnosticMessagesClient.dylib (8) <8548E0DC-0D2F-30B6-B045-FE8A038E76D8> /usr/lib/libDiagnosticMessagesClient.dylib
0x7fff86e0a000 - 0x7fff87201fff libLAPACK.dylib (1073.4) <D632EC8B-2BA0-3853-800A-20DA00A1091C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x7fff87622000 - 0x7fff87650ff7 libsystem_m.dylib (3022.6) <B434BE5C-25AB-3EBD-BAA7-5304B34E3441> /usr/lib/system/libsystem_m.dylib
0x7fff8766c000 - 0x7fff8769dff7 com.apple.DictionaryServices (1.2 - 184.4) <FB0540FF-5034-3591-A28D-6887FBC220F7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x7fff8769e000 - 0x7fff8769efff libkeymgr.dylib (25) <CC9E3394-BE16-397F-926B-E579B60EE429> /usr/lib/system/libkeymgr.dylib
0x7fff87732000 - 0x7fff87754ff7 libxpc.dylib (140.43) <70BC645B-6952-3264-930C-C835010CCEF9> /usr/lib/system/libxpc.dylib
0x7fff87755000 - 0x7fff877d7ff7 com.apple.Heimdal (3.0 - 2.0) <C94B0C6C-1320-35A1-8143-FE252E7B2A08> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
0x7fff877d8000 - 0x7fff87859fff com.apple.Metadata (10.7.0 - 707.11) <2DD25313-420D-351A-90F1-300E95C970CA> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x7fff87cbf000 - 0x7fff87d19fff com.apple.print.framework.PrintCore (8.3 - 387.2) <5BA0CBED-4D80-386A-9646-F835C9805B71> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x7fff87e27000 - 0x7fff87e34ff7 com.apple.NetAuth (4.0 - 4.0) <F5BC7D7D-AF28-3C83-A674-DADA48FF7810> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
0x7fff87f54000 - 0x7fff87f68fff com.apple.speech.synthesis.framework (4.1.12 - 4.1.12) <94EDF2AB-809C-3D15-BED5-7AD45B2A7C16> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x7fff87f77000 - 0x7fff87f7dff7 libunwind.dylib (35.1) <21703D36-2DAB-3D8B-8442-EAAB23C060D3> /usr/lib/system/libunwind.dylib
0x7fff87fab000 - 0x7fff87fabfff com.apple.Accelerate (1.8 - Accelerate 1.8) <6AD48543-0864-3D40-80CE-01F184F24B45> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x7fff88161000 - 0x7fff88162ff7 libSystem.B.dylib (169.3) <9089D72D-E714-31E1-80C8-698A8E8B05AD> /usr/lib/libSystem.B.dylib
0x7fff88167000 - 0x7fff88205ff7 com.apple.ink.framework (10.8.2 - 150) <3D8D16A2-7E01-3EA1-B637-83A36D353308> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x7fff88222000 - 0x7fff88223ff7 libsystem_sandbox.dylib (220.3) <B739DA63-B675-387A-AD84-412A651143C0> /usr/lib/system/libsystem_sandbox.dylib
0x7fff88224000 - 0x7fff88228ff7 com.apple.TCC (1.0 - 1) <F2F3B753-FC73-3543-8BBE-859FDBB4D6A6> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
0x7fff88229000 - 0x7fff88230fff libcopyfile.dylib (89) <876573D0-E907-3566-A108-577EAD1B6182> /usr/lib/system/libcopyfile.dylib
0x7fff88a6e000 - 0x7fff88a8dff7 libresolv.9.dylib (51) <0882DC2D-A892-31FF-AD8C-0BB518C48B23> /usr/lib/libresolv.9.dylib
0x7fff88a8e000 - 0x7fff88aa1ff7 libbsm.0.dylib (32) <F497D3CE-40D9-3551-84B4-3D5E39600737> /usr/lib/libbsm.0.dylib
0x7fff88bbd000 - 0x7fff88bbdfff com.apple.ApplicationServices (45 - 45) <A3ABF20B-ED3A-32B5-830E-B37831A45A80> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x7fff88bce000 - 0x7fff88bf6fff libJPEG.dylib (850) <DC750E1E-BD07-339B-A4A6-D86BFE969F68> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x7fff88bf7000 - 0x7fff88bf9fff libquarantine.dylib (52.1) <143B726E-DF47-37A8-90AA-F059CFD1A2E4> /usr/lib/system/libquarantine.dylib
0x7fff88fe0000 - 0x7fff8933ffff com.apple.Foundation (6.8 - 945.18) <1D7E58E6-FA3A-3CE8-AC85-B9D06B8C0AA0> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x7fff89340000 - 0x7fff89575ff7 com.apple.CoreData (106.1 - 407.7) <A676E1A4-2144-376B-92B8-B450DD1D78E5> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x7fff89576000 - 0x7fff8957dfff libGFXShared.dylib (8.9.2) <398F8D57-EC82-3E13-AC8E-470BE19237D7> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
0x7fff895d4000 - 0x7fff8a201fff com.apple.AppKit (6.8 - 1187.39) <199962F0-B06B-3666-8FD5-5C90374BA16A> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x7fff8a202000 - 0x7fff8a519ff7 com.apple.CoreServices.CarbonCore (1037.6 - 1037.6) <1E567A52-677F-3168-979F-5FBB0818D52B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x7fff8a5e0000 - 0x7fff8a5e7fff com.apple.NetFS (5.0 - 4.0) <82E24B9A-7742-3DA3-9E99-ED267D98C05E> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
0x7fff8a5e8000 - 0x7fff8a63fff7 com.apple.ScalableUserInterface (1.0 - 1) <F1D43DFB-1796-361B-AD4B-39F1EED3BE19> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/ScalableUserInterface.framework/Versions/A/ScalableUserInterface
0x7fff8a71b000 - 0x7fff8a767ff7 libauto.dylib (185.4) <AD5A4CE7-CB53-313C-9FAE-673303CC2D35> /usr/lib/libauto.dylib
0x7fff8a768000 - 0x7fff8a768fff libOpenScriptingUtil.dylib (148.3) <F8681222-0969-3B10-8BCE-C55A4B9C520C> /usr/lib/libOpenScriptingUtil.dylib
0x7fff8a7e7000 - 0x7fff8a808ff7 libCRFSuite.dylib (33) <736ABE58-8DED-3289-A042-C25AF7AE5B23> /usr/lib/libCRFSuite.dylib
0x7fff8a809000 - 0x7fff8a815fff com.apple.CrashReporterSupport (10.8.3 - 418) <DE6AFE16-D97E-399D-82ED-3522C773C36E> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
0x7fff8a816000 - 0x7fff8b1a64af com.apple.CoreGraphics (1.600.0 - 332) <5AB32E51-9154-3733-B83B-A9A748652847> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x7fff8b1a7000 - 0x7fff8b1befff com.apple.CFOpenDirectory (10.8 - 151.10) <10F41DA4-AD54-3F52-B898-588D9A117171> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
0x7fff8b242000 - 0x7fff8b285ff7 com.apple.bom (12.0 - 192) <0BF1F2D2-3648-36B7-BE4B-551A0173209B> /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
0x7fff8b286000 - 0x7fff8b2c3fef libGLImage.dylib (8.9.2) <C38649ED-E1C9-315E-9953-F33E8C6A3C89> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x7fff8b2c4000 - 0x7fff8b303ff7 com.apple.QD (3.42.1 - 285.1) <77A20C25-EBB5-341C-A05C-5D458B97AD5C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x7fff8b304000 - 0x7fff8b39efff libvMisc.dylib (380.6) <714336EA-1C0E-3735-B31C-19DFDAAF6221> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x7fff8b3b8000 - 0x7fff8b566fff com.apple.QuartzCore (1.8 - 304.3) <F450F2DE-2F24-3557-98B6-310E05DAC17F> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x7fff8ba39000 - 0x7fff8ba4cff7 com.apple.LangAnalysis (1.7.0 - 1.7.0) <2F2694E9-A7BC-33C7-B4CF-8EC907DF0FEB> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x7fff8bd12000 - 0x7fff8bd1cfff com.apple.speech.recognition.framework (4.1.5 - 4.1.5) <D803919C-3102-3515-A178-61E9C86C46A1> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x7fff8c0d6000 - 0x7fff8c0d7ff7 libdnsinfo.dylib (453.19) <14202FFB-C3CA-3FCC-94B0-14611BF8692D> /usr/lib/system/libdnsinfo.dylib
0x7fff8c179000 - 0x7fff8c17efff libcompiler_rt.dylib (30) <08F8731D-5961-39F1-AD00-4590321D24A9> /usr/lib/system/libcompiler_rt.dylib
0x7fff8c1b2000 - 0x7fff8c39cff7 com.apple.CoreFoundation (6.8 - 744.19) <0F7403CA-2CB8-3D0A-992B-679701DF27CA> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x7fff8c39d000 - 0x7fff8c3c4ff7 com.apple.PerformanceAnalysis (1.16 - 16) <E4888388-F41B-313E-9CBB-5807D077BDA9> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
0x7fff8c3e2000 - 0x7fff8c3e5ff7 libdyld.dylib (210.2.3) <F59367C9-C110-382B-A695-9035A6DD387E> /usr/lib/system/libdyld.dylib
0x7fff8c3e6000 - 0x7fff8c3e8fff libCVMSPluginSupport.dylib (8.9.2) <EF1192AC-3357-3A0B-BFAF-6594D7737892> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
0x7fff8c3e9000 - 0x7fff8c484fff com.apple.CoreSymbolication (3.0 - 117) <50716F74-41C2-3BB9-AC16-12C4D4C2DD1E> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
0x7fff8c75b000 - 0x7fff8c75bfff com.apple.CoreServices (57 - 57) <9DD44CB0-C644-35C3-8F57-0B41B3EC147D> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x7fff8cf1f000 - 0x7fff8d094ff7 com.apple.CFNetwork (596.4.3 - 596.4.3) <A57B3308-2F08-3EC3-B4AC-39A3D9F0B9F7> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x7fff8d0ae000 - 0x7fff8d0e4fff libsystem_info.dylib (406.17) <4FFCA242-7F04-365F-87A6-D4EFB89503C1> /usr/lib/system/libsystem_info.dylib
0x7fff8d0e5000 - 0x7fff8d148ff7 com.apple.audio.CoreAudio (4.1.1 - 4.1.1) <9ACD3AED-6C04-3BBB-AB2A-FC253B16D093> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x7fff8d156000 - 0x7fff8d16cfff com.apple.MultitouchSupport.framework (235.29 - 235.29) <617EC8F1-BCE7-3553-86DD-F857866E1257> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
0x7fff8d16d000 - 0x7fff8d171fff libGIF.dylib (850) <D4525F87-759C-338C-B283-BB8DE815D3D5> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x7fff8d264000 - 0x7fff8d2aeff7 libGLU.dylib (8.9.2) <1B5511FF-1064-3004-A245-972CE5687D37> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x7fff8d2b2000 - 0x7fff8d2dcff7 com.apple.CoreVideo (1.8 - 99.4) <E5082966-6D81-3973-A05A-38AA5B85F886> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x7fff8d58d000 - 0x7fff8d591fff com.apple.IOSurface (86.0.4 - 86.0.4) <26F01CD4-B76B-37A3-989D-66E8140542B3> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
0x7fff8d6de000 - 0x7fff8d78ffff com.apple.LaunchServices (539.9 - 539.9) <07FC6766-778E-3479-8F28-D2C9917E1DD1> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x7fff8d7bf000 - 0x7fff8d80eff7 libFontRegistry.dylib (100) <2E03D7DA-9B8F-31BB-8FB5-3D3B6272127F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
0x7fff8d80f000 - 0x7fff8d88fff7 com.apple.ApplicationServices.ATS (332 - 341.1) <39B53565-FA31-3F61-B090-C787C983142E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x7fff8d94e000 - 0x7fff8d95bfff com.apple.AppleFSCompression (49 - 1.0) <5508344A-2A7E-3122-9562-6F363910A80E> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
0x7fff8d95c000 - 0x7fff8d99fff7 com.apple.RemoteViewServices (2.0 - 80.6) <5CFA361D-4853-3ACC-9EFC-A2AC1F43BA4B> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
0x7fff8dac2000 - 0x7fff8dac8fff libmacho.dylib (829) <BF332AD9-E89F-387E-92A4-6E1AB74BD4D9> /usr/lib/system/libmacho.dylib
0x7fff8dac9000 - 0x7fff8db03ff7 com.apple.GSS (3.0 - 2.0) <970CAE00-1437-3F4E-B677-0FDB3714C08C> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
0x7fff8db09000 - 0x7fff8db12ff7 com.apple.CommerceCore (1.0 - 26.1) <40A129A8-4E5D-3C7A-B299-8CB203C4C65D> /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Frameworks/CommerceCore.framework/Versions/A/CommerceCore
0x7fff8db13000 - 0x7fff8db15fff com.apple.TrustEvaluationAgent (2.0 - 23) <A97D348B-32BF-3E52-8DF2-59BFAD21E1A3> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
0x7fff8de6c000 - 0x7fff8de6eff7 libunc.dylib (25) <92805328-CD36-34FF-9436-571AB0485072> /usr/lib/system/libunc.dylib
0x7fff8de6f000 - 0x7fff8de8eff7 com.apple.ChunkingLibrary (2.0 - 133.3) <8BEC9AFB-DCAA-37E8-A5AB-24422B234ECF> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
0x7fff8de8f000 - 0x7fff8deeefff com.apple.AE (645.6 - 645.6) <44F403C1-660A-3543-AB9C-3902E02F936F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x7fff8deef000 - 0x7fff8dfecfff libsqlite3.dylib (138.1) <ADE9CB98-D77D-300C-A32A-556B7440769F> /usr/lib/libsqlite3.dylib
0x7fff8e06b000 - 0x7fff8e076ff7 com.apple.bsd.ServiceManagement (2.0 - 2.0) <C12962D5-85FB-349E-AA56-64F4F487F219> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
0x7fff8e077000 - 0x7fff8e086fff com.apple.opengl (1.8.9 - 1.8.9) <6FD163A7-16CC-3D1F-B4B5-B0FDC4ADBF79> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x7fff8e087000 - 0x7fff8e092fff com.apple.CommonAuth (3.0 - 2.0) <7A953C1F-8B18-3E46-9BEA-26D9B5B7745D> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
0x7fff8e093000 - 0x7fff8e093fff com.apple.Cocoa (6.7 - 19) <1F77945C-F37A-3171-B22E-F7AB0FCBB4D4> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x7fff8e1f3000 - 0x7fff8e1f4fff libsystem_blocks.dylib (59) <D92DCBC3-541C-37BD-AADE-ACC75A0C59C8> /usr/lib/system/libsystem_blocks.dylib
0x7fff8e23c000 - 0x7fff8e23cffd com.apple.audio.units.AudioUnit (1.9 - 1.9) <EC55FB59-2443-3F08-9142-7BCC93C76E4E> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x7fff8e23d000 - 0x7fff8e30fff7 com.apple.CoreText (260.0 - 275.16) <5BFC1D67-6A6F-38BC-9D90-9C712684EDAC> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
0x7fff8e310000 - 0x7fff8e31eff7 libkxld.dylib (2050.24.15) <A619A9AC-09AF-3FF3-95BF-F07CC530EC31> /usr/lib/system/libkxld.dylib
0x7fff8e31f000 - 0x7fff8e38dff7 com.apple.framework.IOKit (2.0.1 - 755.24.1) <04BFB138-8AF4-310A-8E8C-045D8A239654> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x7fff8e39f000 - 0x7fff8e525fff libBLAS.dylib (1073.4) <C102C0F6-8CB6-3B49-BA6B-2EB61F0B2784> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x7fff8e553000 - 0x7fff8e597fff libcups.2.dylib (327.6) <9C01D012-6F4C-3B69-B614-1B408B0ED4E3> /usr/lib/libcups.2.dylib
0x7fff8e598000 - 0x7fff8e5a6fff libcommonCrypto.dylib (60027) <BAAFE0C9-BB86-3CA7-88C0-E3CBA98DA06F> /usr/lib/system/libcommonCrypto.dylib
0x7fff8e6fa000 - 0x7fff8e70fff7 libdispatch.dylib (228.23) <D26996BF-FC57-39EB-8829-F63585561E09> /usr/lib/system/libdispatch.dylib
0x7fff8e710000 - 0x7fff8e71eff7 libsystem_network.dylib (77.10) <0D99F24E-56FE-380F-B81B-4A4C630EE587> /usr/lib/system/libsystem_network.dylib
0x7fff8e71f000 - 0x7fff8e741ff7 com.apple.Kerberos (2.0 - 1) <C49B8820-34ED-39D7-A407-A3E854153556> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x7fff8e788000 - 0x7fff8e797ff7 libxar.1.dylib (105) <370ED355-E516-311E-BAFD-D80633A84BE1> /usr/lib/libxar.1.dylib
0x7fff8f144000 - 0x7fff8f1d1ff7 com.apple.SearchKit (1.4.0 - 1.4.0) <C7F43889-F8BF-3CB9-AD66-11AEFCBCEDE7> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x7fff8f24c000 - 0x7fff8f24ffff libRadiance.dylib (850) <62E3F7FB-03E3-3937-A857-AF57A75EAF09> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x7fff8f533000 - 0x7fff8f7d7ff7 com.apple.CoreImage (8.4.0 - 1.0.1) <CC6DD22B-FFC6-310B-BE13-2397A02C79EF> /System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
0x7fff8f7d8000 - 0x7fff8f840fff libvDSP.dylib (380.6) <CD4C5EEB-9E63-30C4-8103-7A5EAEA0BE60> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x7fff8f8ab000 - 0x7fff8f8affff libpam.2.dylib (20) <C8F45864-5B58-3237-87E1-2C258A1D73B8> /usr/lib/libpam.2.dylib
0x7fff8fabb000 - 0x7fff8fb28ff7 com.apple.datadetectorscore (4.1 - 269.3) <5775F0DB-87D6-310D-8B03-E2AD729EFB28> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
0x7fff8fc60000 - 0x7fff8fcbcff7 com.apple.Symbolication (1.3 - 93) <97F3B1D2-D81D-3F37-87B3-B9A686124CF5> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
0x7fff8fd91000 - 0x7fff8fe6bfff com.apple.backup.framework (1.4.3 - 1.4.3) <6B65C44C-7777-3331-AD9D-438D10AAC777> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
0x7fff8fe6c000 - 0x7fff8fe79fff libbz2.1.0.dylib (29) <CE9785E8-B535-3504-B392-82F0064D9AF2> /usr/lib/libbz2.1.0.dylib
0x7fff8fe89000 - 0x7fff8ffdbfff com.apple.audio.toolbox.AudioToolbox (1.9 - 1.9) <62770C0F-5600-3EF9-A893-8A234663FFF5> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x7fff90071000 - 0x7fff90173fff libJP2.dylib (850) <2E43216C-3A5A-3693-820C-38B360698FA0> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x7fff90ab4000 - 0x7fff90b79ff7 com.apple.coreui (2.0 - 181.1) <83D2C92D-6842-3C9D-9289-39D5B4554C3A> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x7fff90e1a000 - 0x7fff90e1bfff liblangid.dylib (116) <864C409D-D56B-383E-9B44-A435A47F2346> /usr/lib/liblangid.dylib
0x7fff90f20000 - 0x7fff90fddff7 com.apple.ColorSync (4.8.0 - 4.8.0) <6CE333AE-EDDB-3768-9598-9DB38041DC55> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x7fff90fde000 - 0x7fff9105dff7 com.apple.securityfoundation (6.0 - 55115.4) <8676E0DF-295F-3690-BDAA-6C9C1D210B88> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x7fff9105e000 - 0x7fff910b4fff com.apple.HIServices (1.20 - 417) <BCD36950-013F-35C2-918E-05A93A47BE8C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x7fff910b5000 - 0x7fff910d6fff com.apple.Ubiquity (1.2 - 243.15) <C9A7EE77-B637-3676-B667-C0843BBB0409> /System/Library/PrivateFrameworks/Ubiquity.framework/Versions/A/Ubiquity
0x7fff910de000 - 0x7fff91133ff7 libTIFF.dylib (850) <EDAF0D99-70AF-3B3F-9EFA-9463C91D0E3C> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x7fff9125c000 - 0x7fff9127cfff libPng.dylib (850) <203C43BF-FAD3-3CCB-81D5-F2770E36338B> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x7fff9127f000 - 0x7fff91398fff com.apple.ImageIO.framework (3.2.1 - 850) <C3FFCEEB-AA0C-314B-9E94-7005EE48A403> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x7fff9139f000 - 0x7fff913b6fff com.apple.GenerationalStorage (1.1 - 132.3) <FD4A84B3-13A8-3C60-A59E-25A361447A17> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
0x7fff91582000 - 0x7fff91586fff libCoreVMClient.dylib (32.3) <AD8391D9-56DD-3A78-A294-6A30E6ECE1A2> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
0x7fff91587000 - 0x7fff915bdfff com.apple.DebugSymbols (98 - 98) <14E788B1-4EB2-3FD7-934B-849534DFC198> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
0x7fff915cd000 - 0x7fff915d5fff liblaunch.dylib (442.26.2) <2F71CAF8-6524-329E-AC56-C506658B4C0C> /usr/lib/system/liblaunch.dylib
0x7fff915d6000 - 0x7fff915e1fff libsystem_notify.dylib (98.5) <C49275CC-835A-3207-AFBA-8C01374927B6> /usr/lib/system/libsystem_notify.dylib
0x7fff91650000 - 0x7fff917ebfef com.apple.vImage (6.0 - 6.0) <FAE13169-295A-33A5-8E6B-7C2CC1407FA7> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x7fff917ec000 - 0x7fff917f4ff7 libsystem_dnssd.dylib (379.38.1) <BDCB8566-0189-34C0-9634-35ABD3EFE25B> /usr/lib/system/libsystem_dnssd.dylib
0x7fff9182d000 - 0x7fff91938fff libFontParser.dylib (84.6) <96C42E49-79A6-3475-B5E4-6A782599A6DA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
0x7fff919d8000 - 0x7fff919ddfff libcache.dylib (57) <65187C6E-3FBF-3EB8-A1AA-389445E2984D> /usr/lib/system/libcache.dylib
0x7fff919de000 - 0x7fff919defff com.apple.vecLib (3.8 - vecLib 3.8) <794317C7-4E38-338A-A874-5E18001C8503> /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
0x7fff919df000 - 0x7fff91cb0ff7 com.apple.security (7.0 - 55179.13) <F428E306-C407-3B55-BA82-E58755E8A76F> /System/Library/Frameworks/Security.framework/Versions/A/Security
0x7fff91d3f000 - 0x7fff9206ffff com.apple.HIToolbox (2.0 - 626.1) <656D08C2-9068-3532-ABDD-32EC5057CCB2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x7fff92084000 - 0x7fff920deff7 com.apple.opencl (2.2.19 - 2.2.19) <3C7DFB2C-B3F9-3447-A1FC-EAAA42181A6E> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
0x7fff9216c000 - 0x7fff9216dff7 libremovefile.dylib (23.2) <6763BC8E-18B8-3AD9-8FFA-B43713A7264F> /usr/lib/system/libremovefile.dylib
0x7fff9312e000 - 0x7fff93149ff7 libsystem_kernel.dylib (2050.24.15) <A9F97289-7985-31D6-AF89-151830684461> /usr/lib/system/libsystem_kernel.dylib
0x7fff9314d000 - 0x7fff9326dfff com.apple.desktopservices (1.7.4 - 1.7.4) <ED3DA8C0-160F-3CDC-B537-BF2E766AB7C1> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 1
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 168404
thread_create: 1
thread_set_state: 0
VM Region Summary:
ReadOnly portion of Libraries: Total=109.3M resident=31.8M(29%) swapped_out_or_unallocated=77.5M(71%)
Writable regions: Total=90.9M written=16.1M(18%) resident=17.5M(19%) swapped_out=0K(0%) unallocated=73.4M(81%)
REGION TYPE VIRTUAL
=========== =======
MALLOC 62.5M
MALLOC guard page 48K
STACK GUARD 56.0M
Stack 12.6M
VM_ALLOCATE 12.0M
__DATA 13.8M
__IMAGE 528K
__LINKEDIT 58.6M
__TEXT 134.3M
__UNICODE 544K
shared memory 308K
=========== =======
TOTAL 351.2M
Model: MacBookPro10,1, BootROM MBP101.00EE.B03, 4 processors, Intel Core i7, 2.8 GHz, 16 GB, SMC 2.3f35
Graphics: Intel HD Graphics 4000, Intel HD Graphics 4000, Built-In, 512 MB
Graphics: NVIDIA GeForce GT 650M, NVIDIA GeForce GT 650M, PCIe, 1024 MB
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D5434314753364D465238432D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D5434314753364D465238432D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xEF), Broadcom BCM43xx 1.0 (5.106.98.100.17)
Bluetooth: Version 4.1.4f2 12041, 2 service, 18 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM768E, 751.28 GB
USB Device: hub_device, 0x8087 (Intel Corporation), 0x0024, 0x1a100000 / 2
USB Device: FaceTime HD Camera (Built-in), apple_vendor_id, 0x8510, 0x1a110000 / 3
USB Device: USB Receiver, 0x046d (Logitech Inc.), 0xc52b, 0x14200000 / 1
USB Device: hub_device, 0x8087 (Intel Corporation), 0x0024, 0x1d100000 / 2
USB Device: hub_device, 0x0424 (SMSC), 0x2512, 0x1d180000 / 3
USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x0262, 0x1d182000 / 5
USB Device: BRCM20702 Hub, 0x0a5c (Broadcom Corp.), 0x4500, 0x1d181000 / 4
USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x8286, 0x1d181300 / 6
# End of transcript or log.
"""]]

View file

@ -0,0 +1,23 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 1"
date="2013-08-26T19:51:48Z"
content="""
So this is a crash in the gnutls library used for XMPP. Someone else using OSX reported a similar crash to me by email, reproducible reliably by setting up xmpp with google. This is great debugging info:
<pre>
Thread 3 Crashed:
0 libsystem_c.dylib 0x00007fff86ae0bf9 pthread_mutex_lock + 20
1 H 0x000000010e9fd29f gnutls_system_mutex_lock + 12
2 H 0x000000010ea7fa29 wrap_nettle_rnd_refresh + 20
3 H 0x000000010e9fee89 gnutls_deinit + 42
4 git-annex 0x000000010caf0a3a 0x10b5e6000 + 22063674
</pre>
Looks like `gnutls_deinit` was called and it crashed there, inside pthread code. So I think git-annex has already managed to connect to the XMPP server (to test it) and the cleanup is where it's crashing.
This is the second time I have seen a gnutls-related crash using XMPP. The other one was tracked down by John Millikin to a resource allocation bug in haskell-gnutls and fixed.
I have written a test case that reproduces the problem -- just forking a dozen threads that each try to connect to the google xmpp server and then close the connection. After a dozen or so succeed, one will reliably cause a segfault. Forwarded this test case to John.
"""]]

View file

@ -0,0 +1,14 @@
### Please describe the problem.
While running git annex sync, it may failed if one did run it on some deep directory, and the sync remove this direcory.
### What version of git-annex are you using? On what operating system?
git-annex version: 4.20130815
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
local repository version: 3
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 0 1 2
on Debian Gnu Linux sid

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 2"
date="2013-08-24T19:48:46Z"
content="""
I'm confused by this bug report, because it seems to me I already fixed this same problem in commit a64106dcef5c5aad825662ef115cb2a1cc6985a8. There the problem was that encfs in paranoia mode doesn't support hard links. So I made it detect when createLink fails, and fall back to a code path that doesn't need hard links.
Can you re-check the version you have, and perhaps try with a current daily build?
"""]]

View file

@ -0,0 +1,16 @@
A repository like http://annex.debconf.org/debconf-share/ has a git repo
published via http. When getting files from such a repo, git-annex tries
two urls. One url would be used by a bare repo, and the other by a non-bare
repo. (This is due to the directory hashing change.) Result is every file
download from a non-bare http repo starts with a 404 and then it retries
with the right url.
Since git-annex already downloads the .git/config to find the uuid of the
http repo, it could also look at it to see if the repo is bare. If not,
set a flag, and try the two urls in reverse order, which would almost
always avoid this 404 problem.
(The real solution is probably to flag day and get rid of the old-style
directory hashing, but that's been discussed elsewhere.)
--[[Joey]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 1"
date="2013-08-24T16:41:04Z"
content="""
You are running the git annex assistant, which takes care of getting and dropping files as it's configured to do, and you are then going in and manually running `git annex get`. If the assistant sees a file's content has appeared, and that file is in a directory that it has been configured to not want the content of file in (the `archive` directory by default), it will immediately try to drop it.
The only thing I don't understand is why the number of `..` in the symlink would change.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.0.63"
subject="comment 2"
date="2013-08-24T16:41:47Z"
content="""
BTW if you don't want the assistant to automatically get and drop files in your repository, you can edit the repository in the webapp and select \"manual mode\".
"""]]

View file

@ -0,0 +1,21 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawnSenxKyE_2Z6Wb-EBMO8FciyRywjx1ZiQ"
nickname="Walter"
subject="comment 3"
date="2013-08-24T21:59:12Z"
content="""
I have all of my repositories set to either manual (all the computers), or full backup (the usb drive and s3).
So, this is happening in a manual repository.
Also, I still don't understand why it would be confused over the annex.numcopies setting (why does it claim it needs 2 copies, when numcopies is 1?)
I just tested between desktop and laptop. File is also present in s3.
File on desktop. Copy to laptop --> desktop drops (why? both are set to manual, and both have the other set as manual as well)
Get on desktop. Works, it gets it from laptop. But then, desktop makes laptop drop it (why? again, both are manual repositories)
"""]]

View file

@ -0,0 +1,55 @@
### Please describe the problem.
`git annex status` inconsistently uses mebi (SI) and giga (informal) prefixes.
### What steps will reproduce the problem?
Example:
[[!format txt """
anarcat@marcos:mp3$ 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 glacier hook
repository mode: direct
trusted repositories: 0
semitrusted repositories: 2
00000000-0000-0000-0000-000000000001 -- web
b7802161-c984-4c9f-8d05-787a29c41cfe -- here (anarcat@marcos:/srv/mp3)
untrusted repositories: 0
transfers in progress: none
available local disk space: 31.93 gigabytes (+1 megabyte reserved)
local annex keys: 19913
local annex size: 111.08 gigabytes
known annex keys: 20085
known annex size: 111.38 gigabytes
bloom filter size: 16 mebibytes (3.1% full)
backend usage:
SHA256E: 39998
"""]]
Notice `mebibytes` and `gigabytes`. It is unclear whether those are gigabytes (1000^3) or gibibytes (1024^3).
### What version of git-annex are you using? On what operating system?
4.20130802~bpo70+2, Debian wheezy.
### Please provide any additional information below.
nil.
> git-annex consistently uses the powers of ten units
> for disk storage sizes. Its "gigabyte" is the SI gigabyte.
>
> It uses the absurdly named units for powers of 2 for memory sizes,
> in the few places it deals with memory (probably only the above bloom
> filter size number).
>
> AFAIK I am complying with all relevant standards and best practices.
> Even though I consider them rather dumb, as is clear if you
> [read the opionated source code I wrote to handle this]().
>
> If git-annex used "gibibyte", the numbers it reports for disk size
> would not match the numbers disk vendors and most tools use.
>
> [[bug_is_in_world_not_in_git-annex|done]] --[[Joey]]

View file

@ -36,3 +36,5 @@ Ubuntu 12.04 LTS
# End of transcript or log.
"""]]
> [[fixed|done]] --[[Joey]]

Some files were not shown because too many files have changed in this diff Show more