diff --git a/Assistant/Sync.hs b/Assistant/Sync.hs index cff4f95e0f..fe578ab438 100644 --- a/Assistant/Sync.hs +++ b/Assistant/Sync.hs @@ -115,7 +115,8 @@ pushToRemotes' now notifypushes remotes = do ret <- go True branch g u normalremotes unless (null xmppremotes) $ do shas <- liftAnnex $ map fst <$> - inRepo (Git.Ref.matching [Annex.Branch.fullname, Git.Ref.headRef]) + inRepo (Git.Ref.matchingWithHEAD + [Annex.Branch.fullname, Git.Ref.headRef]) forM_ xmppremotes $ \r -> sendNetMessage $ Pushing (getXMPPClientID r) (CanPush u shas) return ret diff --git a/Git/Ref.hs b/Git/Ref.hs index d6e31897cb..954b61a2e5 100644 --- a/Git/Ref.hs +++ b/Git/Ref.hs @@ -59,8 +59,16 @@ sha branch repo = process <$> showref repo {- List of (shas, branches) matching a given ref or refs. -} matching :: [Ref] -> Repo -> IO [(Sha, Branch)] -matching refs repo = map gen . lines <$> - pipeReadStrict (Param "show-ref" : map (Param . show) refs) repo +matching refs repo = matching' (map show refs) repo + +{- Includes HEAD in the output, if asked for it. -} +matchingWithHEAD :: [Ref] -> Repo -> IO [(Sha, Branch)] +matchingWithHEAD refs repo = matching' ("--head" : map show refs) repo + +{- List of (shas, branches) matching a given ref or refs. -} +matching' :: [String] -> Repo -> IO [(Sha, Branch)] +matching' ps repo = map gen . lines <$> + pipeReadStrict (Param "show-ref" : map Param ps) repo where gen l = let (r, b) = separate (== ' ') l in (Ref r, Ref b)