Commits

Stefan Saasen committed ad55448

Properly partition the list of refs in 'createRefs'

Comments (0)

Files changed (1)

src/Git/Store/ObjectStore.hs

 import System.FilePath
 import System.Directory
 import Data.Foldable                                        (forM_)
-import Data.List                                            (find)
+import Data.List                                            (find, partition)
 import Control.Monad.Reader hiding (forM_)
 
 createGitRepositoryFromPackfile :: FilePath -> [Ref] -> WithRepository ()
 
 createRefs :: [Ref] -> WithRepository ()
 createRefs refs = do
-    writeRefs "refs/remotes/origin" $ filterTags refs
-    writeRefs "refs/tags" $ tags refs
+    let (tags, branches) = partition isTag $ filter (not . isPeeledTag) refs
+    writeRefs "refs/remotes/origin" branches
+    writeRefs "refs/tags" tags
     where simpleRefName  = head . reverse . C.split '/'
-          filterTags     = filter (not . C.isPrefixOf "refs/tags" . getRefName)
-          tags           = filter (\e -> (not . C.isSuffixOf "^{}" $ getRefName e) && (C.isPrefixOf "refs/tags" $ getRefName e))
+          isPeeledTag    = C.isSuffixOf "^{}" . getRefName
+          isTag          = (\e -> (not . C.isSuffixOf "^{}" $ getRefName e) && (C.isPrefixOf "refs/tags" $ getRefName e))
           writeRefs refSpace     = mapM_ (\Ref{..} -> createRef (refSpace ++ "/" ++ (C.unpack . simpleRefName $ getRefName)) (C.unpack getObjId)) 
 
 createRef :: String -> String -> WithRepository ()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.