class Rugged::Object

Public Class Methods

new(repo, oid) → object click to toggle source
lookup(repo, oid) → object

Find and return the git object inside repo with the given oid.

oid can either have be the complete, 40 character string or any unique prefix.

VALUE rb_git_object_lookup(VALUE klass, VALUE rb_repo, VALUE rb_hex)
{
        git_object *object;
        git_otype type;
        git_oid oid;
        int error;
        int oid_length;

        git_repository *repo;

        type = class2otype(klass);

        if (type == GIT_OBJ_BAD)
                type = GIT_OBJ_ANY;

        Check_Type(rb_hex, T_STRING);
        oid_length = (int)RSTRING_LEN(rb_hex);

        rugged_check_repo(rb_repo);

        if (oid_length > GIT_OID_HEXSZ)
                rb_raise(rb_eTypeError, "The given OID is too long");

        Data_Get_Struct(rb_repo, git_repository, repo);

        error = git_oid_fromstrn(&oid, RSTRING_PTR(rb_hex), oid_length);
        rugged_exception_check(error);

        if (oid_length < GIT_OID_HEXSZ)
                error = git_object_lookup_prefix(&object, repo, &oid, oid_length, type);
        else
                error = git_object_lookup(&object, repo, &oid, type);

        rugged_exception_check(error);

        return rugged_object_new(rb_repo, object);
}
new(repo, oid) → object click to toggle source
lookup(repo, oid) → object

Find and return the git object inside repo with the given oid.

oid can either have be the complete, 40 character string or any unique prefix.

VALUE rb_git_object_lookup(VALUE klass, VALUE rb_repo, VALUE rb_hex)
{
        git_object *object;
        git_otype type;
        git_oid oid;
        int error;
        int oid_length;

        git_repository *repo;

        type = class2otype(klass);

        if (type == GIT_OBJ_BAD)
                type = GIT_OBJ_ANY;

        Check_Type(rb_hex, T_STRING);
        oid_length = (int)RSTRING_LEN(rb_hex);

        rugged_check_repo(rb_repo);

        if (oid_length > GIT_OID_HEXSZ)
                rb_raise(rb_eTypeError, "The given OID is too long");

        Data_Get_Struct(rb_repo, git_repository, repo);

        error = git_oid_fromstrn(&oid, RSTRING_PTR(rb_hex), oid_length);
        rugged_exception_check(error);

        if (oid_length < GIT_OID_HEXSZ)
                error = git_object_lookup_prefix(&object, repo, &oid, oid_length, type);
        else
                error = git_object_lookup(&object, repo, &oid, type);

        rugged_exception_check(error);

        return rugged_object_new(rb_repo, object);
}
rev_parse(repo, str) → object click to toggle source

Find and return a single object inside repo as specified by the git revision string str.

See git-scm.com/docs/git-rev-parse.html#_specifying_revisions or man gitrevisions for information on the accepted syntax.

Raises a Rugged::InvalidError if str does not contain a valid revision string.

VALUE rb_git_object_rev_parse(VALUE klass, VALUE rb_repo, VALUE rb_spec)
{
        return rugged_object_rev_parse(rb_repo, rb_spec, 1);
}
rev_parse_oid(repo, str) → oid click to toggle source

Find and return the id of the object inside repo as specified by the git revision string str.

See git-scm.com/docs/git-rev-parse.html#_specifying_revisions or man gitrevisions for information on the accepted syntax.

Raises a Rugged::InvalidError if str does not contain a valid revision string.

VALUE rb_git_object_rev_parse_oid(VALUE klass, VALUE rb_repo, VALUE rb_spec)
{
        return rugged_object_rev_parse(rb_repo, rb_spec, 0);
}

Public Instance Methods

<=>(other) click to toggle source
# File lib/rugged/object.rb, line 8
def <=>(other)
  self.oid <=> other.oid
end
object == other click to toggle source

Returns true only if object and other are both instances or subclasses of Rugged::Object and have the same object id, false otherwise.

static VALUE rb_git_object_equal(VALUE self, VALUE other)
{
        git_object *a, *b;

        if (!rb_obj_is_kind_of(other, rb_cRuggedObject))
                return Qfalse;

        TypedData_Get_Struct(self, git_object, &rugged_object_type, a);
        TypedData_Get_Struct(other, git_object, &rugged_object_type, b);

        return git_oid_cmp(git_object_id(a), git_object_id(b)) == 0 ? Qtrue : Qfalse;
}
oid → oid click to toggle source

Return the Object ID (a 40 character SHA1 hash) for object.

static VALUE rb_git_object_oid_GET(VALUE self)
{
        git_object *object;
        TypedData_Get_Struct(self, git_object, &rugged_object_type, object);
        return rugged_create_oid(git_object_id(object));
}
read_raw → raw_object click to toggle source

Returns the git object as a Rugged::OdbObject instance.

static VALUE rb_git_object_read_raw(VALUE self)
{
        git_object *object;
        TypedData_Get_Struct(self, git_object, &rugged_object_type, object);

        return rugged_raw_read(git_object_owner(object), git_object_id(object));
}
type → type click to toggle source

Returns the object’s type. Can be one of :commit, :tag, :tree or :blob.

static VALUE rb_git_object_type_GET(VALUE self)
{
        git_object *object;
        TypedData_Get_Struct(self, git_object, &rugged_object_type, object);

        return rugged_otype_new(git_object_type(object));
}