diff options
author | Joey Hess <joey@kitenet.net> | 2014-07-04 11:36:59 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-07-04 11:53:51 -0400 |
commit | dafe3950f721ce80d9fa8696daed626a071dab01 (patch) | |
tree | b3bb6eb22628506b356932793daa27a021429d4b /Annex/AutoMerge.hs | |
parent | 25e715f48fb1f4caecbcf36f5ea2ff55ecf6c3a9 (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 'Annex/AutoMerge.hs')
-rw-r--r-- | Annex/AutoMerge.hs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/Annex/AutoMerge.hs b/Annex/AutoMerge.hs index 71b28c1d4..cc27f6b28 100644 --- a/Annex/AutoMerge.hs +++ b/Annex/AutoMerge.hs @@ -12,12 +12,12 @@ import qualified Annex.Queue import Annex.Direct import Annex.CatFile import Annex.Link -import qualified Git.Command import qualified Git.LsFiles as LsFiles import qualified Git.UpdateIndex as UpdateIndex import qualified Git.Merge import qualified Git.Ref import qualified Git +import qualified Git.Branch import Git.Types (BlobType(..)) import Config import Annex.ReplaceFile @@ -29,17 +29,17 @@ import qualified Data.Set as S {- Merges from a branch into the current branch - (which may not exist yet), - with automatic merge conflict resolution. -} -autoMergeFrom :: Git.Ref -> (Maybe Git.Ref) -> Annex Bool -autoMergeFrom branch currbranch = do +autoMergeFrom :: Git.Ref -> (Maybe Git.Ref) -> Git.Branch.CommitMode -> Annex Bool +autoMergeFrom branch currbranch commitmode = do showOutput case currbranch of Nothing -> go Nothing Just b -> go =<< inRepo (Git.Ref.sha b) where go old = ifM isDirect - ( mergeDirect currbranch old branch (resolveMerge old branch) - , inRepo (Git.Merge.mergeNonInteractive branch) - <||> (resolveMerge old branch <&&> commitResolvedMerge) + ( mergeDirect currbranch old branch (resolveMerge old branch) commitmode + , inRepo (Git.Merge.mergeNonInteractive branch commitmode) + <||> (resolveMerge old branch <&&> commitResolvedMerge commitmode) ) {- Resolves a conflicted merge. It's important that any conflicts be @@ -166,10 +166,9 @@ cleanConflictCruft resolvedfs top = do matchesresolved f = S.member (base f) s base f = reverse $ drop 1 $ dropWhile (/= '~') $ reverse f -commitResolvedMerge :: Annex Bool -commitResolvedMerge = inRepo $ Git.Command.runBool - [ Param "commit" - , Param "--no-verify" +commitResolvedMerge :: Git.Branch.CommitMode -> Annex Bool +commitResolvedMerge commitmode = inRepo $ Git.Branch.commitCommand commitmode + [ Param "--no-verify" , Param "-m" , Param "git-annex automatic merge conflict fix" ] |