deal with cloning a repo that has an ajdusted branch checked out

This commit is contained in:
Joey Hess 2016-04-04 13:51:42 -04:00
parent 83ac453bc4
commit 7c7f3a0f76
Failed to extract signature
3 changed files with 16 additions and 2 deletions

View file

@ -18,6 +18,7 @@ module Annex.AdjustedBranch (
adjustToCrippledFileSystem,
updateAdjustedBranch,
propigateAdjustedCommits,
checkAdjustedClone,
) where
import Annex.Common
@ -419,3 +420,17 @@ diffTreeToTreeItem dti = TreeItem
(Git.DiffTree.file dti)
(Git.DiffTree.dstmode dti)
(Git.DiffTree.dstsha dti)
{- Cloning a repository that has an adjusted branch checked out will
- result in the clone having the same adjusted branch checked out -- but
- the origbranch won't exist in the clone. Create the origbranch. -}
checkAdjustedClone :: Annex ()
checkAdjustedClone = go =<< inRepo Git.Branch.current
where
go Nothing = return ()
go (Just currbranch) = case adjustedToOriginal currbranch of
Nothing -> return ()
Just (_adj, origbranch) ->
unlessM (inRepo $ Git.Ref.exists origbranch) $ do
let remotebranch = Git.Ref.underBase "refs/remotes/origin" origbranch
inRepo $ Git.Branch.update' origbranch remotebranch