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:
Joey Hess 2012-09-21 00:49:48 -04:00
parent 240711d1ae
commit 084aba8aaf
3 changed files with 13 additions and 14 deletions

View file

@ -138,7 +138,7 @@ pushToRemotes threadname now st mpushmap remotes = do
refspec b = concat refspec b = concat
[ s [ s
, ":" , ":"
, "refs" </> "synced" </> fromUUID u </> s , "refs/synced/" ++ fromUUID u ++ "/" ++ s
] ]
where s = show $ Git.Ref.base b where s = show $ Git.Ref.base b

View file

@ -251,16 +251,15 @@ withKeysReferencedInGit a = do
rs <- relevantrefs <$> showref rs <- relevantrefs <$> showref
forM_ rs (withKeysReferencedInGitRef a) forM_ rs (withKeysReferencedInGitRef a)
where where
{- List heads and tags, but not other refs used in syncing. -} showref = inRepo $ Git.Command.pipeRead [Param "show-ref"]
showref = inRepo $ Git.Command.pipeRead
[Param "show-ref", Param "--heads", Param "--tags"]
relevantrefs = map (Git.Ref . snd) . relevantrefs = map (Git.Ref . snd) .
nubBy uniqref . nubBy uniqref .
filter ourbranches . filter ourbranches .
map (separate (== ' ')) . lines map (separate (== ' ')) . lines
uniqref (x, _) (y, _) = x == y uniqref (x, _) (y, _) = x == y
ourbranchend = '/' : show Annex.Branch.name 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 :: (Key -> Annex ()) -> Git.Ref -> Annex ()
withKeysReferencedInGitRef a ref = do withKeysReferencedInGitRef a ref = do

18
test.hs
View file

@ -475,33 +475,33 @@ test_unused = "git-annex unused/dropunused" ~: intmpclonerepo $ do
sha1annexedfilekey <- annexeval $ findkey sha1annexedfile sha1annexedfilekey <- annexeval $ findkey sha1annexedfile
git_annex "get" [annexedfile] @? "get of file failed" git_annex "get" [annexedfile] @? "get of file failed"
git_annex "get" [sha1annexedfile] @? "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" boolSystem "git" [Params "rm -q", File annexedfile] @? "git rm failed"
checkunused [] checkunused [] "after rm"
boolSystem "git" [Params "commit -q -m foo"] @? "git commit failed" 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 -- unused checks origin/master; once it's gone it is really unused
boolSystem "git" [Params "remote rm origin"] @? "git remote rm origin failed" 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 "rm -q", File sha1annexedfile] @? "git rm failed"
boolSystem "git" [Params "commit -q -m foo"] @? "git commit 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 -- good opportunity to test dropkey also
git_annex "dropkey" ["--force", Types.Key.key2file annexedfilekey] git_annex "dropkey" ["--force", Types.Key.key2file annexedfilekey]
@? "dropkey failed" @? "dropkey failed"
checkunused [sha1annexedfilekey] checkunused [sha1annexedfilekey] ("after dropkey --force " ++ Types.Key.key2file annexedfilekey)
git_annex "dropunused" ["1", "2"] @? "dropunused failed" git_annex "dropunused" ["1", "2"] @? "dropunused failed"
checkunused [] checkunused [] "after dropunused"
git_annex "dropunused" ["10", "501"] @? "dropunused failed on bogus numbers" git_annex "dropunused" ["10", "501"] @? "dropunused failed on bogus numbers"
where where
checkunused expectedkeys = do checkunused expectedkeys desc = do
git_annex "unused" [] @? "unused failed" git_annex "unused" [] @? "unused failed"
unusedmap <- annexeval $ Logs.Unused.readUnusedLog "" unusedmap <- annexeval $ Logs.Unused.readUnusedLog ""
let unusedkeys = M.elems unusedmap let unusedkeys = M.elems unusedmap
assertEqual "unused keys differ" assertEqual ("unused keys differ " ++ desc)
(sort expectedkeys) (sort unusedkeys) (sort expectedkeys) (sort unusedkeys)
findkey f = do findkey f = do
r <- Backend.lookupFile f r <- Backend.lookupFile f