pull: make --rebase and --no-rebase override pull.ff=only
Fix the last few precedence tests failing in t7601 by now implementing the logic to have --[no-]rebase override a pull.ff=only config setting. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Elijah Newren
					Elijah Newren
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							e4dc25ed49
						
					
				
				
					commit
					adc27d6a93
				
			| @ -966,8 +966,22 @@ int cmd_pull(int argc, const char **argv, const char *prefix) | ||||
|  | ||||
| 	parse_repo_refspecs(argc, argv, &repo, &refspecs); | ||||
|  | ||||
| 	if (!opt_ff) | ||||
| 	if (!opt_ff) { | ||||
| 		opt_ff = xstrdup_or_null(config_get_ff()); | ||||
| 		/* | ||||
| 		 * A subtle point: opt_ff was set on the line above via | ||||
| 		 * reading from config.  opt_rebase, in contrast, is set | ||||
| 		 * before this point via command line options.  The setting | ||||
| 		 * of opt_rebase via reading from config (using | ||||
| 		 * config_get_rebase()) does not happen until later.  We | ||||
| 		 * are relying on the next if-condition happening before | ||||
| 		 * the config_get_rebase() call so that an explicit | ||||
| 		 * "--rebase" can override a config setting of | ||||
| 		 * pull.ff=only. | ||||
| 		 */ | ||||
| 		if (opt_rebase >= 0 && opt_ff && !strcmp(opt_ff, "--ff-only")) | ||||
| 			opt_ff = "--ff"; | ||||
| 	} | ||||
|  | ||||
| 	if (opt_rebase < 0) | ||||
| 		opt_rebase = config_get_rebase(&rebase_unspecified); | ||||
|  | ||||
| @ -260,11 +260,11 @@ test_expect_success '--ff-only takes precedence over pull.rebase=false' ' | ||||
| 	test_attempts_fast_forward -c pull.rebase=false pull --ff-only | ||||
| ' | ||||
|  | ||||
| test_expect_failure '--no-rebase takes precedence over pull.ff=only' ' | ||||
| test_expect_success '--no-rebase takes precedence over pull.ff=only' ' | ||||
| 	test_falls_back_to_full_merge -c pull.ff=only pull --no-rebase | ||||
| ' | ||||
|  | ||||
| test_expect_failure '--rebase takes precedence over pull.ff=only' ' | ||||
| test_expect_success '--rebase takes precedence over pull.ff=only' ' | ||||
| 	test_does_rebase -c pull.ff=only pull --rebase | ||||
| ' | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user