d41849bc23
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.
38 lines
996 B
Haskell
38 lines
996 B
Haskell
{- git merging
|
|
-
|
|
- Copyright 2012, 2014 Joey Hess <joey@kitenet.net>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Git.Merge where
|
|
|
|
import Common
|
|
import Git
|
|
import Git.Command
|
|
import Git.BuildVersion
|
|
import Git.Branch (CommitMode(..))
|
|
|
|
{- Avoids recent git's interactive merge. -}
|
|
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]
|
|
where
|
|
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
|
|
stageMerge branch = runBool
|
|
[ Param "merge"
|
|
, Param "--quiet"
|
|
, Param "--no-commit"
|
|
-- Without this, a fast-forward merge is done, since it involves no
|
|
-- commit.
|
|
, Param "--no-ff"
|
|
, Param $ fromRef branch
|
|
]
|