sync: Pass --allow-unrelated-histories to git merge when used with git git 2.9.0 or newer.
This makes merging a remote into a freshly created direct mode repository work the same as it works in indirect mode. The git-annex branches would get merged in any case by a sync, since that doesn't use git merge. This might need to be revisited later to better mirror git's behavior.
This commit is contained in:
parent
6416ae9c09
commit
556b2ded2b
4 changed files with 11 additions and 12 deletions
|
@ -21,7 +21,6 @@ import Utility.Parallel
|
||||||
import qualified Git
|
import qualified Git
|
||||||
import qualified Git.Command
|
import qualified Git.Command
|
||||||
import qualified Git.Ref
|
import qualified Git.Ref
|
||||||
import qualified Git.Merge
|
|
||||||
import qualified Remote
|
import qualified Remote
|
||||||
import qualified Types.Remote as Remote
|
import qualified Types.Remote as Remote
|
||||||
import qualified Remote.List as Remote
|
import qualified Remote.List as Remote
|
||||||
|
@ -239,19 +238,12 @@ manualPull currentbranch remotes = do
|
||||||
)
|
)
|
||||||
haddiverged <- liftAnnex Annex.Branch.forceUpdate
|
haddiverged <- liftAnnex Annex.Branch.forceUpdate
|
||||||
forM_ normalremotes $ \r ->
|
forM_ normalremotes $ \r ->
|
||||||
liftAnnex $ Command.Sync.mergeRemote r currentbranch mergeConfig
|
liftAnnex $ Command.Sync.mergeRemote r currentbranch Command.Sync.mergeConfig
|
||||||
u <- liftAnnex getUUID
|
u <- liftAnnex getUUID
|
||||||
forM_ xmppremotes $ \r ->
|
forM_ xmppremotes $ \r ->
|
||||||
sendNetMessage $ Pushing (getXMPPClientID r) (PushRequest u)
|
sendNetMessage $ Pushing (getXMPPClientID r) (PushRequest u)
|
||||||
return (catMaybes failed, haddiverged)
|
return (catMaybes failed, haddiverged)
|
||||||
|
|
||||||
mergeConfig :: [Git.Merge.MergeConfig]
|
|
||||||
mergeConfig =
|
|
||||||
[ Git.Merge.MergeNonInteractive
|
|
||||||
-- Pairing involves merging unrelated histories
|
|
||||||
, Git.Merge.MergeUnrelatedHistories
|
|
||||||
]
|
|
||||||
|
|
||||||
{- Start syncing a remote, using a background thread. -}
|
{- Start syncing a remote, using a background thread. -}
|
||||||
syncRemote :: Remote -> Assistant ()
|
syncRemote :: Remote -> Assistant ()
|
||||||
syncRemote remote = do
|
syncRemote remote = do
|
||||||
|
|
|
@ -12,7 +12,6 @@ import Assistant.TransferQueue
|
||||||
import Assistant.BranchChange
|
import Assistant.BranchChange
|
||||||
import Assistant.DaemonStatus
|
import Assistant.DaemonStatus
|
||||||
import Assistant.ScanRemotes
|
import Assistant.ScanRemotes
|
||||||
import Assistant.Sync
|
|
||||||
import Utility.DirWatcher
|
import Utility.DirWatcher
|
||||||
import Utility.DirWatcher.Types
|
import Utility.DirWatcher.Types
|
||||||
import qualified Annex.Branch
|
import qualified Annex.Branch
|
||||||
|
@ -86,7 +85,7 @@ onChange file
|
||||||
, "into", Git.fromRef b
|
, "into", Git.fromRef b
|
||||||
]
|
]
|
||||||
void $ liftAnnex $ Command.Sync.merge
|
void $ liftAnnex $ Command.Sync.merge
|
||||||
currbranch mergeConfig
|
currbranch Command.Sync.mergeConfig
|
||||||
Git.Branch.AutomaticCommit
|
Git.Branch.AutomaticCommit
|
||||||
changedbranch
|
changedbranch
|
||||||
mergecurrent _ = noop
|
mergecurrent _ = noop
|
||||||
|
|
|
@ -6,6 +6,9 @@ git-annex (6.20161112) UNRELEASED; urgency=medium
|
||||||
if so, either use stack to build, or run cabal with
|
if so, either use stack to build, or run cabal with
|
||||||
--constraint='persistent ==2.2.4.1'
|
--constraint='persistent ==2.2.4.1'
|
||||||
Hopefully this mess with esqueleto will be resolved soon.
|
Hopefully this mess with esqueleto will be resolved soon.
|
||||||
|
* sync: Pass --allow-unrelated-histories to git merge when used with git
|
||||||
|
git 2.9.0 or newer. This makes merging a remote into a freshly created
|
||||||
|
direct mode repository work the same as it works in indirect mode.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Tue, 15 Nov 2016 11:15:27 -0400
|
-- Joey Hess <id@joeyh.name> Tue, 15 Nov 2016 11:15:27 -0400
|
||||||
|
|
||||||
|
|
|
@ -169,7 +169,12 @@ prepMerge :: Annex ()
|
||||||
prepMerge = Annex.changeDirectory =<< fromRepo Git.repoPath
|
prepMerge = Annex.changeDirectory =<< fromRepo Git.repoPath
|
||||||
|
|
||||||
mergeConfig :: [Git.Merge.MergeConfig]
|
mergeConfig :: [Git.Merge.MergeConfig]
|
||||||
mergeConfig = [Git.Merge.MergeNonInteractive]
|
mergeConfig =
|
||||||
|
[ Git.Merge.MergeNonInteractive
|
||||||
|
-- In several situations, unrelated histories should be merged
|
||||||
|
-- together. This includes pairing in the assistant etc.
|
||||||
|
, Git.Merge.MergeUnrelatedHistories
|
||||||
|
]
|
||||||
|
|
||||||
merge :: CurrBranch -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Git.Branch -> Annex Bool
|
merge :: CurrBranch -> [Git.Merge.MergeConfig] -> Git.Branch.CommitMode -> Git.Branch -> Annex Bool
|
||||||
merge (Just b, Just adj) mergeconfig commitmode tomerge =
|
merge (Just b, Just adj) mergeconfig commitmode tomerge =
|
||||||
|
|
Loading…
Reference in a new issue