summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-12-30 18:36:40 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-12-30 18:36:40 -0400
commit52104dae6f5175f01395a657fd40423d1196604a (patch)
tree804e1f76ee4cd930375d13f70121a634fe675dcd
parent56488e807bcc7dcc6e9f5b3e359ddf4f4fb5d8d1 (diff)
refactor
-rw-r--r--Annex/Branch.hs2
-rw-r--r--Command/Sync.hs14
-rw-r--r--Git/Ref.hs13
3 files changed, 14 insertions, 15 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs
index 8c9d1582a..d3a81d8e5 100644
--- a/Annex/Branch.hs
+++ b/Annex/Branch.hs
@@ -58,7 +58,7 @@ hasSibling = not . null <$> siblingBranches
{- List of git-annex (refs, branches), including the main one and any
- from remotes. Duplicate refs are filtered out. -}
siblingBranches :: Annex [(Git.Ref, Git.Branch)]
-siblingBranches = inRepo $ Git.Ref.matching name
+siblingBranches = inRepo $ Git.Ref.matchingUniq name
{- Creates the branch, if it does not already exist. -}
create :: Annex ()
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 1c20c409c..e5f23e63e 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -46,18 +46,12 @@ syncRemotes branch [] = defaultSyncRemotes branch
syncRemotes _ rs = mapM Remote.byName rs
defaultSyncRemotes :: Git.Ref -> Annex [Remote.Remote Annex]
-defaultSyncRemotes syncbranch = mapM Remote.byName
- =<< process . L.unpack <$> inRepo showref
+defaultSyncRemotes syncbranch = mapM Remote.byName =<<
+ map getRemoteName . filter isRemote . map (show . snd) <$>
+ inRepo (Git.Ref.matching $ Git.Ref.base syncbranch)
where
- showref = Git.Command.pipeRead
- [ Param "show-ref"
- , Param $ show $ Git.Ref.base syncbranch
- ]
- process = map getRemoteName . filter isRemote .
- map getBranchName . lines
- isRemote r = "refs/remotes/" `isPrefixOf` r
- getBranchName = snd . separate (== ' ')
getRemoteName = fst . separate (== '/') . snd . separate (== '/') . snd . separate (== '/')
+ isRemote r = "refs/remotes/" `isPrefixOf` r
commit :: CommandStart
commit = do
diff --git a/Git/Ref.hs b/Git/Ref.hs
index 3341cf648..557d24a37 100644
--- a/Git/Ref.hs
+++ b/Git/Ref.hs
@@ -48,13 +48,18 @@ sha branch repo = process . L.unpack <$> showref repo
process [] = Nothing
process s = Just $ Ref $ firstLine s
-{- List of (refs, branches) matching a given ref spec.
- - Duplicate refs are filtered out. -}
+{- List of (refs, branches) matching a given ref spec. -}
matching :: Ref -> Repo -> IO [(Ref, Branch)]
matching ref repo = do
r <- pipeRead [Param "show-ref", Param $ show ref] repo
- return $ nubBy uniqref $ map (gen . L.unpack) (L.lines r)
+ return $ map (gen . L.unpack) (L.lines r)
where
- uniqref (a, _) (b, _) = a == b
gen l = let (r, b) = separate (== ' ') l in
(Ref r, Ref b)
+
+{- List of (refs, branches) matching a given ref spec.
+ - Duplicate refs are filtered out. -}
+matchingUniq :: Ref -> Repo -> IO [(Ref, Branch)]
+matchingUniq ref repo = nubBy uniqref <$> matching ref repo
+ where
+ uniqref (a, _) (b, _) = a == b