╭ changed ───╮ │src/find.zig│ ╰────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────╮ │ 8 const obj = xit.object; │ │ 9 const fs = xit.fs; │ │10 const serve_common = @import("serve_common.zig"); │ │11 +const progress = @import("./progress.zig"); │ │12 │ │13 // the repo moment key holding one file map per branch tip. it sits outside the│ │14 // haxy moment because pushes change it and events never do. each entry is │ ╰───────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │236 { │ │237 const index_hash = hash.hashInt(repo_opts.hash, index_key); │ │238 var new_branch_base = base; │ │238 - serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .text = "Indexing files" });│ │239 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .text = "Indexing files" }); │ │240 │ │241 var key: std.ArrayList(u8) = .empty; │ │242 defer key.deinit(allocator); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │243 │ │244 for (work.items) |item| { │ │244 - if (serve_common.progressCancelled(repo_opts, progress_ctx_maybe)) return error.ClientGone;│ │245 + if (progress.cancelled(repo_opts, progress_ctx_maybe)) return error.ClientGone; │ │246 const index = try DB.HashMap(.read_write).init(try moment.putCursor(index_hash)); │ │247 const tree = item.tree orelse { │ │248 _ = try index.remove(item.branch_hash); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │265 var tree_diff = tr.TreeDiff(.xit, repo_opts).init(allocator); │ │266 defer tree_diff.deinit(); │ │267 try tree_diff.compare(state.readOnly(), io, &entry.tree, &tree, null); │ │267 - serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .writing_patch, .estimated_total_items = tree_diff.changes.count() } });│ │268 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .writing_patch, .estimated_total_items = tree_diff.changes.count() } }); │ │269 for (tree_diff.changes.keys(), tree_diff.changes.values()) |path, change| { │ │269 - defer serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .writing_patch }); │ │270 + defer progress.report(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .writing_patch }); │ │271 try fileKey(allocator, &key, path); │ │272 const oid = if (change.new) |*tree_entry| indexedOid(repo_opts.hash, tree_entry) else null; │ │273 if (oid) |bytes| { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │279 } else { │ │280 // a whole tree has no count until it is walked, so it reports │ │281 // the files it has indexed so far │ │281 - serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .writing_patch, .estimated_total_items = 0 } });│ │282 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .writing_patch, .estimated_total_items = 0 } }); │ │283 var paths = std.heap.ArenaAllocator.init(allocator); │ │284 defer paths.deinit(); │ │285 try indexTree(repo_opts, state.readOnly(), io, allocator, paths.allocator(), files, &key, "", &tree, progress_ctx_maybe); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │286 } │ │286 - serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .end = .writing_patch });│ │287 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .end = .writing_patch }); │ │288 │ │289 // the first entry ever written becomes the base for the next │ │290 // new branch, so only one branch walks a whole tree. │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │317 else => return, │ │318 }; │ │319 for (tree.entries.keys(), tree.entries.values()) |name, *tree_entry| { │ │319 - if (serve_common.progressCancelled(repo_opts, progress_ctx_maybe)) return error.ClientGone; │ │320 + if (progress.cancelled(repo_opts, progress_ctx_maybe)) return error.ClientGone; │ │321 const path = try fs.joinPath(paths, &.{ prefix, name }); │ │322 if (tree_entry.isTree()) { │ │323 try indexTree(repo_opts, state, io, allocator, paths, files, key, path, &std.fmt.bytesToHex(tree_entry.oid, .lower), progress_ctx_maybe);│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │324 } else if (indexedOid(repo_opts.hash, tree_entry)) |bytes| { │ │325 try fileKey(allocator, key, path); │ │326 try files.put(key.items, .{ .bytes = bytes }); │ │326 - serve_common.reportProgress(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .writing_patch });│ │327 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .writing_patch }); │ │328 } │ │329 } │ │330 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯