Merge branch 'bw/ref-prefix-for-configured-refspec'
* bw/ref-prefix-for-configured-refspec: fetch: do not pass ref-prefixes for fetch by exact SHA1
This commit is contained in:
commit
026b8ef9f7
@ -202,6 +202,8 @@ void refspec_ref_prefixes(const struct refspec *rs,
|
|||||||
const struct refspec_item *item = &rs->items[i];
|
const struct refspec_item *item = &rs->items[i];
|
||||||
const char *prefix = NULL;
|
const char *prefix = NULL;
|
||||||
|
|
||||||
|
if (item->exact_sha1)
|
||||||
|
continue;
|
||||||
if (rs->fetch == REFSPEC_FETCH)
|
if (rs->fetch == REFSPEC_FETCH)
|
||||||
prefix = item->src;
|
prefix = item->src;
|
||||||
else if (item->dst)
|
else if (item->dst)
|
||||||
|
@ -42,6 +42,10 @@ void refspec_clear(struct refspec *rs);
|
|||||||
int valid_fetch_refspec(const char *refspec);
|
int valid_fetch_refspec(const char *refspec);
|
||||||
|
|
||||||
struct argv_array;
|
struct argv_array;
|
||||||
|
/*
|
||||||
|
* Determine what <prefix> values to pass to the peer in ref-prefix lines
|
||||||
|
* (see Documentation/technical/protocol-v2.txt).
|
||||||
|
*/
|
||||||
void refspec_ref_prefixes(const struct refspec *rs,
|
void refspec_ref_prefixes(const struct refspec *rs,
|
||||||
struct argv_array *ref_prefixes);
|
struct argv_array *ref_prefixes);
|
||||||
|
|
||||||
|
@ -1121,6 +1121,25 @@ test_expect_success 'fetch exact SHA1' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'fetch exact SHA1 in protocol v2' '
|
||||||
|
mk_test testrepo heads/master hidden/one &&
|
||||||
|
git push testrepo master:refs/hidden/one &&
|
||||||
|
git -C testrepo config transfer.hiderefs refs/hidden &&
|
||||||
|
check_push_result testrepo $the_commit hidden/one &&
|
||||||
|
|
||||||
|
mk_child testrepo child &&
|
||||||
|
git -C child config protocol.version 2 &&
|
||||||
|
|
||||||
|
# make sure $the_commit does not exist here
|
||||||
|
git -C child repack -a -d &&
|
||||||
|
git -C child prune &&
|
||||||
|
test_must_fail git -C child cat-file -t $the_commit &&
|
||||||
|
|
||||||
|
# fetching the hidden object succeeds by default
|
||||||
|
# NEEDSWORK: should this match the v0 behavior instead?
|
||||||
|
git -C child fetch -v ../testrepo $the_commit:refs/heads/copy
|
||||||
|
'
|
||||||
|
|
||||||
for configallowtipsha1inwant in true false
|
for configallowtipsha1inwant in true false
|
||||||
do
|
do
|
||||||
test_expect_success "shallow fetch reachable SHA1 (but not a ref), allowtipsha1inwant=$configallowtipsha1inwant" '
|
test_expect_success "shallow fetch reachable SHA1 (but not a ref), allowtipsha1inwant=$configallowtipsha1inwant" '
|
||||||
|
Loading…
x
Reference in New Issue
Block a user