Class: Rugged::Tree::Builder
- Inherits:
-
Object
- Object
- Rugged::Tree::Builder
- Defined in:
- ext/rugged/rugged_tree.c
Instance Method Summary collapse
-
#<<(rb_entry) ⇒ Object
Inser a new entry into
builder
. -
#[](path) ⇒ Object
Return an entry from
builder
based on its relative path. -
#clear ⇒ nil
Clear all entries in
builder
. -
#new([tree]) ⇒ Object
constructor
Create a new Rugged::Trebuilder instance.
-
#insert(rb_entry) ⇒ Object
Inser a new entry into
builder
. -
#reject! {|entry| ... } ⇒ nil
Deletes every tree
entry
frombuilder
for which the givenblock
evaluates to true. -
#remove(path) ⇒ Boolean
Remove an entry from
builder
by its relativepath
. -
#write(repo) ⇒ Object
Write
builder
‘s content as a tree to the givenrepo
and return theoid
for the newly created tree.
Constructor Details
#new([tree]) ⇒ Object
Create a new Rugged::Trebuilder instance.
If an optional tree
is given, the returned TreeBuilder will be initialized with the entry of tree
. Otherwise, the TreeBuilder will be empty and has to be filled manually.
628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 |
# File 'ext/rugged/rugged_tree.c', line 628
static VALUE rb_git_treebuilder_init(int argc, VALUE *argv, VALUE self)
{
git_treebuilder *builder;
git_tree *tree = NULL;
VALUE rb_object;
int error;
if (rb_scan_args(argc, argv, "01", &rb_object) == 1) {
if (!rb_obj_is_kind_of(rb_object, rb_cRuggedTree))
rb_raise(rb_eTypeError, "A Rugged::Tree instance is required");
Data_Get_Struct(rb_object, git_tree, tree);
}
error = git_treebuilder_create(&builder, tree);
rugged_exception_check(error);
DATA_PTR(self) = builder;
return Qnil;
}
|
Instance Method Details
#<<(entry) ⇒ nil #insert(entry) ⇒ nil
Inser a new entry into builder
.
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 |
# File 'ext/rugged/rugged_tree.c', line 686
static VALUE rb_git_treebuilder_insert(VALUE self, VALUE rb_entry)
{
git_treebuilder *builder;
VALUE rb_path, rb_oid, rb_attr;
git_oid oid;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(rb_entry, T_HASH);
rb_path = rb_hash_aref(rb_entry, CSTR2SYM("name"));
Check_Type(rb_path, T_STRING);
rb_oid = rb_hash_aref(rb_entry, CSTR2SYM("oid"));
Check_Type(rb_oid, T_STRING);
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));
rb_attr = rb_hash_aref(rb_entry, CSTR2SYM("filemode"));
Check_Type(rb_attr, T_FIXNUM);
error = git_treebuilder_insert(NULL,
builder,
StringValueCStr(rb_path),
&oid,
FIX2INT(rb_attr));
rugged_exception_check(error);
return Qnil;
}
|
#[](path) ⇒ Object
Return an entry from builder
based on its relative path.
669 670 671 672 673 674 675 676 677 |
# File 'ext/rugged/rugged_tree.c', line 669
static VALUE rb_git_treebuilder_get(VALUE self, VALUE path)
{
git_treebuilder *builder;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(path, T_STRING);
return rb_git_treeentry_fromC(git_treebuilder_get(builder, StringValueCStr(path)));
}
|
#clear ⇒ nil
Clear all entries in builder
.
655 656 657 658 659 660 661 |
# File 'ext/rugged/rugged_tree.c', line 655
static VALUE rb_git_treebuilder_clear(VALUE self)
{
git_treebuilder *builder;
Data_Get_Struct(self, git_treebuilder, builder);
git_treebuilder_clear(builder);
return Qnil;
}
|
#<<(entry) ⇒ nil #insert(entry) ⇒ nil
Inser a new entry into builder
.
686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 |
# File 'ext/rugged/rugged_tree.c', line 686
static VALUE rb_git_treebuilder_insert(VALUE self, VALUE rb_entry)
{
git_treebuilder *builder;
VALUE rb_path, rb_oid, rb_attr;
git_oid oid;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(rb_entry, T_HASH);
rb_path = rb_hash_aref(rb_entry, CSTR2SYM("name"));
Check_Type(rb_path, T_STRING);
rb_oid = rb_hash_aref(rb_entry, CSTR2SYM("oid"));
Check_Type(rb_oid, T_STRING);
rugged_exception_check(git_oid_fromstr(&oid, StringValueCStr(rb_oid)));
rb_attr = rb_hash_aref(rb_entry, CSTR2SYM("filemode"));
Check_Type(rb_attr, T_FIXNUM);
error = git_treebuilder_insert(NULL,
builder,
StringValueCStr(rb_path),
&oid,
FIX2INT(rb_attr));
rugged_exception_check(error);
return Qnil;
}
|
#reject! {|entry| ... } ⇒ nil
Deletes every tree entry
from builder
for which the given block
evaluates to true.
780 781 782 783 784 785 786 787 788 789 |
# File 'ext/rugged/rugged_tree.c', line 780
static VALUE rb_git_treebuilder_filter(VALUE self)
{
git_treebuilder *builder;
rb_need_block();
Data_Get_Struct(self, git_treebuilder, builder);
git_treebuilder_filter(builder, &treebuilder_cb, (void *)rb_block_proc());
return Qnil;
}
|
#remove(path) ⇒ Boolean
Remove an entry from builder
by its relative path
.
Returns true
if the entry was successfully removed, or false
if the entry was not found.
725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 |
# File 'ext/rugged/rugged_tree.c', line 725
static VALUE rb_git_treebuilder_remove(VALUE self, VALUE path)
{
git_treebuilder *builder;
int error;
Data_Get_Struct(self, git_treebuilder, builder);
Check_Type(path, T_STRING);
error = git_treebuilder_remove(builder, StringValueCStr(path));
if (error == GIT_ENOTFOUND)
return Qfalse;
rugged_exception_check(error);
return Qtrue;
}
|
#write(repo) ⇒ Object
Write builder
‘s content as a tree to the given repo
and return the oid
for the newly created tree.
748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 |
# File 'ext/rugged/rugged_tree.c', line 748
static VALUE rb_git_treebuilder_write(VALUE self, VALUE rb_repo)
{
git_treebuilder *builder;
git_repository *repo;
git_oid written_id;
int error;
rugged_check_repo(rb_repo);
Data_Get_Struct(rb_repo, git_repository, repo);
Data_Get_Struct(self, git_treebuilder, builder);
error = git_treebuilder_write(&written_id, repo, builder);
rugged_exception_check(error);
return rugged_create_oid(&written_id);
}
|