git annex add in adjusted unlocked branch
Cached the current branch lookup just because it seems unnecessary overhead to run an extra git command per add to query the current branch.
This commit is contained in:
parent
4226ae1040
commit
42b7ccc89f
4 changed files with 29 additions and 5 deletions
|
@ -12,6 +12,7 @@ module Annex.AdjustedBranch (
|
|||
originalToAdjusted,
|
||||
adjustedToOriginal,
|
||||
fromAdjustedBranch,
|
||||
getAdjustment,
|
||||
enterAdjustedBranch,
|
||||
updateAdjustedBranch,
|
||||
propigateAdjustedCommits,
|
||||
|
@ -45,7 +46,7 @@ data Adjustment
|
|||
| LockAdjustment
|
||||
| HideMissingAdjustment
|
||||
| ShowMissingAdjustment
|
||||
deriving (Show)
|
||||
deriving (Show, Eq)
|
||||
|
||||
reverseAdjustment :: Adjustment -> Adjustment
|
||||
reverseAdjustment UnlockAdjustment = LockAdjustment
|
||||
|
@ -122,6 +123,9 @@ adjustedToOriginal b
|
|||
bs = fromRef b
|
||||
prefixlen = length adjustedBranchPrefix
|
||||
|
||||
getAdjustment :: Branch -> Maybe Adjustment
|
||||
getAdjustment = fmap fst . adjustedToOriginal
|
||||
|
||||
fromAdjustedBranch :: Branch -> OrigBranch
|
||||
fromAdjustedBranch b = maybe b snd (adjustedToOriginal b)
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ import Logs.Location
|
|||
import qualified Annex
|
||||
import qualified Annex.Queue
|
||||
import qualified Database.Keys
|
||||
import qualified Git
|
||||
import qualified Git.Branch
|
||||
import Config
|
||||
import Utility.InodeCache
|
||||
import Annex.ReplaceFile
|
||||
|
@ -43,6 +45,7 @@ import Utility.CopyFile
|
|||
import Utility.Touch
|
||||
import Git.FilePath
|
||||
import Annex.InodeSentinal
|
||||
import Annex.AdjustedBranch
|
||||
|
||||
import Control.Exception (IOException)
|
||||
|
||||
|
@ -309,15 +312,32 @@ forceParams = ifM (Annex.getState Annex.force)
|
|||
)
|
||||
|
||||
{- Whether a file should be added unlocked or not. Default is to not,
|
||||
- unless symlinks are not supported. annex.addunlocked can override that. -}
|
||||
- unless symlinks are not supported. annex.addunlocked can override that.
|
||||
- Also, when in an adjusted unlocked branch, always add files unlocked.
|
||||
-}
|
||||
addUnlocked :: Annex Bool
|
||||
addUnlocked = isDirect <||>
|
||||
(versionSupportsUnlockedPointers <&&>
|
||||
((not . coreSymlinks <$> Annex.getGitConfig) <||>
|
||||
(annexAddUnlocked <$> Annex.getGitConfig)
|
||||
(annexAddUnlocked <$> Annex.getGitConfig) <||>
|
||||
(maybe False (\b -> getAdjustment b == Just UnlockAdjustment) <$> cachedCurrentBranch)
|
||||
)
|
||||
)
|
||||
|
||||
cachedCurrentBranch :: Annex (Maybe Git.Branch)
|
||||
cachedCurrentBranch = maybe cache (return . Just)
|
||||
=<< Annex.getState Annex.cachedcurrentbranch
|
||||
where
|
||||
cache :: Annex (Maybe Git.Branch)
|
||||
cache = do
|
||||
mb <- inRepo Git.Branch.currentUnsafe
|
||||
case mb of
|
||||
Nothing -> return Nothing
|
||||
Just b -> do
|
||||
Annex.changeState $ \s ->
|
||||
s { Annex.cachedcurrentbranch = Just b }
|
||||
return (Just b)
|
||||
|
||||
{- Adds a file to the work tree for the key, and stages it in the index.
|
||||
- The content of the key may be provided in a temp file, which will be
|
||||
- moved into place. -}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue