╭─────────────╮ │scroll to top│ ╰─────────────╯ ╭ net.zig ──────────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │http│ ssh │ │ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
1776 const head_oid = try rf.readHeadRecurMaybe(.xit, opts, state.readOnly(), ctx.io); 1777 var index = if (head_oid) |oid| try Index.initFromCommit(state.readOnly(), ctx.io, ctx.allocator, &oid) else try Index.init(state.readOnly(), ctx.io, ctx.allocator); 1778 defer index.deinit(); 1779 switch (ctx.files) { 1780 .files => |updates| for (updates) |file| try ctx.addFile(state, &index, file.path, file.content), 1781 .dirs => |dirs| for (dirs) |dir| try ctx.addDir(state, &index, dir), 1782 } 1783 var tree = try xit.object.Tree.initFromIndex(.xit, opts, state, ctx.io, ctx.allocator, &index); 1784 defer tree.deinit(); 1785 var head_buffer: [rf.MAX_REF_CONTENT_SIZE]u8 = undefined; 1786 const head = try rf.readHead(.xit, opts, state.readOnly(), ctx.io, &head_buffer) orelse return error.HeadNotFound; 1787 ctx.result.* = try xit.object.writeCommit(.xit, opts, state, ctx.io, ctx.allocator, ctx.metadata, &tree, head.ref); 1788 try xit.undo.write(opts, state, std.Io.Timestamp.now(ctx.io, .real).toSeconds(), .{ .commit = try .init(ctx.metadata.message, ctx.result.*, opts.max_read_size) }); 1789 } 1790 }; 1791 try repo.core.db_file.lock(io, .exclusive); 1792 defer repo.core.db_file.unlock(io); 1793 const history = try R.DB.ArrayList(.read_write).init(repo.core.db.rootCursor()); 1794 try history.appendContext(.{ .slot = try history.getSlot(-1) }, Ctx{ 1795 .core = &repo.core, 1796 .io = io, 1797 .allocator = allocator, 1798 .files = files, 1799 .metadata = metadata, 1800 .result = &result, 1801 }); 1802 return result; 1803 } 1804