mirror of
https://github.com/openai/codex.git
synced 2026-10-31 19:28:49 +00:00
Add worktree session creation to the agents overview (#45276)
## What changed - Add a configurable `new_worktree` action, bound to `w`, for local sessions with worktree support enabled. - Create the worktree from the cached project default branch, preferring remote `HEAD` and falling back to conventional `main` or `master` refs without fetching. Preserve the selected subdirectory and source checkout edits. - Start and bind a blank session in the new worktree, preserving the selected approval reviewer without sending an initial turn. - Show creation progress, pause conflicting actions, clean up unclaimed clean worktrees, and report retained checkout paths when session startup fails. Clear pending creation state on reconnect. ## Testing Add coverage for default-branch selection, source checkout preservation, session ownership and approval settings, cleanup, startup failures, reconnect state, and busy-state rendering. Extend Git environment isolation coverage and test unrelated non-UTF-8 refs. GitOrigin-RevId: 771ddc12d04dbf0d12e77e9c96c8386cf31e67c5
This commit is contained in:
@@ -166,3 +166,33 @@ fn write_marker_script(path: &Path, marker: &Path) -> Result<()> {
|
||||
fs::set_permissions(path, fs::Permissions::from_mode(0o755))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(unix)]
|
||||
#[test]
|
||||
fn default_base_ignores_unrelated_non_utf8_refs() -> Result<()> {
|
||||
let (_directory, root) = repository()?;
|
||||
let head = git_stdout(&root, ["rev-parse", "HEAD"])?;
|
||||
// Packed refs work even on filesystems that cannot store non-UTF-8 filenames.
|
||||
fs::write(
|
||||
root.join(".git/packed-refs"),
|
||||
[head.as_bytes(), b" refs/heads/unrelated-\xff\n"].concat(),
|
||||
)?;
|
||||
assert_eq!(super::default_worktree_base(&root)?, "refs/heads/main");
|
||||
setup_git(
|
||||
&root,
|
||||
&["update-ref", "refs/remotes/origin/release/stable", "HEAD"],
|
||||
)?;
|
||||
setup_git(
|
||||
&root,
|
||||
&[
|
||||
"symbolic-ref",
|
||||
"refs/remotes/origin/HEAD",
|
||||
"refs/remotes/origin/release/stable",
|
||||
],
|
||||
)?;
|
||||
assert_eq!(
|
||||
super::default_worktree_base(&root)?,
|
||||
"refs/remotes/origin/release/stable"
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user