summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-07-04 11:36:59 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-07-04 11:53:51 -0400
commitdafe3950f721ce80d9fa8696daed626a071dab01 (patch)
treeb3bb6eb22628506b356932793daa27a021429d4b /Command
parent25e715f48fb1f4caecbcf36f5ea2ff55ecf6c3a9 (diff)
support commit.gpgsign
Support users who have set commit.gpgsign, by disabling gpg signatures for git-annex branch commits and commits made by the assistant. The thinking here is that a user sets commit.gpgsign intending the commits that they manually initiate to be gpg signed. But not commits made in the background, whether by a deamon or implicitly to the git-annex branch. gpg signing those would be at best a waste of CPU and at worst would fail, or flood the user with gpg passphrase prompts, or put their signature on changes they did not directly do. See Debian bug #753720. Also makes all commits done by git-annex go through a few central control points, to make such changes easier in future. Also disables commit.gpgsign in the test suite. This commit was sponsored by Antoine Boegli.
Diffstat (limited to 'Command')
-rw-r--r--Command/Direct.hs7
-rw-r--r--Command/Indirect.hs7
-rw-r--r--Command/Sync.hs18
-rw-r--r--Command/Unannex.hs6
4 files changed, 17 insertions, 21 deletions
diff --git a/Command/Direct.hs b/Command/Direct.hs
index 9727549b6..a5165a4a2 100644
--- a/Command/Direct.hs
+++ b/Command/Direct.hs
@@ -12,8 +12,8 @@ import Control.Exception.Extensible
import Common.Annex
import Command
import qualified Git
-import qualified Git.Command
import qualified Git.LsFiles
+import qualified Git.Branch
import Config
import Annex.Direct
import Annex.Exception
@@ -33,9 +33,8 @@ perform :: CommandPerform
perform = do
showStart "commit" ""
showOutput
- _ <- inRepo $ Git.Command.runBool
- [ Param "commit"
- , Param "-a"
+ _ <- inRepo $ Git.Branch.commitCommand Git.Branch.ManualCommit
+ [ Param "-a"
, Param "-m"
, Param "commit before switching to direct mode"
]
diff --git a/Command/Indirect.hs b/Command/Indirect.hs
index acf40c974..4ce4c2c38 100644
--- a/Command/Indirect.hs
+++ b/Command/Indirect.hs
@@ -12,7 +12,7 @@ import Control.Exception.Extensible
import Common.Annex
import Command
import qualified Git
-import qualified Git.Command
+import qualified Git.Branch
import qualified Git.LsFiles
import Git.FileMode
import Config
@@ -49,9 +49,8 @@ perform = do
showStart "commit" ""
whenM stageDirect $ do
showOutput
- void $ inRepo $ Git.Command.runBool
- [ Param "commit"
- , Param "-m"
+ void $ inRepo $ Git.Branch.commitCommand Git.Branch.ManualCommit
+ [ Param "-m"
, Param "commit before switching to indirect mode"
]
showEndOk
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 983689118..50c6fbe69 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -127,14 +127,12 @@ commit = next $ next $ ifM isDirect
showStart "commit" ""
void stageDirect
void preCommitDirect
- commitStaged commitmessage
+ commitStaged Git.Branch.ManualCommit commitmessage
, do
showStart "commit" ""
Annex.Branch.commit "update"
- -- Commit will fail when the tree is clean, so ignore failure.
- _ <- inRepo $ tryIO . Git.Command.runQuiet
- [ Param "commit"
- , Param "-a"
+ inRepo $ Git.Branch.commitQuiet Git.Branch.ManualCommit
+ [ Param "-a"
, Param "-m"
, Param commitmessage
]
@@ -143,14 +141,14 @@ commit = next $ next $ ifM isDirect
where
commitmessage = "git-annex automatic sync"
-commitStaged :: String -> Annex Bool
-commitStaged commitmessage = go =<< inRepo Git.Branch.currentUnsafe
+commitStaged :: Git.Branch.CommitMode -> String -> Annex Bool
+commitStaged commitmode commitmessage = go =<< inRepo Git.Branch.currentUnsafe
where
go Nothing = return False
go (Just branch) = do
runAnnexHook preCommitAnnexHook
parent <- inRepo $ Git.Ref.sha branch
- void $ inRepo $ Git.Branch.commit False commitmessage branch
+ void $ inRepo $ Git.Branch.commit commitmode False commitmessage branch
(maybeToList parent)
return True
@@ -169,7 +167,7 @@ mergeLocal (Just branch) = go =<< needmerge
go False = stop
go True = do
showStart "merge" $ Git.Ref.describe syncbranch
- next $ next $ autoMergeFrom syncbranch (Just branch)
+ next $ next $ autoMergeFrom syncbranch (Just branch) Git.Branch.ManualCommit
pushLocal :: Maybe Git.Ref -> CommandStart
pushLocal b = do
@@ -221,7 +219,7 @@ mergeRemote remote b = case b of
Just thisbranch ->
and <$> (mapM (merge (Just thisbranch)) =<< tomerge (branchlist b))
where
- merge thisbranch = flip autoMergeFrom thisbranch . remoteBranch remote
+ merge thisbranch br = autoMergeFrom (remoteBranch remote br) thisbranch Git.Branch.ManualCommit
tomerge = filterM (changed remote)
branchlist Nothing = []
branchlist (Just branch) = [branch, syncBranch branch]
diff --git a/Command/Unannex.hs b/Command/Unannex.hs
index daa14ce85..9cb88564c 100644
--- a/Command/Unannex.hs
+++ b/Command/Unannex.hs
@@ -16,6 +16,7 @@ import qualified Annex
import Annex.Content
import Annex.Content.Direct
import qualified Git.Command
+import qualified Git.Branch
import qualified Git.Ref
import qualified Git.DiffTree as DiffTree
import Utility.CopyFile
@@ -45,9 +46,8 @@ wrapUnannex a = ifM isDirect
)
)
where
- commit = inRepo $ Git.Command.run
- [ Param "commit"
- , Param "-q"
+ commit = inRepo $ Git.Branch.commitCommand Git.Branch.ManualCommit
+ [ Param "-q"
, Param "--allow-empty"
, Param "--no-verify"
, Param "-m", Param "content removed from git annex"