After renaming a section, print any trailing variable definitions
Signed-off-by: Alex Vandiver <alex@chmrr.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									a4c0d463c0
								
							
						
					
					
						commit
						9a5abfc737
					
				
							
								
								
									
										22
									
								
								config.c
								
								
								
								
							
							
						
						
									
										22
									
								
								config.c
								
								
								
								
							|  | @ -1237,6 +1237,7 @@ int git_config_rename_section(const char *old_name, const char *new_name) | ||||||
| 	while (fgets(buf, sizeof(buf), config_file)) { | 	while (fgets(buf, sizeof(buf), config_file)) { | ||||||
| 		int i; | 		int i; | ||||||
| 		int length; | 		int length; | ||||||
|  | 		char *output = buf; | ||||||
| 		for (i = 0; buf[i] && isspace(buf[i]); i++) | 		for (i = 0; buf[i] && isspace(buf[i]); i++) | ||||||
| 			; /* do nothing */ | 			; /* do nothing */ | ||||||
| 		if (buf[i] == '[') { | 		if (buf[i] == '[') { | ||||||
|  | @ -1253,14 +1254,29 @@ int git_config_rename_section(const char *old_name, const char *new_name) | ||||||
| 					ret = write_error(lock->filename); | 					ret = write_error(lock->filename); | ||||||
| 					goto out; | 					goto out; | ||||||
| 				} | 				} | ||||||
| 				continue; | 				/* | ||||||
|  | 				 * We wrote out the new section, with | ||||||
|  | 				 * a newline, now skip the old | ||||||
|  | 				 * section's length | ||||||
|  | 				 */ | ||||||
|  | 				output += offset + i; | ||||||
|  | 				if (strlen(output) > 0) { | ||||||
|  | 					/* | ||||||
|  | 					 * More content means there's | ||||||
|  | 					 * a declaration to put on the | ||||||
|  | 					 * next line; indent with a | ||||||
|  | 					 * tab | ||||||
|  | 					 */ | ||||||
|  | 					output -= 1; | ||||||
|  | 					output[0] = '\t'; | ||||||
|  | 				} | ||||||
| 			} | 			} | ||||||
| 			remove = 0; | 			remove = 0; | ||||||
| 		} | 		} | ||||||
| 		if (remove) | 		if (remove) | ||||||
| 			continue; | 			continue; | ||||||
| 		length = strlen(buf); | 		length = strlen(output); | ||||||
| 		if (write_in_full(out_fd, buf, length) != length) { | 		if (write_in_full(out_fd, output, length) != length) { | ||||||
| 			ret = write_error(lock->filename); | 			ret = write_error(lock->filename); | ||||||
| 			goto out; | 			goto out; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -459,6 +459,28 @@ EOF | ||||||
|  |  | ||||||
| test_expect_success "rename succeeded" "test_cmp expect .git/config" | test_expect_success "rename succeeded" "test_cmp expect .git/config" | ||||||
|  |  | ||||||
|  | cat >> .git/config << EOF | ||||||
|  | [branch "vier"] z = 1 | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  | test_expect_success "rename a section with a var on the same line" \ | ||||||
|  | 	'git config --rename-section branch.vier branch.zwei' | ||||||
|  |  | ||||||
|  | cat > expect << EOF | ||||||
|  | # Hallo | ||||||
|  | 	#Bello | ||||||
|  | [branch "zwei"] | ||||||
|  | 	x = 1 | ||||||
|  | [branch "zwei"] | ||||||
|  | 	y = 1 | ||||||
|  | [branch "drei"] | ||||||
|  | weird | ||||||
|  | [branch "zwei"] | ||||||
|  | 	z = 1 | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  | test_expect_success "rename succeeded" "test_cmp expect .git/config" | ||||||
|  |  | ||||||
| cat >> .git/config << EOF | cat >> .git/config << EOF | ||||||
|   [branch "zwei"] a = 1 [branch "vier"] |   [branch "zwei"] a = 1 [branch "vier"] | ||||||
| EOF | EOF | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Alex Vandiver
						Alex Vandiver