Commit 6fb373a0 by Carlos Martín Nieto

remote: add prune option to fetch

Add a prune setting in the fetch options to allow to fall back to the
configuration (the default) or to set it on or off.
parent 22261344
......@@ -505,6 +505,21 @@ GIT_EXTERN(int) git_remote_init_callbacks(
git_remote_callbacks *opts,
unsigned int version);
typedef enum {
/**
* Use the setting from the configuration
*/
GIT_FETCH_PRUNE_FALLBACK,
/**
* Force pruning on
*/
GIT_FETCH_PRUNE,
/**
* Force pruning off
*/
GIT_FETCH_NO_PRUNE,
} git_fetch_prune_t;
typedef struct {
int version;
......@@ -512,6 +527,11 @@ typedef struct {
* Callbacks to use for this fetch operation
*/
git_remote_callbacks callbacks;
/**
* Whether to perform a prune after the fetch
*/
git_fetch_prune_t prune;
} git_fetch_options;
#define GIT_FETCH_OPTIONS_VERSION 1
......
......@@ -973,6 +973,7 @@ int git_remote_fetch(
const char *reflog_message)
{
int error;
bool prune = false;
git_buf reflog_msg_buf = GIT_BUF_INIT;
const git_remote_callbacks *cbs = NULL;
......@@ -1008,7 +1009,16 @@ int git_remote_fetch(
if (error < 0)
return error;
if (remote->prune_refs)
if (opts && opts->prune == GIT_FETCH_PRUNE)
prune = true;
else if (opts && opts->prune == GIT_FETCH_PRUNE_FALLBACK && remote->prune_refs)
prune = true;
else if (opts && opts->prune == GIT_FETCH_NO_PRUNE)
prune = false;
else
prune = remote->prune_refs;
if (prune)
error = git_remote_prune(remote, cbs);
return error;
......
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