aboutsummaryrefslogtreecommitdiff
path: root/Git/Merge.hs
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 /Git/Merge.hs
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 'Git/Merge.hs')
-rw-r--r--Git/Merge.hs13
1 files changed, 9 insertions, 4 deletions
diff --git a/Git/Merge.hs b/Git/Merge.hs
index d661db978..12dfa7c1f 100644
--- a/Git/Merge.hs
+++ b/Git/Merge.hs
@@ -11,14 +11,19 @@ import Common
import Git
import Git.Command
import Git.BuildVersion
+import Git.Branch (CommitMode(..))
{- Avoids recent git's interactive merge. -}
-mergeNonInteractive :: Ref -> Repo -> IO Bool
-mergeNonInteractive branch
+mergeNonInteractive :: Ref -> CommitMode -> Repo -> IO Bool
+mergeNonInteractive branch commitmode
| older "1.7.7.6" = merge [Param $ fromRef branch]
- | otherwise = merge [Param "--no-edit", Param $ fromRef branch]
+ | otherwise = merge $ [Param "--no-edit", Param $ fromRef branch]
where
- merge ps = runBool $ Param "merge" : ps
+ merge ps = runBool $ cp ++ [Param "merge"] ++ ps
+ cp
+ | commitmode == AutomaticCommit =
+ [Param "-c", Param "commit.gpgsign=false"]
+ | otherwise = []
{- Stage the merge into the index, but do not commit it.-}
stageMerge :: Ref -> Repo -> IO Bool