mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-21 22:21:37 +00:00
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.
This commit is contained in:
parent
22261344de
commit
6fb373a0e8
@ -505,6 +505,21 @@ GIT_EXTERN(int) git_remote_init_callbacks(
|
|||||||
git_remote_callbacks *opts,
|
git_remote_callbacks *opts,
|
||||||
unsigned int version);
|
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 {
|
typedef struct {
|
||||||
int version;
|
int version;
|
||||||
|
|
||||||
@ -512,6 +527,11 @@ typedef struct {
|
|||||||
* Callbacks to use for this fetch operation
|
* Callbacks to use for this fetch operation
|
||||||
*/
|
*/
|
||||||
git_remote_callbacks callbacks;
|
git_remote_callbacks callbacks;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to perform a prune after the fetch
|
||||||
|
*/
|
||||||
|
git_fetch_prune_t prune;
|
||||||
} git_fetch_options;
|
} git_fetch_options;
|
||||||
|
|
||||||
#define GIT_FETCH_OPTIONS_VERSION 1
|
#define GIT_FETCH_OPTIONS_VERSION 1
|
||||||
|
12
src/remote.c
12
src/remote.c
@ -973,6 +973,7 @@ int git_remote_fetch(
|
|||||||
const char *reflog_message)
|
const char *reflog_message)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
bool prune = false;
|
||||||
git_buf reflog_msg_buf = GIT_BUF_INIT;
|
git_buf reflog_msg_buf = GIT_BUF_INIT;
|
||||||
const git_remote_callbacks *cbs = NULL;
|
const git_remote_callbacks *cbs = NULL;
|
||||||
|
|
||||||
@ -1008,7 +1009,16 @@ int git_remote_fetch(
|
|||||||
if (error < 0)
|
if (error < 0)
|
||||||
return error;
|
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);
|
error = git_remote_prune(remote, cbs);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
Loading…
Reference in New Issue
Block a user