Merge branch 'it/refs-name-conflict'
Expose "name conflict" error when a ref creation fails due to D/F conflict in the ref namespace, to improve an error message given by "git fetch". * it/refs-name-conflict: refs: return conflict error when checking packed refs
This commit is contained in:
@@ -794,8 +794,10 @@ retry:
|
||||
*/
|
||||
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;
|
||||
|
||||
@@ -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^ &&
|
||||
|
||||
Reference in New Issue
Block a user