module documentation
Git rebase implementation.
| Class | |
Manages rebase state on disk using same files as C Git. |
| Class | |
Manages rebase state in memory for MemoryRepo. |
| Class | |
Handles git rebase operations. |
| Class | |
Type definition for rebase state. |
| Class | |
Protocol for managing rebase state. |
| Class | |
Manages the git-rebase-todo file for interactive rebase. |
| Class | |
Enum for rebase todo commands. |
| Class | |
Represents a single entry in a rebase todo list. |
| Exception | |
Raised when rebase is aborted. |
| Exception | |
Raised when a rebase conflict occurs. |
| Exception | |
Base class for rebase errors. |
| Function | edit |
Edit the todo list of an in-progress interactive rebase. |
| Function | process |
Process an interactive rebase. |
| Function | rebase |
Perform a git rebase operation. |
| Function | start |
Start an interactive rebase. |
| Function | _squash |
Helper to squash/fixup commits. |
Edit the todo list of an in-progress interactive rebase.
| Parameters | |
repo:Repo | Repository with in-progress rebase |
editorCallable[ | Callback to edit todo content. Takes bytes, returns bytes. |
| Returns | |
RebaseTodo | Updated RebaseTodo object |
| Raises | |
RebaseError | If no rebase is in progress or todo cannot be loaded |
def process_interactive_rebase(repo:
Repo, todo: RebaseTodo | None = None, editor_callback: Callable[ [ bytes], bytes] | None = None) -> tuple[ bool, str | None]:
¶
Process an interactive rebase.
This function executes the commands in the todo list sequentially.
| Parameters | |
repo:Repo | Repository to rebase in |
todo:RebaseTodo | None | RebaseTodo object (if None, loads from state) |
editorCallable[ | Optional callback for reword operations |
| Returns | |
tuple of (is_complete, pause_reason) |
|
| Raises | |
RebaseError | If rebase fails |
def rebase(repo:
Repo, upstream: bytes, onto: bytes | None = None, branch: bytes | None = None) -> list[ bytes]:
¶
Perform a git rebase operation.
| Parameters | |
repo:Repo | Repository to rebase in |
upstream:bytes | Upstream branch/commit to rebase onto |
onto:bytes | None | Specific commit to rebase onto (defaults to upstream) |
branch:bytes | None | Branch to rebase (defaults to current branch) |
| Returns | |
list[ | List of new commit SHAs created by rebase |
| Raises | |
RebaseConflict | If conflicts occur during rebase |
RebaseError | For other rebase errors |
def start_interactive(repo:
Repo, upstream: bytes, onto: bytes | None = None, branch: bytes | None = None, editor_callback: Callable[ [ bytes], bytes] | None = None) -> RebaseTodo:
¶
Start an interactive rebase.
This function generates a todo list and optionally opens an editor for the user to modify it before starting the rebase.
| Parameters | |
repo:Repo | Repository to rebase in |
upstream:bytes | Upstream branch/commit to rebase onto |
onto:bytes | None | Specific commit to rebase onto (defaults to upstream) |
branch:bytes | None | Branch to rebase (defaults to current branch) |
editorCallable[ | Optional callback to edit todo content. If None, no editing. Should take bytes and return bytes. |
| Returns | |
RebaseTodo | RebaseTodo object with the (possibly edited) todo list |
| Raises | |
RebaseError | If rebase cannot be started |
def _squash_commits(repo:
Repo, rebaser: Rebaser, entry: RebaseTodoEntry, keep_message: bool, editor_callback: Callable[ [ bytes], bytes] | None = None) -> str | None:
¶
Helper to squash/fixup commits.
| Parameters | |
repo:Repo | Repository |
rebaser:Rebaser | Rebaser instance |
entry:RebaseTodoEntry | Todo entry for the commit to squash |
keepbool | Whether to keep this commit's message (squash) or discard (fixup) |
editorCallable[ | Optional callback to edit combined message (for squash) |
| Returns | |
str | None | None on success, "conflict" on conflict |