Merge "Support recent git changes to merge options"
This commit is contained in:
@@ -219,7 +219,15 @@ class ImportUpstream(LogDedentMixin, GitMixin):
|
|||||||
# as normal merge (with octopus strategy) will refuse if you
|
# as normal merge (with octopus strategy) will refuse if you
|
||||||
# are merging in more than one branch without a common
|
# are merging in more than one branch without a common
|
||||||
# ancestor to the current tree.
|
# ancestor to the current tree.
|
||||||
|
try:
|
||||||
self.git.merge(*self.extra_branches, s="ours", no_commit=True)
|
self.git.merge(*self.extra_branches, s="ours", no_commit=True)
|
||||||
|
except GitCommandError as exc:
|
||||||
|
if 'refusing to merge unrelated histories' in exc.stderr:
|
||||||
|
self.git.merge(*self.extra_branches, s="ours",
|
||||||
|
no_commit=True,
|
||||||
|
allow_unrelated_histories=True)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
self.git.read_tree(empty=True)
|
self.git.read_tree(empty=True)
|
||||||
self.git.read_tree("HEAD", *self.extra_branches)
|
self.git.read_tree("HEAD", *self.extra_branches)
|
||||||
self.git.checkout("--", ".")
|
self.git.checkout("--", ".")
|
||||||
|
@@ -224,16 +224,37 @@ class BuildTree(object):
|
|||||||
# trees of the nodes prefixed with '='
|
# trees of the nodes prefixed with '='
|
||||||
use = [str(self.graph[p.lstrip("=")])
|
use = [str(self.graph[p.lstrip("=")])
|
||||||
for p in parents if p.startswith("=")]
|
for p in parents if p.startswith("=")]
|
||||||
|
try:
|
||||||
self.git.merge(*commits, s="ours", no_commit=True)
|
self.git.merge(*commits, s="ours", no_commit=True)
|
||||||
|
except git.exc.GitCommandError as exc:
|
||||||
|
if 'refusing to merge unrelated histories' in exc.stderr:
|
||||||
|
self.git.merge(*commits, s="ours", no_commit=True,
|
||||||
|
allow_unrelated_histories=True)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
self.git.read_tree(empty=True)
|
self.git.read_tree(empty=True)
|
||||||
self.git.read_tree(*use, u=True, reset=True)
|
self.git.read_tree(*use, u=True, reset=True)
|
||||||
elif len(commits) < 2:
|
elif len(commits) < 2:
|
||||||
# standard merge
|
# standard merge
|
||||||
|
try:
|
||||||
self.git.merge(*commits, no_commit=True)
|
self.git.merge(*commits, no_commit=True)
|
||||||
|
except git.exc.GitCommandError as exc:
|
||||||
|
if 'refusing to merge unrelated histories' in exc.stderr:
|
||||||
|
self.git.merge(*commits, no_commit=True,
|
||||||
|
allow_unrelated_histories=True)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
else:
|
else:
|
||||||
# multi-branch merge, git is not great at handling
|
# multi-branch merge, git is not great at handling
|
||||||
# merging multiple orphaned branches
|
# merging multiple orphaned branches
|
||||||
|
try:
|
||||||
self.git.merge(*commits, s="ours", no_commit=True)
|
self.git.merge(*commits, s="ours", no_commit=True)
|
||||||
|
except git.exc.GitCommandError as exc:
|
||||||
|
if 'refusing to merge unrelated histories' in exc.stderr:
|
||||||
|
self.git.merge(*commits, s="ours", no_commit=True,
|
||||||
|
allow_unrelated_histories=True)
|
||||||
|
else:
|
||||||
|
raise
|
||||||
self.git.read_tree(empty=True)
|
self.git.read_tree(empty=True)
|
||||||
self.git.read_tree("HEAD", *commits)
|
self.git.read_tree("HEAD", *commits)
|
||||||
self.git.checkout("--", ".")
|
self.git.checkout("--", ".")
|
||||||
|
Reference in New Issue
Block a user