╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ───────────────╮ │src/test/event/admin.zig│ ╰────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │340 defer allocator.free(user_repo_path); │ │341 var user_repo = try evt.initUserRepo(io, allocator, user_repo_path); │ │342 defer user_repo.deinit(io, allocator); │ │343 - try evt.consume(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{ │ │343 + try evt.consume(.{ .server = .{ .users_dir = users_dir } }, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{│ │344 .{ │ │345 .id = std.fmt.bytesToHex(repo_id, .lower), │ │346 .timestamp = 1, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ───────────────╮ │src/test/event/patch.zig│ ╰────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │185 const id = [_]u8{9} ** evt.event_id_size; │ │186 const id_hex = std.fmt.bytesToHex(id, .lower); │ │187 const before_new = try repo.core.db.rootCursor().count(); │ │188 - try pch.writeBranchPatch(.server, .xit, opts, io, allocator, &repo, id_hex, .{ │ │188 + try pch.writeBranchPatch(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, id_hex, .{│ │189 .title = "merge branch", │ │190 .description = "", │ │191 .labels = "", │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │203 defer output.deinit(); │ │204 var sideband = progress.Sideband{ .response = &response, .writer = &output.writer }; │ │205 const before_refresh = try repo.core.db.rootCursor().count(); │ │206 - try pch.refreshBranches(.server, .xit, opts, io, allocator, &repo, null, &sideband); │ │206 + try pch.refreshBranches(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, null, &sideband);│ │207 try std.testing.expectEqual(before_refresh + 1, try repo.core.db.rootCursor().count()); │ │208 try std.testing.expect(std.mem.indexOf(u8, output.written(), "Checking mergeability: 100% (1/1)\n") != null); │ │209 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │210 // closed patches skip source updates and contribute no progress │ │211 - try evt.Patch.update(.server, .xit, opts, io, allocator, &repo, &id, .{ .status = .closed }, author); │ │211 + try evt.Patch.update(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, &id, .{ .status = .closed }, author); │ │212 const next = try repo.commitAtRef(io, allocator, .{ .message = "revise while closed" }, null, .{ .kind = .head, .name = "feature" });│ │213 const closed_tip = (try repo.readRef(io, evt.events_ref)) orelse return error.NotFound; │ │214 const closed_progress_len = output.written().len; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │215 - try pch.refreshBranches(.server, .xit, opts, io, allocator, &repo, null, &sideband); │ │215 + try pch.refreshBranches(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, null, &sideband); │ │216 try std.testing.expectEqualStrings(&closed_tip, &(try repo.readRef(io, evt.events_ref) orelse return error.NotFound));│ │217 try std.testing.expectEqual(closed_progress_len, output.written().len); │ │218 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │219 // reopening captures the latest source and checks both merge styles │ │220 const before_reopen = try repo.core.db.rootCursor().count(); │ │221 - try evt.Patch.update(.server, .xit, opts, io, allocator, &repo, &id, .{ .status = .open }, author); │ │221 + try evt.Patch.update(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, &id, .{ .status = .open }, author);│ │222 try std.testing.expectEqual(before_reopen + 1, try repo.core.db.rootCursor().count()); │ │223 var arena = std.heap.ArenaAllocator.init(allocator); │ │224 defer arena.deinit(); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │239 } │ │240 try repo.add(io, allocator, &.{"target.txt"}); │ │241 const target_oid = try repo.commit(io, allocator, .{ .message = "advance target" }); │ │242 - pch.refreshMergeability(opts, io, allocator, &repo, id); │ │242 + pch.refreshMergeability(opts, io, allocator, &repo, path, id); │ │243 │ │244 // both merge styles use the stored revision, without fork data │ │245 try pch.merge(opts, io, allocator, path, &repo, .{ .id = id_hex, .revision = selection, .author = author, .timestamp = 100 });│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │271 _ = try repo.commitAtRef(io, allocator, .{ .message = "later" }, null, .{ .kind = .head, .name = "feature" }); │ │272 const tip = (try repo.readRef(io, evt.events_ref)) orelse return error.NotFound; │ │273 const progress_len = output.written().len; │ │274 - try pch.refreshBranches(.server, .xit, opts, io, allocator, &repo, null, &sideband); │ │274 + try pch.refreshBranches(.{ .server = .{ .users_dir = path } }, .xit, opts, io, allocator, &repo, null, &sideband);│ │275 try std.testing.expectEqual(progress_len, output.written().len); │ │276 try std.testing.expectEqualStrings(&tip, &(try repo.readRef(io, evt.events_ref) orelse return error.NotFound)); │ │277 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │831 │ │832 var admin = try rp.Repo(.xit, evt.admin_repo_opts).init(io, allocator, .{ .path = admin_path }); │ │833 defer admin.deinit(io, allocator); │ │834 - try evt.consume(.server, .admin, .xit, evt.admin_repo_opts, io, allocator, &admin, evt.events_ref, &.{ │ │834 + try evt.consume(.{ .server = .{ .users_dir = users_dir } }, .admin, .xit, evt.admin_repo_opts, io, allocator, &admin, evt.events_ref, &.{│ │835 .{ │ │836 .id = std.fmt.bytesToHex(user_id, .lower), │ │837 .timestamp = 1, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │847 defer allocator.free(user_repo_path); │ │848 var user_repo = try evt.initUserRepo(io, allocator, user_repo_path); │ │849 defer user_repo.deinit(io, allocator); │ │850 - try evt.consume(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{ │ │850 + try evt.consume(.{ .server = .{ .users_dir = users_dir } }, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{│ │851 .{ │ │852 .id = repo_id_hex, │ │853 .timestamp = 1, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯