mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +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:
		| @@ -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' | ||||
		Reference in New Issue
	
	Block a user