╭ changed ────────╮ │src/serve_ssh.zig│ ╰─────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │359 │ │360 const draft_path = try fork.forkPath(allocator, handler.repo_root_path, &route.id); │ │361 defer allocator.free(draft_path); │ │362 - var draft = rp.AnyRepo(.xit, .{}).open(io, allocator, .{ .path = draft_path }) catch │ │362 + var draft = rp.AnyRepo(.xit, .{ .ProgressCtx = *evt.PushProgress }).open(io, allocator, .{ .path = draft_path }) catch│ │363 return writeError(sess, "patch draft not found"); │ │364 defer draft.deinit(io, allocator); │ │365 var reader_buf: [4096]u8 = undefined; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │397 const repo_identity = if (std.mem.startsWith(u8, path, repo_prefix)) path[repo_prefix.len..] else path; │ │398 │ │399 const create_if_missing = parsed.service == .receive_pack; │ │400 - const any_repo_opts: rp.AnyRepoOpts(.xit) = .{}; │ │400 + const any_repo_opts: rp.AnyRepoOpts(.xit) = .{ .ProgressCtx = *evt.PushProgress }; │ │401 │ │402 const owner_repo = evt.parseOwnerRepoPath(repo_identity) orelse return writeError(sess, "repo path must be <owner>/<repo>"); │ │403 switch (try authorizeRepoKey(io, allocator, handler.admin_repo_path, owner_repo.owner, owner_repo.name, parsed.service, &sess.fingerprint)) {│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │444 // attempt it when the path already exists │ │445 std.Io.Dir.accessAbsolute(io, repo_path, .{}) catch return false; │ │446 │ │447 - const any_repo_opts: rp.AnyRepoOpts(.xit) = .{}; │ │447 + const any_repo_opts: rp.AnyRepoOpts(.xit) = .{ .ProgressCtx = *evt.PushProgress }; │ │448 var any_repo = rp.AnyRepo(.xit, any_repo_opts).open(io, allocator, .{ .path = repo_path }) catch |err| switch (err) {│ │449 error.RepoNotFound => return false, │ │450 else => |e| return e, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │465 ) !rp.Repo(.xit, repo_opts) { │ │466 var repo = try rp.Repo(.xit, repo_opts).init(io, allocator, .{ .path = repo_path, .bare = true });│ │467 errdefer repo.deinit(io, allocator); │ │468 - try repo.setMergeAlgorithm(io, allocator, .diff3); │ │468 + try repo.setMergeAlgorithm(io, allocator, .patch); │ │469 try repo.addConfig(io, allocator, .{ .name = "http.receivepack", .value = "true" }); │ │470 return repo; │ │471 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯