diff --git a/Command/Sync.hs b/Command/Sync.hs index 85bb8c1058..332daca73e 100644 --- a/Command/Sync.hs +++ b/Command/Sync.hs @@ -417,7 +417,7 @@ pushRemote o remote (Just branch, _) = stopUnless (pure (pushOption o) <&&> need -- Do updateInstead emulation for remotes on eg removable drives -- formatted FAT, where the post-update hook won't run. postpushupdate - | maybe False annexCrippledFileSystem (remoteGitConfig (Remote.gitconfig remote)) = + | annexCrippledFileSystem (remoteGitConfig (Remote.gitconfig remote)) = case Git.repoWorkTree (Remote.repo remote) of Nothing -> return True Just wt -> ifM (Remote.Git.onLocal remote needUpdateInsteadEmulation) diff --git a/Remote/GCrypt.hs b/Remote/GCrypt.hs index f1b48cdd28..ba28a7728c 100644 --- a/Remote/GCrypt.hs +++ b/Remote/GCrypt.hs @@ -119,7 +119,7 @@ gen' r u c gc = do , config = c , localpath = localpathCalc r , repo = r - , gitconfig = gc { remoteGitConfig = Just $ extractGitConfig r } + , gitconfig = gc { remoteGitConfig = extractGitConfig r } , readonly = Git.repoIsHttp r , availability = availabilityCalc r , remotetype = remote diff --git a/Remote/Git.hs b/Remote/Git.hs index 78213f4f7c..5c69473fd9 100644 --- a/Remote/Git.hs +++ b/Remote/Git.hs @@ -165,8 +165,7 @@ gen r u c gc , config = c , localpath = localpathCalc r , repo = r - , gitconfig = gc - { remoteGitConfig = Just $ extractGitConfig r } + , gitconfig = gc { remoteGitConfig = extractGitConfig r } , readonly = Git.repoIsHttp r , availability = availabilityCalc r , remotetype = remote @@ -351,7 +350,7 @@ keyUrls r key = map tourl locs' locs' = map (replace "\\" "/") locs #endif remoteconfig = gitconfig r - cfg = fromJust $ remoteGitConfig remoteconfig + cfg = remoteGitConfig remoteconfig dropKey :: Remote -> Key -> Annex Bool dropKey r key @@ -520,7 +519,7 @@ copyFromRemoteCheap :: Remote -> Key -> AssociatedFile -> FilePath -> Annex Bool copyFromRemoteCheap r key af file | not $ Git.repoIsUrl (repo r) = guardUsable (repo r) (return False) $ liftIO $ do loc <- gitAnnexLocation key (repo r) $ - fromJust $ remoteGitConfig $ gitconfig r + remoteGitConfig $ gitconfig r ifM (doesFileExist loc) ( do absloc <- absPath loc diff --git a/Remote/P2P.hs b/Remote/P2P.hs index ca555c30d2..118262b3ca 100644 --- a/Remote/P2P.hs +++ b/Remote/P2P.hs @@ -63,7 +63,7 @@ chainGen addr r u c gc = do , config = c , localpath = Nothing , repo = r - , gitconfig = gc { remoteGitConfig = Just $ extractGitConfig r } + , gitconfig = gc { remoteGitConfig = extractGitConfig r } , readonly = False , availability = GloballyAvailable , remotetype = remote diff --git a/Types/GitConfig.hs b/Types/GitConfig.hs index 714038070f..f66136cb1c 100644 --- a/Types/GitConfig.hs +++ b/Types/GitConfig.hs @@ -88,6 +88,7 @@ data GitConfig = GitConfig , receiveDenyCurrentBranch :: DenyCurrentBranch , gcryptId :: Maybe String , gpgCmd :: GpgCmd + , gitConfigRepo :: Git.Repo } extractGitConfig :: Git.Repo -> GitConfig @@ -148,6 +149,7 @@ extractGitConfig r = GitConfig , receiveDenyCurrentBranch = getDenyCurrentBranch r , gcryptId = getmaybe "core.gcrypt-id" , gpgCmd = mkGpgCmd (getmaybe "gpg.program") + , gitConfigRepo = r } where getbool k d = fromMaybe d $ getmaybebool k @@ -216,7 +218,7 @@ data RemoteGitConfig = RemoteGitConfig , remoteAnnexHookType :: Maybe String , remoteAnnexExternalType :: Maybe String {- A regular git remote's git repository config. -} - , remoteGitConfig :: Maybe GitConfig + , remoteGitConfig :: GitConfig } extractRemoteGitConfig :: Git.Repo -> String -> RemoteGitConfig @@ -252,7 +254,7 @@ extractRemoteGitConfig r remotename = RemoteGitConfig , remoteAnnexDdarRepo = getmaybe "ddarrepo" , remoteAnnexHookType = notempty $ getmaybe "hooktype" , remoteAnnexExternalType = notempty $ getmaybe "externaltype" - , remoteGitConfig = Nothing + , remoteGitConfig = extractGitConfig r } where getbool k d = fromMaybe d $ getmaybebool k