зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
30161e73d1
Коммит
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче