mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-31 02:01:13 +00:00
Add git_merge_unrelated
rule for git merge --allow-unrelated-histories
(#773)
From https://git-scm.com/docs/merge-options#merge-options---allow-unrelated-histories > By default, `git merge` command refuses to merge histories that do not share a common ancestor. This option can be used to override this safety when merging histories of two projects that started their lives independently.
This commit is contained in:
parent
aa45585601
commit
027b41da59
@ -200,6 +200,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
* `git_flag_after_filename` – fixes `fatal: bad flag '...' after filename`
|
||||
* `git_help_aliased` – fixes `git help <alias>` commands replacing <alias> with the aliased command;
|
||||
* `git_merge` – adds remote to branch names;
|
||||
* `git_merge_unrelated` – adds `--allow-unrelated-histories` when required
|
||||
* `git_not_command` – fixes wrong git commands like `git brnch`;
|
||||
* `git_pull` – sets upstream before executing previous `git pull`;
|
||||
* `git_pull_clone` – clones instead of pulling when the repo does not exist;
|
||||
|
25
tests/rules/test_git_merge_unrelated.py
Normal file
25
tests/rules/test_git_merge_unrelated.py
Normal file
@ -0,0 +1,25 @@
|
||||
import pytest
|
||||
from thefuck.rules.git_merge_unrelated import match, get_new_command
|
||||
from thefuck.types import Command
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def output():
|
||||
return 'fatal: refusing to merge unrelated histories'
|
||||
|
||||
|
||||
def test_match(output):
|
||||
assert match(Command('git merge test', output))
|
||||
assert not match(Command('git merge master', ''))
|
||||
assert not match(Command('ls', output))
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command, new_command', [
|
||||
(Command('git merge local', output()),
|
||||
'git merge local --allow-unrelated-histories'),
|
||||
(Command('git merge -m "test" local', output()),
|
||||
'git merge -m "test" local --allow-unrelated-histories'),
|
||||
(Command('git merge -m "test local" local', output()),
|
||||
'git merge -m "test local" local --allow-unrelated-histories')])
|
||||
def test_get_new_command(command, new_command):
|
||||
assert get_new_command(command) == new_command
|
12
thefuck/rules/git_merge_unrelated.py
Normal file
12
thefuck/rules/git_merge_unrelated.py
Normal file
@ -0,0 +1,12 @@
|
||||
from thefuck.specific.git import git_support
|
||||
|
||||
|
||||
@git_support
|
||||
def match(command):
|
||||
return ('merge' in command.script
|
||||
and 'fatal: refusing to merge unrelated histories' in command.output)
|
||||
|
||||
|
||||
@git_support
|
||||
def get_new_command(command):
|
||||
return command.script + ' --allow-unrelated-histories'
|
Loading…
x
Reference in New Issue
Block a user