Git-Raw
view release on metacpan or search on metacpan
xs/Commit.xs view on Meta::CPAN
RETVAL = r;
OUTPUT: RETVAL
SV *
time(self)
Commit self
PREINIT:
char *buf;
git_time_t time;
CODE:
time = git_commit_time(self);
Newx(buf, snprintf(NULL, 0, "%" PRId64, time) + 1, char);
sprintf(buf, "%" PRId64, time);
RETVAL = newSVpv(buf, 0);
Safefree(buf);
OUTPUT: RETVAL
int
offset(self)
Commit self
CODE:
RETVAL = git_commit_time_offset(self);
OUTPUT: RETVAL
SV *
tree(self)
SV *self
PREINIT:
int rc;
SV *repo;
Tree tree;
CODE:
repo = GIT_SV_TO_MAGIC(self);
rc = git_commit_tree(&tree, GIT_SV_TO_PTR(Commit, self));
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(RETVAL, "Git::Raw::Tree", tree, repo);
OUTPUT: RETVAL
void
parents(self)
SV *self
PREINIT:
int ctx;
PPCODE:
ctx = GIMME_V;
if (ctx != G_VOID) {
int rc, count;
Commit child;
SV *repo = GIT_SV_TO_MAGIC(self);
child = GIT_SV_TO_PTR(Commit, self);
count = git_commit_parentcount(child);
if (ctx == G_ARRAY) {
int i;
for (i = 0; i < count; i++) {
SV *tmp;
Commit parent;
rc = git_commit_parent(&parent, child, i);
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(
tmp, "Git::Raw::Commit", parent, repo
);
mXPUSHs(tmp);
}
XSRETURN((int) count);
} else {
mXPUSHs(newSViv((int) count));
XSRETURN(1);
}
} else
XSRETURN_EMPTY;
SV *
merge(self, commit, ...)
SV *self
Commit commit
PROTOTYPE: $;$;$
PREINIT:
int rc;
SV *repo;
Repository repo_ptr;
Index index;
git_merge_options merge_opts = GIT_MERGE_OPTIONS_INIT;
CODE:
repo = GIT_SV_TO_MAGIC(self);
repo_ptr = INT2PTR(Repository, SvIV((SV *) repo));
if (items == 3) {
HV *opts = git_ensure_hv(ST(2), "merge_opts");
git_hv_to_merge_opts(opts, &merge_opts);
}
rc = git_merge_commits(
&index,
( run in 0.509 second using v1.01-cache-2.11-cpan-5511b514fd6 )