else return $ "merging " ++
unwords (map Git.Ref.describe branches) ++
" into " ++ fromRef name
- localtransitions <- parseTransitionsStrictly "local"
- <$> getLocal transitionsLog
+ localtransitions <- getLocalTransitions
unless (null tomerge) $ do
showSideAction merge_desc
mapM_ checkBranchDifferences refs
removeWhenExistsWith (R.removeLink) (toRawFilePath jlogf)
openjlog tmpdir = liftIO $ openTmpFileIn tmpdir "jlog"
+getLocalTransitions :: Annex Transitions
+getLocalTransitions =
+ parseTransitionsStrictly "local"
+ <$> getLocal transitionsLog
+
{- This is run after the refs have been merged into the index,
- but before the result is committed to the branch.
- (Which is why it's passed the contents of the local branches's
-}
handleTransitions :: JournalLocked -> Transitions -> [Git.Ref] -> Annex Bool
handleTransitions jl localts refs = do
- m <- M.fromList <$> mapM getreftransition refs
+ m <- M.fromList <$> mapM getRefTransitions refs
let remotets = M.elems m
if all (localts ==) remotets
then return False
performTransitionsLocked jl allts (localts /= allts) transitionedrefs
ignoreRefs untransitionedrefs
return True
- where
- getreftransition ref = do
- ts <- parseTransitionsStrictly "remote"
- <$> catFile ref transitionsLog
- return (ref, ts)
{- Performs the specified transitions on the contents of the index file,
- commits it to the branch, or creates a new branch.
- done that is listed in the remote branch by checking that the local
- branch contains the same transition, with the same or newer start time.
-
- - Copyright 2013-2019 Joey Hess <id@joeyh.name>
+ - Copyright 2013-2021 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
import Annex.Common
import Annex.VectorClock
import Logs.Line
+import qualified Git
+import Git.Types (fromRef)
+import Annex.CatFile
import qualified Data.Set as S
import Data.Either
recordTransitions :: (RawFilePath -> (L.ByteString -> Builder) -> Annex ()) -> Transitions -> Annex ()
recordTransitions changer t = changer transitionsLog $
buildTransitions . S.union t . parseTransitionsStrictly "local"
+
+getRefTransitions :: Git.Ref -> Annex (Git.Ref, Transitions)
+getRefTransitions ref = do
+ ts <- parseTransitionsStrictly (fromRef ref)
+ <$> catFile ref transitionsLog
+ return (ref, ts)