38d691a10f
Running git-annex linux builds in termux seems to work well enough that the only reason to keep the Android app would be to support Android 4-5, which the old Android app supported, and which I don't know if the termux method works on (although I see no reason why it would not). According to [1], Android 4-5 remains on around 29% of devices, down from 51% one year ago. [1] https://www.statista.com/statistics/271774/share-of-android-platforms-on-mobile-devices-with-android-os/ This is a rather large commit, but mostly very straightfoward removal of android ifdefs and patches and associated cruft. Also, removed support for building with very old ghc < 8.0.1, and with yesod < 1.4.3, and without concurrent-output, which were only being used by the cross build. Some documentation specific to the Android app (screenshots etc) needs to be updated still. This commit was sponsored by Brett Eisenberg on Patreon.
80 lines
2.4 KiB
Haskell
80 lines
2.4 KiB
Haskell
{- git-annex git hooks
|
|
-
|
|
- Note that it's important that the scripts installed by git-annex
|
|
- not change, otherwise removing old hooks using an old version of
|
|
- the script would fail.
|
|
-
|
|
- Copyright 2013-2018 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Annex.Hook where
|
|
|
|
import Annex.Common
|
|
import qualified Git.Hook as Git
|
|
import Config
|
|
import qualified Annex
|
|
import Utility.Shell
|
|
|
|
import qualified Data.Map as M
|
|
|
|
preCommitHook :: Git.Hook
|
|
preCommitHook = Git.Hook "pre-commit" (mkHookScript "git annex pre-commit .") []
|
|
|
|
postReceiveHook :: Git.Hook
|
|
postReceiveHook = Git.Hook "post-receive"
|
|
-- Only run git-annex post-receive when git-annex supports it,
|
|
-- to avoid failing if the repository with this hook is used
|
|
-- with an older version of git-annex.
|
|
(mkHookScript "if git annex post-receive --help >/dev/null 2>&1; then git annex post-receive; fi")
|
|
-- This is an old version of the hook script.
|
|
[ mkHookScript "git annex post-receive"
|
|
]
|
|
|
|
preCommitAnnexHook :: Git.Hook
|
|
preCommitAnnexHook = Git.Hook "pre-commit-annex" "" []
|
|
|
|
postUpdateAnnexHook :: Git.Hook
|
|
postUpdateAnnexHook = Git.Hook "post-update-annex" "" []
|
|
|
|
mkHookScript :: String -> String
|
|
mkHookScript s = unlines
|
|
[ shebang
|
|
, "# automatically configured by git-annex"
|
|
, s
|
|
]
|
|
|
|
hookWrite :: Git.Hook -> Annex ()
|
|
hookWrite h =
|
|
-- cannot have git hooks in a crippled filesystem (no execute bit)
|
|
unlessM crippledFileSystem $
|
|
unlessM (inRepo $ Git.hookWrite h) $
|
|
hookWarning h "already exists, not configuring"
|
|
|
|
hookUnWrite :: Git.Hook -> Annex ()
|
|
hookUnWrite h = unlessM (inRepo $ Git.hookUnWrite h) $
|
|
hookWarning h "contents modified; not deleting. Edit it to remove call to git annex."
|
|
|
|
hookWarning :: Git.Hook -> String -> Annex ()
|
|
hookWarning h msg = do
|
|
r <- gitRepo
|
|
warning $ Git.hookName h ++ " hook (" ++ Git.hookFile h r ++ ") " ++ msg
|
|
|
|
{- Runs a hook. To avoid checking if the hook exists every time,
|
|
- the existing hooks are cached. -}
|
|
runAnnexHook :: Git.Hook -> Annex ()
|
|
runAnnexHook hook = do
|
|
m <- Annex.getState Annex.existinghooks
|
|
case M.lookup hook m of
|
|
Just True -> run
|
|
Just False -> noop
|
|
Nothing -> do
|
|
exists <- inRepo $ Git.hookExists hook
|
|
Annex.changeState $ \s -> s
|
|
{ Annex.existinghooks = M.insert hook exists m }
|
|
when exists run
|
|
where
|
|
run = unlessM (inRepo $ Git.runHook hook) $ do
|
|
h <- fromRepo $ Git.hookFile hook
|
|
warning $ h ++ " failed"
|