make deleting a missing ref more quiet
If git attempts to delete a ref, but the unlink of the ref file fails, we print a message to stderr. This is usually a good thing, but if the error is ENOENT, then it indicates that the ref has _already_ been deleted. And since that's our goal, it doesn't make sense to complain to the user. This harmonizes the error reporting behavior for the unpacked and packed cases; the packed case already printed nothing on ENOENT, but the unpacked printed unconditionally. Additionally, send-pack would, when deleting the tracking ref corresponding to a remote delete, print "Failed to delete" on any failure. This can be a misleading message, since we actually _did_ delete at the remote side, but we failed to delete locally. Rather than make the message more precise, let's just eliminate it entirely; the delete_ref routine already takes care of printing out a much more specific message about what went wrong. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									30161e73d1
								
							
						
					
					
						commit
						0b294c0abf
					
				|  | @ -226,8 +226,7 @@ static void update_tracking_ref(struct remote *remote, struct ref *ref) | |||
| 		if (args.verbose) | ||||
| 			fprintf(stderr, "updating local tracking ref '%s'\n", rs.dst); | ||||
| 		if (ref->deletion) { | ||||
| 			if (delete_ref(rs.dst, NULL)) | ||||
| 				error("Failed to delete"); | ||||
| 			delete_ref(rs.dst, NULL); | ||||
| 		} else | ||||
| 			update_ref("update by push", rs.dst, | ||||
| 					ref->new_sha1, NULL, 0, 0); | ||||
|  |  | |||
							
								
								
									
										2
									
								
								refs.c
								
								
								
								
							
							
						
						
									
										2
									
								
								refs.c
								
								
								
								
							|  | @ -925,7 +925,7 @@ int delete_ref(const char *refname, const unsigned char *sha1) | |||
| 		i = strlen(lock->lk->filename) - 5; /* .lock */ | ||||
| 		lock->lk->filename[i] = 0; | ||||
| 		err = unlink(lock->lk->filename); | ||||
| 		if (err) { | ||||
| 		if (err && errno != ENOENT) { | ||||
| 			ret = 1; | ||||
| 			error("unlink(%s) failed: %s", | ||||
| 			      lock->lk->filename, strerror(errno)); | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ test_expect_success 'setup' ' | |||
| 	git commit -m 1 && | ||||
| 	git branch b1 && | ||||
| 	git branch b2 && | ||||
| 	git branch b3 && | ||||
| 	git clone . aa && | ||||
| 	git checkout b1 && | ||||
| 	echo b1 >>file && | ||||
|  | @ -50,4 +51,10 @@ test_expect_success 'deleted branches have their tracking branches removed' ' | |||
| 	test "$(git rev-parse origin/b1)" = "origin/b1" | ||||
| ' | ||||
|  | ||||
| test_expect_success 'already deleted tracking branches ignored' ' | ||||
| 	git branch -d -r origin/b3 && | ||||
| 	git push origin :b3 >output 2>&1 && | ||||
| 	! grep error output | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King