avoid redundant adjusted branch update in sync
sync still does update it if the config would otherwise not, since it already did.
This commit is contained in:
parent
805af01562
commit
631c8d3e5b
2 changed files with 22 additions and 16 deletions
|
@ -21,8 +21,8 @@ module Annex.AdjustedBranch (
|
|||
fromAdjustedBranch,
|
||||
getAdjustment,
|
||||
enterAdjustedBranch,
|
||||
updateAdjustedBranch,
|
||||
adjustedBranchRefresh,
|
||||
adjustedBranchRefreshFull,
|
||||
adjustBranch,
|
||||
adjustTree,
|
||||
adjustToCrippledFileSystem,
|
||||
|
@ -296,7 +296,7 @@ adjustedBranchRefresh _af a = do
|
|||
ifM (checkcounter n)
|
||||
( update adj origbranch
|
||||
, Annex.addCleanup AdjustedBranchUpdate $
|
||||
update adj origbranch
|
||||
adjustedBranchRefreshFull adj origbranch
|
||||
)
|
||||
_ -> return ()
|
||||
|
||||
|
@ -310,19 +310,25 @@ adjustedBranchRefresh _af a = do
|
|||
!s' = s { Annex.adjustedbranchrefreshcounter = c' }
|
||||
in pure (s', enough)
|
||||
|
||||
-- TODO This is very slow when run a lot of times.
|
||||
-- Incrementally adjust only the AssociatedFile.
|
||||
-- However, this should be run once at shutdown then,
|
||||
-- because other files than the provided AssociatedFile
|
||||
-- can need to be updated in some edge cases.
|
||||
update adj origbranch = do
|
||||
-- Flush the queue, to make any pending changes be written
|
||||
-- out to disk. But mostly so any pointer files
|
||||
-- restagePointerFile was called on get updated so git
|
||||
-- checkout won't fall over.
|
||||
Annex.Queue.flush
|
||||
-- This is slow, it would be better to incrementally
|
||||
-- adjust the AssociatedFile, and only call this once
|
||||
-- at shutdown to handle cases where not all
|
||||
-- AssociatedFiles are known.
|
||||
adjustedBranchRefreshFull adj origbranch
|
||||
|
||||
{- Slow, but more dependable version of adjustedBranchRefresh that
|
||||
- does not rely on all AssociatedFiles being known. -}
|
||||
adjustedBranchRefreshFull :: Adjustment -> OrigBranch -> Annex ()
|
||||
adjustedBranchRefreshFull adj origbranch = do
|
||||
let adjbranch = originalToAdjusted origbranch adj
|
||||
void $ updateAdjustedBranch adj adjbranch origbranch
|
||||
unlessM (updateAdjustedBranch adj adjbranch origbranch) $
|
||||
warning $ unwords [ "Updating adjusted branch failed." ]
|
||||
|
||||
adjustToCrippledFileSystem :: Annex ()
|
||||
adjustToCrippledFileSystem = do
|
||||
|
|
|
@ -407,17 +407,17 @@ updateBranches (Nothing, _) = noop
|
|||
updateBranches (Just branch, madj) = do
|
||||
-- When in an adjusted branch, propigate any changes made to it
|
||||
-- back to the original branch. The adjusted branch may also need
|
||||
-- to be updated, if the adjustment is not stable.
|
||||
-- to be updated, if the adjustment is not stable, and the usual
|
||||
-- configuration does not update it.
|
||||
case madj of
|
||||
Nothing -> noop
|
||||
Just adj -> do
|
||||
let origbranch = branch
|
||||
propigateAdjustedCommits origbranch adj
|
||||
unless (adjustmentIsStable adj) $ do
|
||||
showSideAction "updating adjusted branch"
|
||||
let adjbranch = originalToAdjusted origbranch adj
|
||||
unlessM (updateAdjustedBranch adj adjbranch origbranch) $
|
||||
warning $ unwords [ "Updating adjusted branch failed." ]
|
||||
unless (adjustmentIsStable adj) $
|
||||
annexAdjustedBranchRefresh <$> Annex.getGitConfig >>= \case
|
||||
0 -> adjustedBranchRefreshFull adj origbranch
|
||||
_ -> return ()
|
||||
|
||||
-- Update the sync branch to match the new state of the branch
|
||||
inRepo $ updateBranch (syncBranch branch) branch
|
||||
|
|
Loading…
Reference in a new issue