Method: Rugged::Tree::Builder.new

Defined in:
ext/rugged/rugged_tree.c

.Tree::Builder.new(repository, [tree]) ⇒ Object

Create a new Rugged::Tree::Builder instance to write a tree to the given repository.

If an optional tree is given, the returned Tree::Builder will be initialized with the entry of tree. Otherwise, the Tree::Builder will be empty and has to be filled manually.

[View source]

727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
# File 'ext/rugged/rugged_tree.c', line 727

static VALUE rb_git_treebuilder_new(int argc, VALUE *argv, VALUE klass)
{
  git_treebuilder *builder;
  git_repository *repo;
  git_tree *tree = NULL;
  VALUE rb_object, rb_builder, rb_repo;
  int error;

  if (rb_scan_args(argc, argv, "11", &rb_repo, &rb_object) == 2) {
    if (!rb_obj_is_kind_of(rb_object, rb_cRuggedTree))
      rb_raise(rb_eTypeError, "A Rugged::Tree instance is required");

    TypedData_Get_Struct(rb_object, git_tree, &rugged_object_type, tree);
  }

  rugged_check_repo(rb_repo);
  Data_Get_Struct(rb_repo, git_repository, repo);

  error = git_treebuilder_new(&builder, repo, tree);
  rugged_exception_check(error);

  rb_builder = Data_Wrap_Struct(klass, NULL, &rb_git_treebuilder_free, builder);
  rugged_set_owner(rb_builder, rb_repo);

  return rb_builder;
}