diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-03-02 16:43:44 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-03-02 16:43:44 -0400 |
commit | 9b4db1bab69b678a13a1d0d2ca74a48626364c93 (patch) | |
tree | cab518e0c5b6575509fc36ebb23ff686cb3007f2 /Git | |
parent | 8f4da219cd9989092afa6a8873421894a6f73eb4 (diff) |
Submodules are now supported by git-annex!
Seems to work, but still experimental until it's been tested more.
When repositories are on filesystems not supporting symlinks, the .git dir
symlink trick cannot be used. Since we're going to be in direct mode
anyway, the .git dir symlink is not strictly needed.
However, I have not fixed the code that creates new annex symlinks to
handle this case -- the committed symlinks will be wrong.
git annex sync happens to currently fail in a submodule using direct mode,
because there's no HEAD ref. That also needs to be dealt with to get
this fully working in crippled filesystems.
Leaving http://github.com/datalad/datalad/issues/44 open until these issues
are dealt with.
Diffstat (limited to 'Git')
-rw-r--r-- | Git/Config.hs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Git/Config.hs b/Git/Config.hs index 44e0ad9a9..3d6239560 100644 --- a/Git/Config.hs +++ b/Git/Config.hs @@ -14,6 +14,7 @@ import Common import Git import Git.Types import qualified Git.Construct +import qualified Git.Command import Utility.UserInfo {- Returns a single git config setting, or a default value if not set. -} @@ -193,3 +194,17 @@ changeFile f k v = boolSystem "git" , Param k , Param v ] + +{- Unsets a git config setting, in both the git repo, + - and the cached config in the Repo. + - + - If unsetting the config fails, including in a read-only repo, or + - when the config is not set, returns Nothing. + -} +unset :: String -> Repo -> IO (Maybe Repo) +unset k r = ifM (Git.Command.runBool ps r) + ( return $ Just $ r { config = M.delete k (config r) } + , return Nothing + ) + where + ps = [Param "config", Param "--unset-all", Param k] |