summaryrefslogtreecommitdiff
path: root/Command/Sync.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 /Command/Sync.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 'Command/Sync.hs')
-rw-r--r--Command/Sync.hs18
1 files changed, 8 insertions, 10 deletions
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]