summaryrefslogtreecommitdiff
path: root/Remote/Helper
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-01-02 13:12:32 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-01-02 13:12:32 -0400
commit434a8098037574ddd83e09bbf82a9d5b27181b8e (patch)
tree978ab0f48be492e06939e168cbc2392c4ae91b92 /Remote/Helper
parent94043b612888a0555f630669c6391cb75842b6ea (diff)
Remotes can now be made read-only, by setting remote.<name>.annex-readonly
Diffstat (limited to 'Remote/Helper')
-rw-r--r--Remote/Helper/ReadOnly.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Remote/Helper/ReadOnly.hs b/Remote/Helper/ReadOnly.hs
new file mode 100644
index 000000000..cd92a083c
--- /dev/null
+++ b/Remote/Helper/ReadOnly.hs
@@ -0,0 +1,29 @@
+{- Adds readonly support to remotes.
+ -
+ - Copyright 2013 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Remote.Helper.ReadOnly (adjustReadOnly) where
+
+import Common.Annex
+import Types.Remote
+
+{- Adds support for read-only remotes, by replacing the
+ - methods that write to a remote with dummies that fail.
+ -
+ - Note that disabling git pushes to remotes is not handled here.
+ -}
+adjustReadOnly :: Remote -> Remote
+adjustReadOnly r
+ | remoteAnnexReadOnly (gitconfig r) = r
+ { storeKey = \_ _ _ -> failbool
+ , removeKey = \_ -> failbool
+ , repairRepo = Nothing
+ }
+ | otherwise = r
+ where
+ failbool = do
+ warning "this remote is readonly"
+ return False