╭ changed ──╮ │src/try.zig│ ╰───────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────╮ │ 99 defer allocator.free(work_path); │ │100 │ │101 const Repo = rp.Repo(.xit, evt.admin_repo_opts); │ │102 - var repo = try Repo.init(io, allocator, .{ .path = work_path }); │ │102 + var repo = try Repo.init(io, allocator, .{ .path = work_path, .bare = true });│ │103 defer repo.deinit(io, allocator); │ │104 │ │105 var session_arena = std.heap.ArenaAllocator.init(allocator); │ ╰───────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │256 try template_repo.setMergeAlgorithm(io, allocator, .diff3); │ │257 try template_repo.addConfig(io, allocator, .{ .name = "user.name", .value = "haxy" }); │ │258 try template_repo.addConfig(io, allocator, .{ .name = "user.email", .value = "admin@example.test" }); │ │259 - try template_repo.addConfig(io, allocator, .{ .name = "receive.denycurrentbranch", .value = "updateinstead" });│ │259 │ │260 // a README plus a nested doc so the file tree has a directory to │ │261 // descend into │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │814 }; │ │815 } │ │816 try evt.consume(.repo, .xit, .{}, io, allocator, &template_repo, evt.events_ref, &discussion_comment_events);│ │817 + try template_repo.addConfig(io, allocator, .{ .name = "core.bare", .value = "true" }); │ │818 } │ │819 │ │820 // copy the template to each repo's on-disk location, named by its │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────╮ │821 // hex-encoded event id. the template repo is deinitialized above, so its │ │822 // db file is fully written before we copy it. │ │823 { │ │824 - var template_dir = try cwd.openDir(io, template_path, .{ .iterate = true }); │ │824 + var template_dir = try cwd.openDir(io, template_path, .{}); │ │825 defer template_dir.close(io); │ │826 + var template_repo_dir = try template_dir.openDir(io, ".xit", .{ .iterate = true });│ │827 + defer template_repo_dir.close(io); │ │828 │ │829 for (repo_event_ids, 0..) |id_bytes, repo_index| { │ │830 const repo_id = std.fmt.bytesToHex(id_bytes, .lower); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │832 { │ │833 var dest_dir = try cwd.createDirPathOpen(io, repo_path, .{}); │ │834 defer dest_dir.close(io); │ │833 - try copyDir(io, template_dir, dest_dir); │ │835 + var dest_repo_dir = try dest_dir.createDirPathOpen(io, ".xit", .{});│ │836 + defer dest_repo_dir.close(io); │ │837 + try copyDir(io, template_repo_dir, dest_repo_dir); │ │838 } │ │839 │ │840 if (repo_index + 1 == repo_data.len) { │ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ │1021 │ │1022 const base_oid = (try fork_repo.readRef(io, fork.ref)) orelse return error.NotFound;│ │1023 const base_tree_oid = try commitTree(io, allocator, &fork_repo, &base_oid); │ │1024 + try fork_repo.addConfig(io, allocator, .{ .name = "core.bare", .value = "false" }); │ │1025 var source_oid = base_oid; │ │1026 var fork_dir = try std.Io.Dir.cwd().openDir(io, fork_path, .{}); │ │1027 defer fork_dir.close(io); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1040 try writer.writer.print("{s} ({d}/3)", .{ title, i + 1 }); │ │1041 source_oid = try fork_repo.commit(io, allocator, .{ .message = writer.written(), .timestamp = timestamp + i });│ │1042 } │ │1043 + try fork_repo.addConfig(io, allocator, .{ .name = "core.bare", .value = "true" }); │ │1044 + try fork_dir.deleteFile(io, "patch.txt"); │ │1045 const revision_id = evt.EventWithId.randomId(random); │ │1046 const head_tree_oid = try commitTree(io, allocator, &fork_repo, &source_oid); │ │1047 const revision: evt.PatchRev = .{ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1272 .timestamp = event.timestamp, │ │1273 .parent_oids = if (i == 0) &.{seed_tip} else null, │ │1274 }, null, other_ref); │ │1268 - } │ │1269 - { │ │1270 - var to_events = try target_repo.switchDir(io, allocator, .{ .target = .{ .ref = evt.events_ref } }); │ │1271 - defer to_events.deinit(); │ │1275 } │ │1276 { │ │1274 - var merge = try target_repo.merge(io, allocator, .{ .kind = .full, .action = .{ .new = .{ .source = &.{.{ .ref = other_ref }} } } }, null); │ │1277 + var merge = try target_repo.mergeAtRef(io, allocator, .{ .kind = .full, .action = .{ .new = .{ .source = &.{.{ .ref = other_ref }} } } }, evt.events_ref, null);│ │1278 defer merge.deinit(); │ │1279 if (merge.result != .success) return error.MergeFailed; │ │1277 - } │ │1278 - { │ │1279 - var to_master = try target_repo.switchDir(io, allocator, .{ .target = .{ .ref = .{ .kind = .head, .name = "master" } } }); │ │1280 - defer to_master.deinit(); │ │1280 } │ │1281 try target_repo.removeBranch(io, .{ .name = other_ref.name }); │ │1282 try evt.consume(.repo, .xit, .{}, io, allocator, target_repo, evt.events_ref, &.{}); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯