git-annex merge branch
* merge: When run with a branch parameter, merges from that branch. This is especially useful when using an adjusted branch, because it applies the same adjustment to the branch before merging it.
This commit is contained in:
parent
b90ee6dc52
commit
b87ea12b6b
7 changed files with 58 additions and 28 deletions
|
@ -1,6 +1,6 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2011, 2013 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2011-2019 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- Licensed under the GNU AGPL version 3 or higher.
|
||||
-}
|
||||
|
@ -9,27 +9,38 @@ module Command.Merge where
|
|||
|
||||
import Command
|
||||
import qualified Annex.Branch
|
||||
import qualified Git
|
||||
import qualified Git.Branch
|
||||
import Annex.CurrentBranch
|
||||
import Command.Sync (prepMerge, mergeLocal, mergeConfig)
|
||||
import Command.Sync (prepMerge, mergeLocal, mergeConfig, merge)
|
||||
|
||||
cmd :: Command
|
||||
cmd = command "merge" SectionMaintenance
|
||||
"automatically merge changes from remotes"
|
||||
paramNothing (withParams seek)
|
||||
"merge changes from remotes"
|
||||
(paramOptional paramRef) (withParams seek)
|
||||
|
||||
seek :: CmdParams -> CommandSeek
|
||||
seek _ = do
|
||||
commandAction mergeBranch
|
||||
commandAction mergeSynced
|
||||
seek [] = do
|
||||
prepMerge
|
||||
commandAction mergeAnnexBranch
|
||||
commandAction mergeSyncedBranch
|
||||
seek bs = do
|
||||
prepMerge
|
||||
forM_ bs (commandAction . mergeBranch . Git.Ref)
|
||||
seek _ = giveup ""
|
||||
|
||||
mergeBranch :: CommandStart
|
||||
mergeBranch = starting "merge" (ActionItemOther (Just "git-annex")) $ do
|
||||
mergeAnnexBranch :: CommandStart
|
||||
mergeAnnexBranch = starting "merge" (ActionItemOther (Just "git-annex")) $ do
|
||||
Annex.Branch.update
|
||||
-- commit explicitly, in case no remote branches were merged
|
||||
Annex.Branch.commit =<< Annex.Branch.commitMessage
|
||||
next $ return True
|
||||
|
||||
mergeSynced :: CommandStart
|
||||
mergeSynced = do
|
||||
prepMerge
|
||||
mergeLocal mergeConfig def =<< getCurrentBranch
|
||||
mergeSyncedBranch :: CommandStart
|
||||
mergeSyncedBranch = mergeLocal mergeConfig def =<< getCurrentBranch
|
||||
|
||||
mergeBranch :: Git.Ref -> CommandStart
|
||||
mergeBranch r = starting "merge" (ActionItemOther (Just (Git.fromRef r))) $ do
|
||||
currbranch <- getCurrentBranch
|
||||
merge currbranch mergeConfig def Git.Branch.ManualCommit r
|
||||
next $ return True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue