, do
b <- preventCommits $ const $
adjustBranch adj origbranch
- checkoutAdjustedBranch b []
+ checkoutAdjustedBranch b False
)
-checkoutAdjustedBranch :: AdjBranch -> [CommandParam] -> Annex Bool
-checkoutAdjustedBranch (AdjBranch b) checkoutparams = do
- showOutput -- checkout can have output in large repos
+checkoutAdjustedBranch :: AdjBranch -> Bool -> Annex Bool
+checkoutAdjustedBranch (AdjBranch b) quietcheckout = do
+ -- checkout can have output in large repos
+ unless quietcheckout
+ showOutput
inRepo $ Git.Command.runBool $
[ Param "checkout"
, Param $ fromRef $ Git.Ref.base b
- -- always show checkout progress, even if --quiet is used
- -- to suppress other messages
- , Param "--progress"
- ] ++ checkoutparams
+ , if quietcheckout then Param "--quiet" else Param "--progress"
+ ]
{- Already in a branch with this adjustment, but the user asked to enter it
- again. This should have the same result as propagating any commits
-- Make git checkout quiet to avoid warnings about
-- disconnected branch tips being lost.
- checkoutAdjustedBranch b [Param "--quiet"]
+ checkoutAdjustedBranch b True
| otherwise = preventCommits $ \commitlck -> do
-- Done for consistency.
_ <- propigateAdjustedCommits' origbranch adj commitlck
checkcounter n
-- Special case, 1 (or true) refreshes only at shutdown.
| n == 1 = pure False
- | n == 2 = pure True
| otherwise = Annex.withState $ \s ->
let !c = Annex.adjustedbranchrefreshcounter s + 1
!enough = c >= pred n
_ -> do
let adjbranch = originalToAdjusted currbranch adj
ifM (inRepo (Git.Ref.exists $ adjBranch adjbranch))
- ( unlessM (checkoutAdjustedBranch adjbranch []) $
+ ( unlessM (checkoutAdjustedBranch adjbranch False) $
failedenter
, unlessM (enterAdjustedBranch adj) $
failedenter
controls how frequently the branch is refreshed.
Refreshing the branch takes some time, so doing it after every file
- can be too slow. The default value is 0 (or false), which does not
- refresh the branch. 1 (or true) will refresh once, after git-annex
- has made other changes. Higher values refresh after approximately that
- many files need to be updated. Ie, 2 refreshes after every file,
- and 100 after every 99 files.
+ can be too slow. (It also can generate a lot of dangling git objects.)
+ The default value is 0 (or false), which does not
+ refresh the branch. Setting 1 (or true) will refresh only once,
+ after git-annex has made other changes. Setting 2 refreshes after every
+ file, 3 after every other file, and so on; setting 100 refreshes after
+ every 99 files.
(If git-annex gets faster in the future, refresh rates will increase
proportional to the speed improvements.)