Esempio n. 1
0
main()
{
  char hex[] = "599955586da1c3ad514f3e65f1081d2012ec862d";
  git_oid oid;

  git_oid_mkstr(&oid, hex);
  printf("Raw 20 bytes: [%s]\n", (&oid)->id);
}
Esempio n. 2
0
File: rugged.c Progetto: 0CV0/rugged
static VALUE rb_git_hex_to_raw(VALUE self, VALUE hex)
{
	git_oid oid;

	Check_Type(hex, T_STRING);
	rugged_exception_check(git_oid_mkstr(&oid, RSTRING_PTR(hex)));
	return rugged_str_ascii(oid.id, 20);
}
Esempio n. 3
0
static VALUE rb_git_tree_entry_sha_SET(VALUE self, VALUE val)
{
	rugged_tree_entry *tree_entry;
	git_oid id;
	Data_Get_Struct(self, rugged_tree_entry, tree_entry);

	Check_Type(val, T_STRING);
	rugged_exception_check(git_oid_mkstr(&id, RSTRING_PTR(val)));

	git_tree_entry_set_id(tree_entry->entry, &id);
	return Qnil;
}
Esempio n. 4
0
static VALUE rb_git_tree_entry_sha_SET(VALUE self, VALUE val)
{
	rugged_tree_entry *tree_entry;
	git_oid id;
	Data_Get_Struct(self, rugged_tree_entry, tree_entry);

	Check_Type(val, T_STRING);
	if (git_oid_mkstr(&id, RSTRING_PTR(val)) < 0)
		rb_raise(rb_eTypeError, "Invalid SHA1 value");
	git_tree_entry_set_id(tree_entry->entry, &id);
	return Qnil;
}
Esempio n. 5
0
static int commit_quick_parse(git_revwalk *walk, commit_object *commit, git_rawobj *raw)
{
	const int parent_len = STRLEN("parent ") + GIT_OID_HEXSZ + 1;

	unsigned char *buffer = raw->data;
	unsigned char *buffer_end = buffer + raw->len;
	unsigned char *parents_start;

	int i, parents = 0;

	buffer += STRLEN("tree ") + GIT_OID_HEXSZ + 1;

	parents_start = buffer;
	while (buffer + parent_len < buffer_end && memcmp(buffer, "parent ", STRLEN("parent ")) == 0) {
		parents++;
		buffer += parent_len;
	}

	commit->parents = alloc_parents(commit, parents);
	if (commit->parents == NULL)
		return GIT_ENOMEM;

	buffer = parents_start;
	for (i = 0; i < parents; ++i) {
		git_oid oid;

		if (git_oid_mkstr(&oid, (char *)buffer + STRLEN("parent ")) < GIT_SUCCESS)
			return GIT_EOBJCORRUPTED;

		commit->parents[i] = commit_lookup(walk, &oid);
		if (commit->parents[i] == NULL)
			return GIT_ENOMEM;

		buffer += parent_len;
	}

	commit->out_degree = (unsigned short)parents;

	if ((buffer = memchr(buffer, '\n', buffer_end - buffer)) == NULL)
		return GIT_EOBJCORRUPTED;

	buffer = memchr(buffer, '>', buffer_end - buffer);
	if (buffer == NULL)
		return GIT_EOBJCORRUPTED;

	commit->time = strtol((char *)buffer + 2, NULL, 10);
	if (commit->time == 0)
		return GIT_EOBJCORRUPTED;

	commit->parsed = 1;
	return GIT_SUCCESS;
}
Esempio n. 6
0
static VALUE rb_git_indexentry_oid_SET(VALUE self, VALUE v) 
{
	git_index_entry *entry;
	int error;

	Data_Get_Struct(self, git_index_entry, entry);
	Check_Type(v, T_STRING);

	error = git_oid_mkstr(&entry->oid, RSTRING_PTR(v));
	rugged_exception_check(error);

	return Qnil;
}
Esempio n. 7
0
int egit_oid_from_binary(ErlNifEnv *env, ERL_NIF_TERM sha, git_oid *id) {
    ErlNifBinary ibin;
    char hex[41];

    if(!enif_inspect_binary(env, sha, &ibin))
        return 0;

    if(ibin.size > 40)
        return 0;

    memcpy(hex, ibin.data, ibin.size);
    hex[ibin.size + 1] = '\0';

    git_oid_mkstr(id, hex);

    return 1;
}
Esempio n. 8
0
static VALUE rb_git_tree_add_entry(VALUE self, VALUE rb_oid, VALUE rb_filename, VALUE rb_mode)
{
	git_tree_entry *new_entry;
	git_oid oid;
	git_tree *tree;
	int error;

	RUGGED_OBJ_UNWRAP(self, git_tree, tree);

	Check_Type(rb_oid, T_STRING);
	Check_Type(rb_filename, T_STRING);
	Check_Type(rb_mode, T_FIXNUM);

	error = git_oid_mkstr(&oid, RSTRING_PTR(rb_oid));
	rugged_exception_check(error);

	error = git_tree_add_entry(&new_entry, tree, &oid, RSTRING_PTR(rb_filename), FIX2INT(rb_mode));
	rugged_exception_check(error);

	return rb_git_createentry(self, new_entry);
}
Esempio n. 9
0
int git_commit__parse_oid(git_oid *oid, char **buffer_out, const char *buffer_end, const char *header)
{
	const size_t sha_len = GIT_OID_HEXSZ;
	const size_t header_len = strlen(header);

	char *buffer = *buffer_out;

	if (buffer + (header_len + sha_len + 1) > buffer_end)
		return GIT_EOBJCORRUPTED;

	if (memcmp(buffer, header, header_len) != 0)
		return GIT_EOBJCORRUPTED;

	if (buffer[header_len + sha_len] != '\n')
		return GIT_EOBJCORRUPTED;

	if (git_oid_mkstr(oid, buffer + header_len) < 0)
		return GIT_EOBJCORRUPTED;

	*buffer_out = buffer + (header_len + sha_len + 1);

	return 0;
}
Esempio n. 10
0
    "fd8430bc864cfcd5f10e5590f8a447e01b942bfe",
    "blob",
    "test-objects/fd",
    "test-objects/fd/8430bc864cfcd5f10e5590f8a447e01b942bfe",
    some_data,
    sizeof(some_data),
};

BEGIN_TEST(read_loose_commit)
    git_odb *db;
    git_oid id;
    git_obj obj;

    must_pass(write_object_files(odb_dir, &commit));
    must_pass(git_odb_open(&db, odb_dir));
    must_pass(git_oid_mkstr(&id, commit.id));

    must_pass(git_odb__read_loose(&obj, db, &id));
    must_pass(cmp_objects(&obj, &commit));

    git_obj_close(&obj);
    git_odb_close(db);
    must_pass(remove_object_files(odb_dir, &commit));
END_TEST

BEGIN_TEST(read_loose_tree)
    git_odb *db;
    git_oid id;
    git_obj obj;

    must_pass(write_object_files(odb_dir, &tree));
Esempio n. 11
0
#include "test_lib.h"
#include <git/oid.h>
#include <stdlib.h>

BEGIN_TEST(oid_szs)
	git_oid out;
	must_be_true(20 == GIT_OID_RAWSZ);
	must_be_true(40 == GIT_OID_HEXSZ);
	must_be_true(sizeof(out) == GIT_OID_RAWSZ);
	must_be_true(sizeof(out.id) == GIT_OID_RAWSZ);
END_TEST

BEGIN_TEST(empty_string)
	git_oid out;
	must_fail(git_oid_mkstr(&out, ""));
END_TEST

BEGIN_TEST(invalid_string_moo)
	git_oid out;
	must_fail(git_oid_mkstr(&out, "moo"));
END_TEST

static int from_hex(unsigned char i)
{
	if (i >= '0' && i <= '9')
		return i - '0';
	if (i >= 'a' && i <= 'f')
		return 10 + (i - 'a');
	if (i >= 'A' && i <= 'F')
		return 10 + (i - 'A');
	return -1;
Esempio n. 12
0
void StupIdsView::onFileLoaded()
{
//    m_unfinishedNotes.clear();
//    m_tempNotes.clear();

	// TODO: uncomment this when the comments-server will be usable
//    m_replyList = m_qnam->get(QNetworkRequest(QUrl("http://localhost:3000/comment/show/43")));

	int count = m_catalog->numberOfEntries();
	m_msgNew.resize(count);
	for (int i = 0; i < count; i ++)
		m_msgNew[i] = m_catalog->createIddiffMessage(i);


    m_browser->clear();

    QString poFilename = m_catalog->url().path();
    std::string tp_hash_stlstr = calculate_tp_hash(poFilename.toUtf8().data());
    const char *tp_hash_str = tp_hash_stlstr.c_str();
    printf("tp_hash_str = %s\n", tp_hash_str);

    m_browser->insertHtml("<b>Template-part hash:</b> " + QString(tp_hash_str) + "<br />");
//    if (m_entry.entry < m_commentsList.size())
//    {
//        m_browser->insertHtml(m_commentsList.at(m_entry.entry));
//    }

    git_oid tp_hash;
    git_oid_mkstr(&tp_hash, tp_hash_str);
    m_firstId = stupidsClient.getFirstId(&tp_hash);
    printf("m_firstId = %d\n", m_firstId);


    // OK/reject buttons are disabled until reviewing starts.
    m_reviewSave = new QPushButton(i18n("Save"));
    m_reviewGood = new QPushButton(i18n("Like"));
    m_reviewBad = new QPushButton(i18nc("Dislike, but I'm too lazy to fix it", "Dislike"));
    m_reviewCancel = new QPushButton(i18nc("Cancel review of this message", "Cancel review"));
    m_reviewHideReviewed = new QPushButton(i18nc("Hide reviewed messages", "Hide reviewed"));
    m_reviewHideReviewed->setCheckable(true);
    m_Layout->addWidget(m_reviewCommentEdit, 1, 0, 1, 2);
    m_reviewCommentEdit->setFixedHeight(100);
    m_Layout->addWidget(m_reviewSave, 2, 0, 2, 1);
    m_Layout->addWidget(m_reviewGood, 2, 1);
    m_Layout->addWidget(m_reviewBad, 3, 1);
    m_Layout->addWidget(m_reviewCancel, 4, 1);
    m_Layout->addWidget(m_reviewHideReviewed, 4, 0);
    connect(m_reviewGood, SIGNAL(clicked()), this, SLOT(onReviewGood()));
    connect(m_reviewBad, SIGNAL(clicked()), this, SLOT(onReviewBad()));
    connect(m_reviewCancel, SIGNAL(clicked()), this, SLOT(onReviewCancel()));
    connect(m_reviewSave, SIGNAL(clicked()), this, SLOT(onReviewSave()));
    connect(m_reviewCommentEdit, SIGNAL(textChanged()), this, SLOT(onReviewCommentChanged()));
    connect(m_reviewHideReviewed, SIGNAL(toggled(bool)), this, SLOT(onReviewHide(bool)));

    if (m_firstId == 0)
        return;

    for (int entry = 0; entry < m_catalog->numberOfEntries(); entry ++)
    {
        const char *commentText = m_iddiff->reviewCommentText(m_firstId + entry);
        if (commentText)
            m_reviewComments[entry] = QString::fromUtf8(commentText);
    }
}