class Rugged::RemoteCollection
Public Class Methods
Creates and returns a new collection of remotes for the given repo
.
static VALUE rb_git_remote_collection_initialize(VALUE self, VALUE repo) { rugged_set_owner(self, repo); return self; }
Public Instance Methods
Lookup a remote in the collection with the given name
.
Returns a new Rugged::Remote
object or nil
if the remote doesn't exist.
@repo.remotes["origin"] #=> #<Rugged::Remote:0x00000001fbfa80>
static VALUE rb_git_remote_collection_aref(VALUE self, VALUE rb_name) { git_remote *remote; git_repository *repo; int error; VALUE rb_repo = rugged_owner(self); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); Check_Type(rb_name, T_STRING); error = git_remote_lookup(&remote, repo, StringValueCStr(rb_name)); if (error == GIT_ENOTFOUND) return Qnil; rugged_exception_check(error); return rugged_remote_new(rb_repo, remote); }
Add a fetch refspec to the remote.
static VALUE rb_git_remote_collection_add_fetch_refspec(VALUE self, VALUE rb_name_or_remote, VALUE rb_refspec) { return rb_git_remote_collection_add_refspec(self, rb_name_or_remote, rb_refspec, GIT_DIRECTION_FETCH); }
Add a push refspec to the remote.
static VALUE rb_git_remote_collection_add_push_refspec(VALUE self, VALUE rb_name_or_remote, VALUE rb_refspec) { return rb_git_remote_collection_add_refspec(self, rb_name_or_remote, rb_refspec, GIT_DIRECTION_PUSH); }
Add a new remote with name
and url
to repository
-
url
: a valid remote url -
name
: a valid remote name
Returns a new Rugged::Remote
object.
@repo.remotes.create('origin', 'git://github.com/libgit2/rugged.git') #=> #<Rugged::Remote:0x00000001fbfa80>
static VALUE rb_git_remote_collection_create(VALUE self, VALUE rb_name, VALUE rb_url) { git_remote *remote; git_repository *repo; int error; VALUE rb_repo = rugged_owner(self); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); Check_Type(rb_name, T_STRING); Check_Type(rb_url, T_STRING); error = git_remote_create( &remote, repo, StringValueCStr(rb_name), StringValueCStr(rb_url)); rugged_exception_check(error); return rugged_remote_new(rb_repo, remote); }
Return a new remote with url
in repository
, the remote is not persisted:
-
url
: a valid remote url
Returns a new Rugged::Remote
object.
@repo.remotes.create_anonymous('git://github.com/libgit2/libgit2.git') #=> #<Rugged::Remote:0x00000001fbfa80>
static VALUE rb_git_remote_collection_create_anonymous(VALUE self, VALUE rb_url) { git_remote *remote; git_repository *repo; int error; VALUE rb_repo = rugged_owner(self); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); Check_Type(rb_url, T_STRING); error = git_remote_create_anonymous( &remote, repo, StringValueCStr(rb_url)); rugged_exception_check(error); return rugged_remote_new(rb_repo, remote); }
Delete the specified remote.
repo.remotes.delete("origin") # Remote no longer exists in the configuration.
static VALUE rb_git_remote_collection_delete(VALUE self, VALUE rb_name_or_remote) { VALUE rb_repo = rugged_owner(self); git_repository *repo; if (rb_obj_is_kind_of(rb_name_or_remote, rb_cRuggedRemote)) rb_name_or_remote = rb_funcall(rb_name_or_remote, rb_intern("name"), 0); if (TYPE(rb_name_or_remote) != T_STRING) rb_raise(rb_eTypeError, "Expecting a String or Rugged::Remote instance"); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); rugged_exception_check( git_remote_delete(repo, StringValueCStr(rb_name_or_remote)) ); return Qnil; }
Iterate through all the remotes in the collection's repository
.
The given block will be called once with a Rugged::Remote
instance for each remote.
If no block is given, an enumerator will be returned.
static VALUE rb_git_remote_collection_each(VALUE self) { return rb_git_remote_collection__each(self, 0); }
Iterate through all the remote names in the collection's repository
.
The given block will be called once with the name of each remote.
If no block is given, an enumerator will be returned.
static VALUE rb_git_remote_collection_each_name(VALUE self) { return rb_git_remote_collection__each(self, 1); }
Renames a remote.
All remote-tracking branches and configuration settings for the remote are updated.
Non-default refspecs cannot be renamed automatically and will be yielded to the given block.
Anonymous, in-memory remotes created through +ReferenceCollection#create_anonymous+ can not be given a name through this method.
Returns a new Rugged::Remote
object with the new name.
static VALUE rb_git_remote_collection_rename(VALUE self, VALUE rb_name_or_remote, VALUE rb_new_name) { VALUE rb_repo = rugged_owner(self); git_repository *repo; size_t i; int error, exception; git_strarray problems; if (!rb_block_given_p()) rb_raise(rb_eArgError, "Rugged::RemoteCollection#rename must be called with a block"); Check_Type(rb_new_name, T_STRING); if (rb_obj_is_kind_of(rb_name_or_remote, rb_cRuggedRemote)) rb_name_or_remote = rb_funcall(rb_name_or_remote, rb_intern("name"), 0); if (TYPE(rb_name_or_remote) != T_STRING) rb_raise(rb_eTypeError, "Expecting a String or Rugged::Remote instance"); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); error = git_remote_rename(&problems, repo, StringValueCStr(rb_name_or_remote), StringValueCStr(rb_new_name)); rugged_exception_check(error); for (i = exception = 0; !exception && i < problems.count; ++i) { rb_protect(rb_yield, rb_str_new_utf8(problems.strings[i]), &exception); } git_strarray_free(&problems); if (exception) rb_jump_tag(exception); return rb_git_remote_collection_aref(self, rb_new_name); }
Sets the remote's url for pushing in the configuration. Rugged::Remote
objects already in memory will not be affected.
repo.remotes.set_push_url("origin", 'git://github.com/libgit2/rugged.git')
static VALUE rb_git_remote_collection_set_push_url(VALUE self, VALUE rb_name_or_remote, VALUE rb_url) { VALUE rb_repo = rugged_owner(self); git_repository *repo; if (rb_obj_is_kind_of(rb_name_or_remote, rb_cRuggedRemote)) rb_name_or_remote = rb_funcall(rb_name_or_remote, rb_intern("name"), 0); if (TYPE(rb_name_or_remote) != T_STRING) rb_raise(rb_eTypeError, "Expecting a String or Rugged::Remote instance"); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); Check_Type(rb_url, T_STRING); rugged_exception_check( git_remote_set_pushurl(repo, StringValueCStr(rb_name_or_remote), StringValueCStr(rb_url)) ); return Qnil; }
Sets the remote's url in the configuration. Rugged::Remote
objects already in memory will not be affected.
repo.remotes.set_url("origin", 'git://github.com/libgit2/rugged.git')
static VALUE rb_git_remote_collection_set_url(VALUE self, VALUE rb_name_or_remote, VALUE rb_url) { VALUE rb_repo = rugged_owner(self); git_repository *repo; if (rb_obj_is_kind_of(rb_name_or_remote, rb_cRuggedRemote)) rb_name_or_remote = rb_funcall(rb_name_or_remote, rb_intern("name"), 0); if (TYPE(rb_name_or_remote) != T_STRING) rb_raise(rb_eTypeError, "Expecting a String or Rugged::Remote instance"); rugged_check_repo(rb_repo); Data_Get_Struct(rb_repo, git_repository, repo); Check_Type(rb_url, T_STRING); rugged_exception_check( git_remote_set_url(repo, StringValueCStr(rb_name_or_remote), StringValueCStr(rb_url)) ); return Qnil; }