Method: Rugged::Repository.clone_at
- Defined in:
- ext/rugged/rugged_repo.c
.clone_at(url, local_path[, options]) ⇒ Object
Clone a repository from url to local_path.
The following options can be passed in the options Hash:
:bare ::
If +true+, the clone will be created as a bare repository.
Defaults to +false+.
:checkout_branch ::
The name of a branch to checkout. Defaults to the remote's +HEAD+.
:remote ::
The name to give to the "origin" remote. Defaults to <tt>"origin"</tt>.
:ignore_cert_errors ::
If set to +true+, errors while validating the remote's host certificate will be ignored.
:proxy_url ::
The url of an http proxy to use to access the remote repository.
:credentials ::
The credentials to use for the clone operation. Can be either an instance of one
of the Rugged::Credentials types, or a proc returning one of the former.
The proc will be called with the +url+, the +username+ from the url (if applicable) and
a list of applicable credential types.
:progress ::
A callback that will be executed with the textual progress received from the remote.
This is the text send over the progress side-band (ie. the "counting objects" output).
:transfer_progress ::
A callback that will be executed to report clone progress information. It will be passed
the amount of +total_objects+, +indexed_objects+, +received_objects+, +local_objects+,
+total_deltas+, +indexed_deltas+, and +received_bytes+.
:update_tips ::
A callback that will be executed each time a reference was updated locally. It will be
passed the +refname+, +old_oid+ and +new_oid+.
Example:
Repository.clone_at("https://github.com/libgit2/rugged.git", "./some/dir", {
transfer_progress: lambda { |total_objects, indexed_objects, received_objects, local_objects, total_deltas, indexed_deltas, received_bytes|
# ...
}
})
587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 |
# File 'ext/rugged/rugged_repo.c', line 587
static VALUE rb_git_repo_clone_at(int argc, VALUE *argv, VALUE klass)
{
VALUE url, local_path, rb_options_hash;
git_clone_options options = GIT_CLONE_OPTIONS_INIT;
struct rugged_remote_cb_payload remote_payload = { Qnil, Qnil, Qnil, Qnil, Qnil, Qnil, Qnil, 0 };
git_repository *repo;
int error;
rb_scan_args(argc, argv, "21", &url, &local_path, &rb_options_hash);
Check_Type(url, T_STRING);
FilePathValue(local_path);
parse_clone_options(&options, rb_options_hash, &remote_payload);
error = git_clone(&repo, StringValueCStr(url), StringValueCStr(local_path), &options);
if (RTEST(remote_payload.exception))
rb_jump_tag(remote_payload.exception);
rugged_exception_check(error);
return rugged_repo_new(klass, repo);
}
|