cmd->error_string = "broken symref";
return;
}
- dst_name = strip_namespace(dst_name);
if (!(item = string_list_lookup(list, dst_name)))
return;
{
struct command *cmd;
struct string_list ref_list = STRING_LIST_INIT_NODUP;
+ struct strbuf ref_name = STRBUF_INIT;
for (cmd = commands; cmd; cmd = cmd->next) {
- struct string_list_item *item =
- string_list_append(&ref_list, cmd->ref_name);
+ struct string_list_item *item;
+ strbuf_reset(&ref_name);
+ strbuf_addf(&ref_name, "%s%s", get_git_namespace(), cmd->ref_name);
+ item = string_list_append(&ref_list, ref_name.buf);
item->util = (void *)cmd;
}
string_list_sort(&ref_list);
check_aliased_update(cmd, &ref_list);
}
+ strbuf_release(&ref_name);
string_list_clear(&ref_list, 0);
}
)
'
+test_expect_success 'pushing to symref pointing outside the namespace' '
+ (
+ cd pushee &&
+ git symbolic-ref refs/namespaces/namespace/refs/heads/main refs/heads/main &&
+ cd ../original &&
+ git push pushee-namespaced main &&
+ git ls-remote pushee-unnamespaced refs/heads/main >actual &&
+ printf "$commit1\trefs/heads/main\n" >expected &&
+ printf "$commit1\trefs/namespaces/namespace/refs/heads/main\n" >>expected &&
+ test_cmp expected actual
+ )
+'
+
test_done