╭ changed ────╮ │build.zig.zon│ ╰─────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 3 .version = "0.0.0", │ │ 4 .dependencies = .{ │ │ 5 .xit = .{ │ │ 6 - .url = "git+https://github.com/xit-vcs/xit#7c2c0d751917fd389199c1da8e7d88de6b26df82",│ │ 7 - .hash = "xit-0.0.0-Ub3nDKgSVAGOIqkAO_F3RSsdtujuys1k-TRGchqY7RaW", │ │ 6 + .url = "git+https://github.com/xit-vcs/xit#f5b3d82ba63b4ca83d3f54c5d04a67c7d8dff927",│ │ 7 + .hash = "xit-0.0.0-Ub3nDFMUVAFAfwp8pq3gSIFeCjdZLNzQZ83t7dzZftB0", │ │ 8 }, │ │ 9 }, │ │10 .paths = .{ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ───────╮ │src/progress.zig│ ╰────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │33 // decided on rather than inherit whatever label was last set │ │34 fn reported(kind: rp.ProgressKind) bool { │ │35 return switch (kind) { │ │36 - .writing_object_from_pack, .checking_object, .enumerating_object, .compressing_object, .writing_patch => true, │ │36 + .writing_object_from_pack, .checking_object, .walking_commit, .enumerating_object, .compressing_object, .writing_patch => true,│ │37 .writing_object, .sending_bytes, .receiving_bytes => false, │ │38 }; │ │39 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │47 switch (start.kind) { │ │48 .writing_object_from_pack => self.label = "Unpacking objects",│ │49 .checking_object => self.label = "Checking connectivity", │ │50 + .walking_commit => self.label = "Walking commits", │ │51 .enumerating_object => self.label = "Enumerating objects", │ │52 .compressing_object => self.label = "Compressing objects", │ │53 else => {}, │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/search_commit.zig│ ╰─────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │367 const Ancestry = mrg.Ancestry(.xit, repo_opts); │ │368 var ancestry = try Ancestry.init(state, io, allocator, base, tip); │ │369 defer ancestry.deinit(); │ │370 - try ancestry.finish(); │ │370 + │ │371 + // the walk is bracketed here because it may run twice │ │372 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .walking_commit, .estimated_total_items = 0 } });│ │373 + defer progress.report(repo_opts, io, progress_ctx_maybe, .{ .end = .walking_commit }); │ │374 + try ancestry.finish(progress_ctx_maybe); │ │375 │ │376 // timestamps only choose the walk's order, so a commit the base reached │ │377 // can be passed before the tip turns out to reach it too. that can only │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │386 while (flagged.next()) |node| { │ │387 if (node.flags & Ancestry.both == Ancestry.one) candidates = true; │ │388 } │ │385 - if (candidates) while (try ancestry.step()) {}; │ │389 + if (candidates) while (try ancestry.step()) { │ │390 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .walking_commit });│ │391 + }; │ │392 } │ │393 │ │394 var iter = ancestry.nodes.iterator(); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │405 } else { │ │406 // a whole history has no count until it is walked, so the walk reports │ │407 // the commits it has reached so far │ │402 - progress.report(repo_opts, io, progress_ctx_maybe, .{ .text = "Walking commits" }); │ │403 - progress.report(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .writing_patch, .estimated_total_items = 0 } }); │ │408 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .start = .{ .kind = .walking_commit, .estimated_total_items = 0 } });│ │409 var iter = try obj.ObjectIterator(.xit, repo_opts).init(state, io, allocator, .{ .kind = .commit }); │ │410 defer iter.deinit(); │ │411 try iter.include(tip); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │412 while (try iter.next(allocator)) |object| { │ │413 defer object.deinit(); │ │414 try added.append(aa, .{ .oid = object.oid, .timestamp = object.content.commit.metadata.timestamp });│ │410 - progress.report(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .writing_patch }); │ │415 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .complete_one = .walking_commit }); │ │416 } │ │412 - progress.report(repo_opts, io, progress_ctx_maybe, .{ .end = .writing_patch }); │ │417 + progress.report(repo_opts, io, progress_ctx_maybe, .{ .end = .walking_commit }); │ │418 } │ │419 │ │420 return .{ .removed = removed.items, .added = added.items }; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯