mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 21:34:15 +00:00
104 lines
3.3 KiB
C
104 lines
3.3 KiB
C
/*
|
|
* Copyright (C) 2012 the libgit2 contributors
|
|
*
|
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
*/
|
|
#ifndef INCLUDE_git_clone_h__
|
|
#define INCLUDE_git_clone_h__
|
|
|
|
#include "common.h"
|
|
#include "types.h"
|
|
#include "indexer.h"
|
|
#include "checkout.h"
|
|
|
|
|
|
/**
|
|
* @file git2/clone.h
|
|
* @brief Git cloning routines
|
|
* @defgroup git_clone Git cloning routines
|
|
* @ingroup Git
|
|
* @{
|
|
*/
|
|
GIT_BEGIN_DECL
|
|
|
|
/**
|
|
* Clone options structure
|
|
*
|
|
* Use zeros to indicate default settings. It's easiest to use the
|
|
* `GIT_CLONE_OPTIONS_INIT` macro:
|
|
*
|
|
* git_clone_options opts = GIT_CLONE_OPTIONS_INIT;
|
|
*
|
|
* - `out` is a pointer that receives the resulting repository object
|
|
* - `origin_remote` is a remote which will act as the initial fetch source
|
|
* - `workdir_path` is local directory to clone to
|
|
* - `fetch_progress_cb` is optional callback for fetch progress. Be aware that
|
|
* this is called inline with network and indexing operations, so performance
|
|
* may be affected.
|
|
* - `fetch_progress_payload` is payload for fetch_progress_cb
|
|
* - `checkout_opts` is options for the checkout step. If NULL, no checkout
|
|
* is performed
|
|
*/
|
|
|
|
typedef struct git_clone_options {
|
|
unsigned int version;
|
|
|
|
git_repository **out;
|
|
git_remote *origin_remote;
|
|
const char *workdir_path;
|
|
git_checkout_opts *checkout_opts;
|
|
git_transfer_progress_callback fetch_progress_cb;
|
|
void *fetch_progress_payload;
|
|
} git_clone_options;
|
|
|
|
#define GIT_CLONE_OPTIONS_VERSION 1
|
|
#define GIT_CLONE_OPTIONS_INIT {GIT_CLONE_OPTIONS_VERSION}
|
|
|
|
/**
|
|
* Clone a remote repository, and checkout the branch pointed to by the remote
|
|
* HEAD.
|
|
*
|
|
* @param out pointer that will receive the resulting repository object
|
|
* @param origin_remote a remote which will act as the initial fetch source
|
|
* @param workdir_path local directory to clone to
|
|
* @param fetch_progress_cb optional callback for fetch progress. Be aware that
|
|
* this is called inline with network and indexing operations, so performance
|
|
* may be affected.
|
|
* @param fetch_progress_payload payload for fetch_progress_cb
|
|
* @param checkout_opts options for the checkout step. If NULL, no checkout
|
|
* is performed
|
|
* @return 0 on success, GIT_ERROR otherwise (use giterr_last for information
|
|
* about the error)
|
|
*/
|
|
GIT_EXTERN(int) git_clone(
|
|
git_repository **out,
|
|
git_remote *origin_remote,
|
|
const char *workdir_path,
|
|
git_checkout_opts *checkout_opts,
|
|
git_transfer_progress_callback fetch_progress_cb,
|
|
void *fetch_progress_payload);
|
|
|
|
/**
|
|
* Create a bare clone of a remote repository.
|
|
*
|
|
* @param out pointer that will receive the resulting repository object
|
|
* @param origin_remote a remote which will act as the initial fetch source
|
|
* @param dest_path local directory to clone to
|
|
* @param fetch_progress_cb optional callback for fetch progress. Be aware that
|
|
* this is called inline with network and indexing operations, so performance
|
|
* may be affected.
|
|
* @param fetch_progress_payload payload for fetch_progress_cb
|
|
* @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error)
|
|
*/
|
|
GIT_EXTERN(int) git_clone_bare(
|
|
git_repository **out,
|
|
git_remote *origin_remote,
|
|
const char *dest_path,
|
|
git_transfer_progress_callback fetch_progress_cb,
|
|
void *fetch_progress_payload);
|
|
|
|
/** @} */
|
|
GIT_END_DECL
|
|
#endif
|