Merge branch 'jx/fetch-atomic-error-message-fix'
"git fetch --atomic" issued an unnecessary empty error message, which has been corrected. * jx/fetch-atomic-error-message-fix: fetch: no redundant error message for atomic fetch t5574: test porcelain output of atomic fetch
This commit is contained in:
		| @ -1651,7 +1651,7 @@ static int do_fetch(struct transport *transport, | ||||
| 	if (atomic_fetch) { | ||||
| 		transaction = ref_transaction_begin(&err); | ||||
| 		if (!transaction) { | ||||
| 			retcode = error("%s", err.buf); | ||||
| 			retcode = -1; | ||||
| 			goto cleanup; | ||||
| 		} | ||||
| 	} | ||||
| @ -1711,7 +1711,6 @@ static int do_fetch(struct transport *transport, | ||||
|  | ||||
| 		retcode = ref_transaction_commit(transaction, &err); | ||||
| 		if (retcode) { | ||||
| 			error("%s", err.buf); | ||||
| 			ref_transaction_free(transaction); | ||||
| 			transaction = NULL; | ||||
| 			goto cleanup; | ||||
| @ -1775,8 +1774,13 @@ static int do_fetch(struct transport *transport, | ||||
| 	} | ||||
|  | ||||
| cleanup: | ||||
| 	if (retcode && transaction) { | ||||
| 		ref_transaction_abort(transaction, &err); | ||||
| 	if (retcode) { | ||||
| 		if (err.len) { | ||||
| 			error("%s", err.buf); | ||||
| 			strbuf_reset(&err); | ||||
| 		} | ||||
| 		if (transaction && ref_transaction_abort(transaction, &err) && | ||||
| 		    err.len) | ||||
| 			error("%s", err.buf); | ||||
| 	} | ||||
|  | ||||
|  | ||||
| @ -61,11 +61,10 @@ test_expect_success 'fetch compact output' ' | ||||
| 	test_cmp expect actual | ||||
| ' | ||||
|  | ||||
| test_expect_success 'fetch porcelain output' ' | ||||
| 	test_when_finished "rm -rf porcelain" && | ||||
|  | ||||
| test_expect_success 'setup for fetch porcelain output' ' | ||||
| 	# Set up a bunch of references that we can use to demonstrate different | ||||
| 	# kinds of flag symbols in the output format. | ||||
| 	test_commit commit-for-porcelain-output && | ||||
| 	MAIN_OLD=$(git rev-parse HEAD) && | ||||
| 	git branch "fast-forward" && | ||||
| 	git branch "deleted-branch" && | ||||
| @ -74,15 +73,10 @@ test_expect_success 'fetch porcelain output' ' | ||||
| 	FORCE_UPDATED_OLD=$(git rev-parse HEAD) && | ||||
| 	git checkout main && | ||||
|  | ||||
| 	# Clone and pre-seed the repositories. We fetch references into two | ||||
| 	# namespaces so that we can test that rejected and force-updated | ||||
| 	# references are reported properly. | ||||
| 	refspecs="refs/heads/*:refs/unforced/* +refs/heads/*:refs/forced/*" && | ||||
| 	git clone . porcelain && | ||||
| 	git -C porcelain fetch origin $refspecs && | ||||
| 	# Backup to preseed.git | ||||
| 	git clone --mirror . preseed.git && | ||||
|  | ||||
| 	# Now that we have set up the client repositories we can change our | ||||
| 	# local references. | ||||
| 	# Continue changing our local references. | ||||
| 	git branch new-branch && | ||||
| 	git branch -d deleted-branch && | ||||
| 	git checkout fast-forward && | ||||
| @ -91,7 +85,20 @@ test_expect_success 'fetch porcelain output' ' | ||||
| 	git checkout force-updated && | ||||
| 	git reset --hard HEAD~ && | ||||
| 	test_commit --no-tag force-update-new && | ||||
| 	FORCE_UPDATED_NEW=$(git rev-parse HEAD) && | ||||
| 	FORCE_UPDATED_NEW=$(git rev-parse HEAD) | ||||
| ' | ||||
|  | ||||
| for opt in "" "--atomic" | ||||
| do | ||||
| 	test_expect_success "fetch porcelain output ${opt:+(atomic)}" ' | ||||
| 		test_when_finished "rm -rf porcelain" && | ||||
|  | ||||
| 		# Clone and pre-seed the repositories. We fetch references into two | ||||
| 		# namespaces so that we can test that rejected and force-updated | ||||
| 		# references are reported properly. | ||||
| 		refspecs="refs/heads/*:refs/unforced/* +refs/heads/*:refs/forced/*" && | ||||
| 		git clone preseed.git porcelain && | ||||
| 		git -C porcelain fetch origin $opt $refspecs && | ||||
|  | ||||
| 		cat >expect <<-EOF && | ||||
| 		- $MAIN_OLD $ZERO_OID refs/forced/deleted-branch | ||||
| @ -107,19 +114,23 @@ test_expect_success 'fetch porcelain output' ' | ||||
| 		* $ZERO_OID $MAIN_OLD refs/remotes/origin/new-branch | ||||
| 		EOF | ||||
|  | ||||
| 		# Change the URL of the repository to fetch different references. | ||||
| 		git -C porcelain remote set-url origin .. && | ||||
|  | ||||
| 		# Execute a dry-run fetch first. We do this to assert that the dry-run | ||||
| 		# and non-dry-run fetches produces the same output. Execution of the | ||||
| 		# fetch is expected to fail as we have a rejected reference update. | ||||
| 	test_must_fail git -C porcelain fetch \ | ||||
| 		test_must_fail git -C porcelain fetch $opt \ | ||||
| 			--porcelain --dry-run --prune origin $refspecs >actual && | ||||
| 		test_cmp expect actual && | ||||
|  | ||||
| 		# And now we perform a non-dry-run fetch. | ||||
| 	test_must_fail git -C porcelain fetch \ | ||||
| 		test_must_fail git -C porcelain fetch $opt \ | ||||
| 			--porcelain --prune origin $refspecs >actual 2>stderr && | ||||
| 		test_cmp expect actual && | ||||
| 		test_must_be_empty stderr | ||||
| 	' | ||||
| done | ||||
|  | ||||
| test_expect_success 'fetch porcelain with multiple remotes' ' | ||||
| 	test_when_finished "rm -rf porcelain" && | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Junio C Hamano
					Junio C Hamano