summaryrefslogtreecommitdiff
path: root/test-path-utils.c
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2015-06-22 16:03:01 +0200
committerJunio C Hamano <gitster@pobox.com>2015-06-22 13:17:11 -0700
commit58f233ce1ed67bbc31a429fde5c65d5050fdbd7d (patch)
tree8f767c602864bd958f26d0870c56322f256dac11 /test-path-utils.c
parent79e4d8a9b839ed18816e78ed52f0ff5a5f6e9a63 (diff)
downloadgit-58f233ce1ed67bbc31a429fde5c65d5050fdbd7d.tar.gz
initial_ref_transaction_commit(): function for initial ref creation
"git clone" uses shortcuts when creating the initial set of references: * It writes them directly to packed-refs. * It doesn't lock the individual references (though it does lock the packed-refs file). * It doesn't check for refname conflicts between two new references or between one new reference and any hypothetical old ones. * It doesn't create reflog entries for the reference creations. This functionality was implemented in builtin/clone.c. But really that file shouldn't have such intimate knowledge of how references are stored. So provide a new function in the refs API, initial_ref_transaction_commit(), which can be used for initial reference creation. The new function is based on the ref_transaction interface. This means that we can make some other functions private to the refs module. That will be done in a followup commit. It would seem to make sense to add a test here that there are no existing references, because that is how the function *should* be used. But in fact, the "testgit" remote helper appears to call it *after* having set up refs/remotes/<name>/HEAD and refs/remotes/<name>/master, so we can't be so strict. For now, the function trusts its caller to only call it when it makes sense. Future commits will add some more limited sanity checks. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'test-path-utils.c')
0 files changed, 0 insertions, 0 deletions