try self.pckFile.seekBy(-offset);
const baseObject = try self.readObject(pckReader);
- defer self.alloc.free(baseObject.data);
try self.pckFile.seekTo(pos);
const deltaData = try decompress(self.alloc, pckReader);
- defer self.alloc.free(deltaData);
const objectData = try applyDelta(self.alloc, baseObject.data, deltaData);
return Object.init(baseObject.kind, objectData);
pub fn getHead(self: *Repo) !Id {
// read file HEAD
const head = try self.dir.readFileAlloc(self.alloc, "HEAD", 1024);
- defer self.alloc.free(head);
// read file pointed at by HEAD
const headPath = head[5 .. head.len - 1];
const head = try repo.getHead();
if (try repo.getObject(head)) |o| {
- defer alloc.free(o.data);
-
std.debug.print("object({}): {s}\n", .{ o.kind, o.data });
}
}
const head = try repo.getHead();
if (try repo.getObject(head)) |o| {
- defer alloc.free(o.data);
-
switch (try o.parse(alloc)) {
.c => |c| {
std.debug.print("commit:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ c.tree, c.parent, c.author, c.committer, c.message });
defer repo.close();
if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
- defer alloc.free(o.data);
-
- // std.debug.print("tree({}): {any}\n", .{ o.kind, o.data });
+ std.debug.print("tree({}): {any}\n", .{ o.kind, o.data });
}
}
defer repo.close();
if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
- defer alloc.free(o.data);
-
switch (try o.parse(alloc)) {
.t => |t| {
defer t.deinit();
for (0..3) |_| {
if (try repo.getObject(id)) |o| {
- defer alloc.free(o.data);
-
switch (try o.parse(alloc)) {
.c => |c| {
std.debug.print("commit {x}:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ id, c.tree, c.parent, c.author, c.committer, c.message });
defer repo.close();
if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
- defer alloc.free(o.data);
-
switch (try o.parse(alloc)) {
.t => |t| {
defer t.deinit();
for (t.items) |treeEntry| {
if (try repo.getObject(treeEntry.id)) |bo| {
- defer alloc.free(bo.data);
-
if (treeEntry.permissions.len == 6) {
std.debug.print("{s}: [{x} {}]{s}\n", .{ treeEntry.name, treeEntry.id, bo.data.len, bo.data[0..50] });
} else {
for (0..3) |_| {
if (try repo.getObject(id)) |o| {
- defer alloc.free(o.data);
-
switch (try o.parse(alloc)) {
.c => |c| {
std.debug.print("commit {x}:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ id, c.tree, c.parent, c.author, c.committer, c.message });