go cur indexcache (Just newtree) = do
oldtree <- getoldtree
when (oldtree /= newtree) $ do
+ fastDebug "Database.Keys" "reconcileStaged start"
g <- Annex.gitRepo
void $ catstream $ \mdfeeder ->
void $ updatetodiff g
-- get garbage collected, and is available to diff
-- against next time.
inRepo $ update' lastindexref newtree
+ fastDebug "Database.Keys" "reconcileStaged end"
-- git write-tree will fail if the index is locked or when there is
-- a merge conflict. To get up-to-date with the current index,
-- diff --staged with the old index tree. The current index tree
-- version of the files that are conflicted. So a second diff
-- is done, with --staged but no old tree.
go _ _ Nothing = do
+ fastDebug "Database.Keys" "reconcileStaged start (in conflict)"
oldtree <- getoldtree
g <- Annex.gitRepo
catstream $ \mdfeeder -> do
when conflicted $
void $ updatetodiff g Nothing "--staged"
(procmergeconflictdiff mdfeeder)
+ fastDebug "Database.Keys" "reconcileStaged end"
updatetodiff g old new processor = do
(l, cleanup) <- pipeNullSplit' (diff old new) g
--- /dev/null
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 11"""
+ date="2021-06-08T15:41:23Z"
+ content="""
+I can't think of anything OSX specific in the recent changes.
+
+I have added debugging of when reconcileStaged wakes up and possibly
+wastes some time, eg:
+
+ joey@darkstar:~/tmp/big> git config annex.debug true
+ joey@darkstar:~/tmp/big> git config annex.debugfilter Database.Keys
+ joey@darkstar:~/tmp/big> git-annex init
+ init
+ [2021-06-08 11:52:11.854202926] (Database.Keys) reconcileStaged start
+ (scanning for annexed files...)
+ [2021-06-08 11:52:44.092620256] (Database.Keys) reconcileStaged end
+ ok
+
+All the new work happens in between those two debugs, so you could check if
+the time sink is there or elsewhere.
+
+(Note that the last release takes 2 seconds longer for that init than
+it does now..)
+"""]]