╭ changed ────╮ │src/patch.zig│ ╰─────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 91 ) ![2]evt.EventWithId { │ │ 92 const branch = patch.source_branch orelse return error.InvalidSourceBranch; │ │ 93 if (!evt.Patch.fieldsValid(patch.title, patch.tags)) return error.InvalidFields; │ │ 94 - if (!rf.validateName(branch) or std.mem.eql(u8, branch, evt.events_ref.name)) return error.InvalidSourceBranch; │ │ 95 - if (!rf.validateName(patch.target_branch) or std.mem.eql(u8, patch.target_branch, evt.events_ref.name)) return error.InvalidTargetBranch; │ │ 94 + if (!evt.Patch.branchValid(branch)) return error.InvalidSourceBranch; │ │ 95 + if (!evt.Patch.branchValid(patch.target_branch)) return error.InvalidTargetBranch; │ │ 96 const source = (try rf.readRecur(repo_kind, repo_opts, state.readOnly(), io, .{ .ref = .{ .kind = .head, .name = branch } })) orelse return error.InvalidSourceBranch; │ │ 97 const target = (try rf.readRecur(repo_kind, repo_opts, state.readOnly(), io, .{ .ref = .{ .kind = .head, .name = patch.target_branch } })) orelse return error.InvalidTargetBranch;│ │ 98 + if (std.mem.eql(u8, branch, patch.target_branch)) return error.SameBranch; │ │ 99 const base = mrg.commonAncestor(repo_kind, repo_opts, state.readOnly(), io, arena.allocator(), &target, &source) catch |err| switch (err) { │ │100 error.NoCommonAncestor => return error.UnrelatedBranches, │ │101 else => return err, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │542 input: EditDraftInput, │ │543 ) !bool { │ │544 if (!evt.Patch.fieldsValid(input.title, input.tags)) return error.InvalidFields; │ │545 + if (!evt.Patch.branchValid(input.target_branch)) return error.InvalidTargetBranch;│ │546 const patch_id = try evt.parseEventId(&input.id); │ │547 var arena = std.heap.ArenaAllocator.init(allocator); │ │548 defer arena.deinit(); │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯