mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 12:24:11 +00:00
Merge pull request #2682 from libgit2/cmn/fetch-tags-refspec
remote: check for the validity of the refspec when updating FETCH_HEAD
This commit is contained in:
commit
f890a84fe0
@ -964,6 +964,7 @@ static int remote_head_for_ref(git_remote_head **out, git_remote *remote, git_re
|
|||||||
(error = git_config_get_string(&branch_remote, config, git_buf_cstr(&config_key))) < 0 ||
|
(error = git_config_get_string(&branch_remote, config, git_buf_cstr(&config_key))) < 0 ||
|
||||||
git__strcmp(git_remote_name(remote), branch_remote) ||
|
git__strcmp(git_remote_name(remote), branch_remote) ||
|
||||||
(error = git_branch_upstream_name(&upstream_name, repo, ref_name)) < 0 ||
|
(error = git_branch_upstream_name(&upstream_name, repo, ref_name)) < 0 ||
|
||||||
|
!git_refspec_dst_matches(spec, git_buf_cstr(&upstream_name)) ||
|
||||||
(error = git_refspec_rtransform(&remote_name, spec, upstream_name.ptr)) < 0) {
|
(error = git_refspec_rtransform(&remote_name, spec, upstream_name.ptr)) < 0) {
|
||||||
/* Not an error if there is no upstream */
|
/* Not an error if there is no upstream */
|
||||||
if (error == GIT_ENOTFOUND)
|
if (error == GIT_ENOTFOUND)
|
||||||
|
@ -246,6 +246,33 @@ void test_network_remote_remotes__missing_refspecs(void)
|
|||||||
git_config_free(cfg);
|
git_config_free(cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_network_remote_remotes__nonmatch_upstream_refspec(void)
|
||||||
|
{
|
||||||
|
git_config *config;
|
||||||
|
git_remote *remote;
|
||||||
|
char *specstr[] = {
|
||||||
|
"refs/tags/*:refs/tags/*",
|
||||||
|
};
|
||||||
|
git_strarray specs = {
|
||||||
|
specstr,
|
||||||
|
1,
|
||||||
|
};
|
||||||
|
|
||||||
|
cl_git_pass(git_remote_create(&remote, _repo, "taggy", git_repository_path(_repo)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the current branch's upstream remote to a dummy ref so we call into the code
|
||||||
|
* which tries to check for the current branch's upstream in the refspecs
|
||||||
|
*/
|
||||||
|
cl_git_pass(git_repository_config(&config, _repo));
|
||||||
|
cl_git_pass(git_config_set_string(config, "branch.master.remote", "taggy"));
|
||||||
|
cl_git_pass(git_config_set_string(config, "branch.master.merge", "refs/heads/foo"));
|
||||||
|
|
||||||
|
cl_git_pass(git_remote_fetch(remote, &specs, NULL, NULL));
|
||||||
|
|
||||||
|
git_remote_free(remote);
|
||||||
|
}
|
||||||
|
|
||||||
void test_network_remote_remotes__list(void)
|
void test_network_remote_remotes__list(void)
|
||||||
{
|
{
|
||||||
git_strarray list;
|
git_strarray list;
|
||||||
|
Loading…
Reference in New Issue
Block a user