mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-05 20:33:41 +00:00
Add git_submodule_resolve_url()
This commit is contained in:
parent
6de018bbf1
commit
52fba18f4e
@ -271,6 +271,16 @@ GIT_EXTERN(const char *) git_submodule_path(git_submodule *submodule);
|
|||||||
*/
|
*/
|
||||||
GIT_EXTERN(const char *) git_submodule_url(git_submodule *submodule);
|
GIT_EXTERN(const char *) git_submodule_url(git_submodule *submodule);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve a submodule url relative to the given repository.
|
||||||
|
*
|
||||||
|
* @param out buffer to store the absolute submodule url in
|
||||||
|
* @param repository Pointer to repository object
|
||||||
|
* @param url Relative url
|
||||||
|
* @return 0 or an error code
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(int) git_submodule_resolve_url(git_buf *out, git_repository *repo, const char *url);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the branch for the submodule.
|
* Get the branch for the submodule.
|
||||||
*
|
*
|
||||||
|
@ -229,16 +229,7 @@ int git_submodule_add_setup(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* resolve parameters */
|
/* resolve parameters */
|
||||||
|
error = git_submodule_resolve_url(&real_url, repo, url);
|
||||||
if (url[0] == '.' && (url[1] == '/' || (url[1] == '.' && url[2] == '/'))) {
|
|
||||||
if (!(error = lookup_head_remote(&real_url, repo)))
|
|
||||||
error = git_path_apply_relative(&real_url, url);
|
|
||||||
} else if (strchr(url, ':') != NULL || url[0] == '/') {
|
|
||||||
error = git_buf_sets(&real_url, url);
|
|
||||||
} else {
|
|
||||||
giterr_set(GITERR_SUBMODULE, "Invalid format for submodule URL");
|
|
||||||
error = -1;
|
|
||||||
}
|
|
||||||
if (error)
|
if (error)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -533,6 +524,25 @@ const char *git_submodule_url(git_submodule *submodule)
|
|||||||
return submodule->url;
|
return submodule->url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int git_submodule_resolve_url(git_buf *out, git_repository *repo, const char *url)
|
||||||
|
{
|
||||||
|
assert(url);
|
||||||
|
|
||||||
|
int error = 0;
|
||||||
|
|
||||||
|
if (url[0] == '.' && (url[1] == '/' || (url[1] == '.' && url[2] == '/'))) {
|
||||||
|
if (!(error = lookup_head_remote(out, repo)))
|
||||||
|
error = git_path_apply_relative(out, url);
|
||||||
|
} else if (strchr(url, ':') != NULL || url[0] == '/') {
|
||||||
|
error = git_buf_sets(out, url);
|
||||||
|
} else {
|
||||||
|
giterr_set(GITERR_SUBMODULE, "Invalid format for submodule URL");
|
||||||
|
error = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
const char *git_submodule_branch(git_submodule *submodule)
|
const char *git_submodule_branch(git_submodule *submodule)
|
||||||
{
|
{
|
||||||
assert(submodule);
|
assert(submodule);
|
||||||
|
Loading…
Reference in New Issue
Block a user