fix breakage caught by test suite
Can't use show-ref --tags --branches, as that omits remote branches. Instead, filter out the synced refs directly.
This commit is contained in:
parent
240711d1ae
commit
084aba8aaf
3 changed files with 13 additions and 14 deletions
|
@ -138,7 +138,7 @@ pushToRemotes threadname now st mpushmap remotes = do
|
|||
refspec b = concat
|
||||
[ s
|
||||
, ":"
|
||||
, "refs" </> "synced" </> fromUUID u </> s
|
||||
, "refs/synced/" ++ fromUUID u ++ "/" ++ s
|
||||
]
|
||||
where s = show $ Git.Ref.base b
|
||||
|
||||
|
|
|
@ -251,16 +251,15 @@ withKeysReferencedInGit a = do
|
|||
rs <- relevantrefs <$> showref
|
||||
forM_ rs (withKeysReferencedInGitRef a)
|
||||
where
|
||||
{- List heads and tags, but not other refs used in syncing. -}
|
||||
showref = inRepo $ Git.Command.pipeRead
|
||||
[Param "show-ref", Param "--heads", Param "--tags"]
|
||||
showref = inRepo $ Git.Command.pipeRead [Param "show-ref"]
|
||||
relevantrefs = map (Git.Ref . snd) .
|
||||
nubBy uniqref .
|
||||
filter ourbranches .
|
||||
map (separate (== ' ')) . lines
|
||||
uniqref (x, _) (y, _) = x == y
|
||||
ourbranchend = '/' : show Annex.Branch.name
|
||||
ourbranches (_, b) = not $ ourbranchend `isSuffixOf` b
|
||||
ourbranches (_, b) = not (ourbranchend `isSuffixOf` b)
|
||||
&& not ("refs/synced/" `isPrefixOf` b)
|
||||
|
||||
withKeysReferencedInGitRef :: (Key -> Annex ()) -> Git.Ref -> Annex ()
|
||||
withKeysReferencedInGitRef a ref = do
|
||||
|
|
18
test.hs
18
test.hs
|
@ -475,33 +475,33 @@ test_unused = "git-annex unused/dropunused" ~: intmpclonerepo $ do
|
|||
sha1annexedfilekey <- annexeval $ findkey sha1annexedfile
|
||||
git_annex "get" [annexedfile] @? "get of file failed"
|
||||
git_annex "get" [sha1annexedfile] @? "get of file failed"
|
||||
checkunused []
|
||||
checkunused [] "after get"
|
||||
boolSystem "git" [Params "rm -q", File annexedfile] @? "git rm failed"
|
||||
checkunused []
|
||||
checkunused [] "after rm"
|
||||
boolSystem "git" [Params "commit -q -m foo"] @? "git commit failed"
|
||||
checkunused []
|
||||
checkunused [] "after commit"
|
||||
-- unused checks origin/master; once it's gone it is really unused
|
||||
boolSystem "git" [Params "remote rm origin"] @? "git remote rm origin failed"
|
||||
checkunused [annexedfilekey]
|
||||
checkunused [annexedfilekey] "after origin branches are gone"
|
||||
boolSystem "git" [Params "rm -q", File sha1annexedfile] @? "git rm failed"
|
||||
boolSystem "git" [Params "commit -q -m foo"] @? "git commit failed"
|
||||
checkunused [annexedfilekey, sha1annexedfilekey]
|
||||
checkunused [annexedfilekey, sha1annexedfilekey] "after rm sha1annexedfile"
|
||||
|
||||
-- good opportunity to test dropkey also
|
||||
git_annex "dropkey" ["--force", Types.Key.key2file annexedfilekey]
|
||||
@? "dropkey failed"
|
||||
checkunused [sha1annexedfilekey]
|
||||
checkunused [sha1annexedfilekey] ("after dropkey --force " ++ Types.Key.key2file annexedfilekey)
|
||||
|
||||
git_annex "dropunused" ["1", "2"] @? "dropunused failed"
|
||||
checkunused []
|
||||
checkunused [] "after dropunused"
|
||||
git_annex "dropunused" ["10", "501"] @? "dropunused failed on bogus numbers"
|
||||
|
||||
where
|
||||
checkunused expectedkeys = do
|
||||
checkunused expectedkeys desc = do
|
||||
git_annex "unused" [] @? "unused failed"
|
||||
unusedmap <- annexeval $ Logs.Unused.readUnusedLog ""
|
||||
let unusedkeys = M.elems unusedmap
|
||||
assertEqual "unused keys differ"
|
||||
assertEqual ("unused keys differ " ++ desc)
|
||||
(sort expectedkeys) (sort unusedkeys)
|
||||
findkey f = do
|
||||
r <- Backend.lookupFile f
|
||||
|
|
Loading…
Reference in a new issue