Commit 7442c000 by Edward Thomson

remote: deprecate resolve_url callback

Using a callback to set a resolve_url is not particularly idiomatic.
Deprecate it in favor of the `set_instance_url` and
`set_instance_pushurl` functions which can now be called from the
`git_remote_ready_cb` callback.
parent 72df17c6
...@@ -499,6 +499,7 @@ typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates, ...@@ -499,6 +499,7 @@ typedef int GIT_CALLBACK(git_push_negotiation)(const git_push_update **updates,
*/ */
typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, const char *status, void *data); typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, const char *status, void *data);
#ifndef GIT_DEPRECATE_HARD
/** /**
* Callback to resolve URLs before connecting to remote * Callback to resolve URLs before connecting to remote
* *
...@@ -510,8 +511,10 @@ typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, cons ...@@ -510,8 +511,10 @@ typedef int GIT_CALLBACK(git_push_update_reference_cb)(const char *refname, cons
* @param direction GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH * @param direction GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH
* @param payload Payload provided by the caller * @param payload Payload provided by the caller
* @return 0 on success, GIT_PASSTHROUGH or an error * @return 0 on success, GIT_PASSTHROUGH or an error
* @deprecated Use `git_remote_set_instance_url`
*/ */
typedef int GIT_CALLBACK(git_url_resolve_cb)(git_buf *url_resolved, const char *url, int direction, void *payload); typedef int GIT_CALLBACK(git_url_resolve_cb)(git_buf *url_resolved, const char *url, int direction, void *payload);
#endif
/** /**
* Callback invoked immediately before we attempt to connect to the * Callback invoked immediately before we attempt to connect to the
...@@ -620,11 +623,18 @@ struct git_remote_callbacks { ...@@ -620,11 +623,18 @@ struct git_remote_callbacks {
*/ */
void *payload; void *payload;
#ifdef GIT_DEPRECATE_HARD
void *reserved;
#else
/** /**
* Resolve URL before connecting to remote. * Resolve URL before connecting to remote.
* The returned URL will be used to connect to the remote instead. * The returned URL will be used to connect to the remote instead.
*
* This callback is deprecated; users should use
* git_remote_ready_cb and configure the instance URL instead.
*/ */
git_url_resolve_cb resolve_url; git_url_resolve_cb resolve_url;
#endif
}; };
#define GIT_REMOTE_CALLBACKS_VERSION 1 #define GIT_REMOTE_CALLBACKS_VERSION 1
......
...@@ -682,8 +682,16 @@ int git_remote_set_pushurl(git_repository *repo, const char *remote, const char* ...@@ -682,8 +682,16 @@ int git_remote_set_pushurl(git_repository *repo, const char *remote, const char*
return set_url(repo, remote, CONFIG_PUSHURL_FMT, url); return set_url(repo, remote, CONFIG_PUSHURL_FMT, url);
} }
static int resolve_url(git_buf *resolved_url, const char *url, int direction, const git_remote_callbacks *callbacks) static int resolve_url(
{ git_buf *resolved_url,
const char *url,
int direction,
const git_remote_callbacks *callbacks)
{
#ifdef GIT_DEPRECATE_HARD
GIT_UNUSED(direction);
GIT_UNUSED(callbacks);
#else
int status, error; int status, error;
if (callbacks && callbacks->resolve_url) { if (callbacks && callbacks->resolve_url) {
...@@ -698,11 +706,16 @@ static int resolve_url(git_buf *resolved_url, const char *url, int direction, co ...@@ -698,11 +706,16 @@ static int resolve_url(git_buf *resolved_url, const char *url, int direction, co
return status; return status;
} }
} }
#endif
return git_buf_sets(resolved_url, url); return git_buf_sets(resolved_url, url);
} }
int git_remote__urlfordirection(git_buf *url_out, struct git_remote *remote, int direction, const git_remote_callbacks *callbacks) int git_remote__urlfordirection(
git_buf *url_out,
struct git_remote *remote,
int direction,
const git_remote_callbacks *callbacks)
{ {
const char *url = NULL; const char *url = NULL;
......
...@@ -98,6 +98,7 @@ void test_network_remote_remotes__remote_ready(void) ...@@ -98,6 +98,7 @@ void test_network_remote_remotes__remote_ready(void)
git_buf_dispose(&url); git_buf_dispose(&url);
} }
#ifndef GIT_DEPRECATE_HARD
static int urlresolve_callback(git_buf *url_resolved, const char *url, int direction, void *payload) static int urlresolve_callback(git_buf *url_resolved, const char *url, int direction, void *payload)
{ {
cl_assert(strcmp(url, "git://github.com/libgit2/libgit2") == 0); cl_assert(strcmp(url, "git://github.com/libgit2/libgit2") == 0);
...@@ -111,9 +112,11 @@ static int urlresolve_callback(git_buf *url_resolved, const char *url, int direc ...@@ -111,9 +112,11 @@ static int urlresolve_callback(git_buf *url_resolved, const char *url, int direc
return GIT_OK; return GIT_OK;
} }
#endif
void test_network_remote_remotes__urlresolve(void) void test_network_remote_remotes__urlresolve(void)
{ {
#ifndef GIT_DEPRECATE_HARD
git_buf url = GIT_BUF_INIT; git_buf url = GIT_BUF_INIT;
git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT; git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT;
...@@ -131,8 +134,10 @@ void test_network_remote_remotes__urlresolve(void) ...@@ -131,8 +134,10 @@ void test_network_remote_remotes__urlresolve(void)
cl_assert_equal_s(url.ptr, "pushresolve"); cl_assert_equal_s(url.ptr, "pushresolve");
git_buf_dispose(&url); git_buf_dispose(&url);
#endif
} }
#ifndef GIT_DEPRECATE_HARD
static int urlresolve_passthrough_callback(git_buf *url_resolved, const char *url, int direction, void *payload) static int urlresolve_passthrough_callback(git_buf *url_resolved, const char *url, int direction, void *payload)
{ {
GIT_UNUSED(url_resolved); GIT_UNUSED(url_resolved);
...@@ -141,9 +146,11 @@ static int urlresolve_passthrough_callback(git_buf *url_resolved, const char *ur ...@@ -141,9 +146,11 @@ static int urlresolve_passthrough_callback(git_buf *url_resolved, const char *ur
GIT_UNUSED(payload); GIT_UNUSED(payload);
return GIT_PASSTHROUGH; return GIT_PASSTHROUGH;
} }
#endif
void test_network_remote_remotes__urlresolve_passthrough(void) void test_network_remote_remotes__urlresolve_passthrough(void)
{ {
#ifndef GIT_DEPRECATE_HARD
git_buf url = GIT_BUF_INIT; git_buf url = GIT_BUF_INIT;
const char *orig_url = "git://github.com/libgit2/libgit2"; const char *orig_url = "git://github.com/libgit2/libgit2";
...@@ -161,6 +168,7 @@ void test_network_remote_remotes__urlresolve_passthrough(void) ...@@ -161,6 +168,7 @@ void test_network_remote_remotes__urlresolve_passthrough(void)
cl_assert_equal_s(url.ptr, orig_url); cl_assert_equal_s(url.ptr, orig_url);
git_buf_dispose(&url); git_buf_dispose(&url);
#endif
} }
void test_network_remote_remotes__instance_url(void) void test_network_remote_remotes__instance_url(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment