Re: [PATCH v3] refs: return conflict error when checking packed refs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Ivan,

"Ivan Tse via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes:

> From: Ivan Tse <ivan.tse1@xxxxxxxxx>

[snip]

> diff --git a/refs/files-backend.c b/refs/files-backend.c
> index a098d14ea00..97473f377d1 100644
> --- a/refs/files-backend.c
> +++ b/refs/files-backend.c
> @@ -794,8 +794,10 @@ static int lock_raw_ref(struct files_ref_store *refs,
>  		 */
>  		if (refs_verify_refname_available(
>  				    refs->packed_ref_store, refname,
> -				    extras, NULL, err))
> +				    extras, NULL, err)) {
> +			ret = TRANSACTION_NAME_CONFLICT;
>  			goto error_return;
> +		}
>  	}
>
>  	ret = 0;
>

Shouldn't we also do this change in `lock_ref_oid_basic` where we gather
the same lock again for creating the reflog entry?

> diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
> index 33d34d5ae9e..530369266fd 100755
> --- a/t/t5510-fetch.sh
> +++ b/t/t5510-fetch.sh
> @@ -1091,6 +1091,22 @@ test_expect_success 'branchname D/F conflict resolved by --prune' '
>  	test_cmp expect actual
>  '
>
> +test_expect_success 'branchname D/F conflict rejected with targeted error message' '
> +	git clone . df-conflict-error &&
> +	git branch dir_conflict &&
> +	(
> +		cd df-conflict-error &&
> +		git update-ref refs/remotes/origin/dir_conflict/file HEAD &&
> +		test_must_fail git fetch 2>err &&
> +		test_grep "error: some local refs could not be updated; try running" err &&
> +		test_grep " ${SQ}git remote prune origin${SQ} to remove any old, conflicting branches" err &&
> +		git pack-refs --all &&
> +		test_must_fail git fetch 2>err-packed &&
> +		test_grep "error: some local refs could not be updated; try running" err-packed &&
> +		test_grep " ${SQ}git remote prune origin${SQ} to remove any old, conflicting branches" err-packed
> +	)
> +'
> +
>  test_expect_success 'fetching a one-level ref works' '
>  	test_commit extra &&
>  	git reset --hard HEAD^ &&
>
> base-commit: d4cc1ec35f3bcce816b69986ca41943f6ce21377
> --
> gitgitgadget

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux