t1404: new tests of ref D/F conflicts within transactions
commit433efcad9d3c0c0b30f01b3de2cfa51a854befb3
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 11 May 2015 15:25:03 +0000 (11 17:25 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 May 2015 18:50:16 +0000 (11 11:50 -0700)
tree4623b8c61b7b4a573cca5967b0ebe62accae2396
parent3d4a3ffe64162b45ae7c991fc60623ecb4678cfd
t1404: new tests of ref D/F conflicts within transactions

Add some tests of reference D/F conflicts (by which I mean the fact
that references like "refs/foo" and "refs/foo/bar" are not allowed to
coexist) in the context of reference transactions.

The test of creating two conflicting references in the same
transaction fails, leaving the transaction half-completed. This will
be fixed later in this patch series.

Please note that the error messages emitted in the case of conflicts
are not very user-friendly. In particular, when the conflicts involve
loose references, then the errors are reported as

    error: there are still refs under 'refs/foo'
    fatal: Cannot lock the ref 'refs/foo'.

or

    error: unable to resolve reference refs/foo/bar: Not a directory
    fatal: Cannot lock the ref 'refs/foo/bar'.

This is because lock_ref_sha1_basic() fails while trying to lock the
new reference, before it even gets to the is_refname_available()
check. This situation will also be improved later in this patch
series.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
t/t1404-update-ref-df-conflicts.sh [new file with mode: 0755]