assistant: Work around git-cat-file's not reloading the index after files are staged.
Argh.
This commit is contained in:
parent
ed4febb170
commit
729eab1f89
4 changed files with 30 additions and 3 deletions
2
Annex.hs
2
Annex.hs
|
@ -86,6 +86,7 @@ data AnnexState = AnnexState
|
||||||
, force :: Bool
|
, force :: Bool
|
||||||
, fast :: Bool
|
, fast :: Bool
|
||||||
, auto :: Bool
|
, auto :: Bool
|
||||||
|
, daemon :: Bool
|
||||||
, branchstate :: BranchState
|
, branchstate :: BranchState
|
||||||
, repoqueue :: Maybe Git.Queue.Queue
|
, repoqueue :: Maybe Git.Queue.Queue
|
||||||
, catfilehandles :: M.Map FilePath CatFileHandle
|
, catfilehandles :: M.Map FilePath CatFileHandle
|
||||||
|
@ -116,6 +117,7 @@ newState gitrepo = AnnexState
|
||||||
, force = False
|
, force = False
|
||||||
, fast = False
|
, fast = False
|
||||||
, auto = False
|
, auto = False
|
||||||
|
, daemon = False
|
||||||
, branchstate = startBranchState
|
, branchstate = startBranchState
|
||||||
, repoqueue = Nothing
|
, repoqueue = Nothing
|
||||||
, catfilehandles = M.empty
|
, catfilehandles = M.empty
|
||||||
|
|
|
@ -62,10 +62,31 @@ catKey ref = do
|
||||||
then fileKey $ takeFileName l
|
then fileKey $ takeFileName l
|
||||||
else Nothing
|
else Nothing
|
||||||
|
|
||||||
{- From a file in git back to the key.
|
{- From a file in the repository back to the key.
|
||||||
-
|
-
|
||||||
- Prefixing the file with ./ makes this work even if in a subdirectory
|
- Prefixing the file with ./ makes this work even if in a subdirectory
|
||||||
- of a repo.
|
- of a repo.
|
||||||
|
-
|
||||||
|
- Ideally, this should reflect the key that's staged in the index,
|
||||||
|
- not the key that's committed to HEAD. Unfortunately, git cat-file
|
||||||
|
- does not refresh the index file after it's started up, so things
|
||||||
|
- newly staged in the index won't show up. It does, however, notice
|
||||||
|
- when branches change.
|
||||||
|
-
|
||||||
|
- For command-line git-annex use, that doesn't matter. It's perfectly
|
||||||
|
- reasonable for things staged in the index after the currently running
|
||||||
|
- git-annex process to not be noticed by it.
|
||||||
|
-
|
||||||
|
- For the assistant, this is much more of a problem, since it commits
|
||||||
|
- files and then needs to be able to immediately look up their keys.
|
||||||
|
- OTOH, the assistant doesn't keep changes staged in the index for very
|
||||||
|
- long at all before committing them -- and it won't look at the keys
|
||||||
|
- of files until after committing them.
|
||||||
|
-
|
||||||
|
- So, this gets info from the index, unless running as a daemon.
|
||||||
-}
|
-}
|
||||||
catKeyFile :: FilePath -> Annex (Maybe Key)
|
catKeyFile :: FilePath -> Annex (Maybe Key)
|
||||||
catKeyFile f = catKey $ Ref $ ":./" ++ f
|
catKeyFile f = ifM (Annex.getState Annex.daemon)
|
||||||
|
( catKey $ Ref $ "HEAD:./" ++ f
|
||||||
|
, catKey $ Ref $ ":./" ++ f
|
||||||
|
)
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
module Assistant where
|
module Assistant where
|
||||||
|
|
||||||
|
import qualified Annex
|
||||||
import Assistant.Common
|
import Assistant.Common
|
||||||
import Assistant.DaemonStatus
|
import Assistant.DaemonStatus
|
||||||
import Assistant.NamedThread
|
import Assistant.NamedThread
|
||||||
|
@ -61,6 +62,7 @@ stopDaemon = liftIO . Utility.Daemon.stopDaemon =<< fromRepo gitAnnexPidFile
|
||||||
- stdout and stderr descriptors. -}
|
- stdout and stderr descriptors. -}
|
||||||
startDaemon :: Bool -> Bool -> Maybe HostName -> Maybe (Maybe Handle -> Maybe Handle -> String -> FilePath -> IO ()) -> Annex ()
|
startDaemon :: Bool -> Bool -> Maybe HostName -> Maybe (Maybe Handle -> Maybe Handle -> String -> FilePath -> IO ()) -> Annex ()
|
||||||
startDaemon assistant foreground listenhost startbrowser = do
|
startDaemon assistant foreground listenhost startbrowser = do
|
||||||
|
Annex.changeState $ \s -> s { Annex.daemon = True }
|
||||||
pidfile <- fromRepo gitAnnexPidFile
|
pidfile <- fromRepo gitAnnexPidFile
|
||||||
logfile <- fromRepo gitAnnexLogFile
|
logfile <- fromRepo gitAnnexLogFile
|
||||||
logfd <- liftIO $ openLog logfile
|
logfd <- liftIO $ openLog logfile
|
||||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -11,6 +11,8 @@ git-annex (4.20130522) UNRELEASED; urgency=low
|
||||||
is sometimes on a different filesystem than the data directory.
|
is sometimes on a different filesystem than the data directory.
|
||||||
* Fix bug in parsing of parens in some preferred content expressions.
|
* Fix bug in parsing of parens in some preferred content expressions.
|
||||||
This fixes the behavior of the manual mode group.
|
This fixes the behavior of the manual mode group.
|
||||||
|
* assistant: Work around git-cat-file's not reloading the index after files
|
||||||
|
are staged.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Tue, 21 May 2013 18:22:46 -0400
|
-- Joey Hess <joeyh@debian.org> Tue, 21 May 2013 18:22:46 -0400
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue