mirror of
https://github.com/zed-industries/zed.git
synced 2026-08-24 16:34:46 +00:00
Sometimes when creating Git worktrees, it's necessary to set things up so the new worktree is ready. For example, copying env.vars, installing dependencies, etc. That was already possible in Zed through the tasks system, but you'd only maybe know about that if you read the documentation or is super familiar with it already; nothing in the product in the context of worktrees told you about that. This is what this PR does. Now, in the worktree picker, there's a "" button that opens the `tasks.json` file exposing the `create_worktree` hook, which allows you to plugin all sorts of things to be run by the time of a worktree creation. If you don't already have a `tasks.json` file, we will create a new one for you with a worktree-creation template. Otherwise, we either append the `create_worktree` hook content to it or just open the file. Here's a quick video: https://github.com/user-attachments/assets/21908be4-306b-4cf3-bed0-50d52cad9d79 Release Notes: - Git Worktrees: Improved discoverability of the `create_worktree` hook for setting up things that need to happen by the time of worktree creation.
62 lines
3.1 KiB
JSON
62 lines
3.1 KiB
JSON
// Project tasks configuration. See https://zed.dev/docs/tasks for documentation.
|
|
//
|
|
// Example:
|
|
[
|
|
{
|
|
"label": "Example task",
|
|
"command": "for i in {1..5}; do echo \"Hello $i/5\"; sleep 1; done",
|
|
//"args": [],
|
|
// Env overrides for the command, will be appended to the terminal's environment from the settings.
|
|
"env": { "foo": "bar" },
|
|
// Current working directory to spawn the command into, defaults to current project root.
|
|
//"cwd": "/path/to/working/directory",
|
|
// Whether to use a new terminal tab or reuse the existing one to spawn the process, defaults to `false`.
|
|
"use_new_terminal": false,
|
|
// Whether to allow multiple instances of the same task to be run, or rather wait for the existing ones to finish, defaults to `false`.
|
|
"allow_concurrent_runs": false,
|
|
// What to do with the terminal pane and tab, after the command was started:
|
|
// * `always` — always show the task's pane, and focus the corresponding tab in it (default)
|
|
// * `no_focus` — always show the task's pane, add the task's tab in it, but don't focus it
|
|
// * `never` — do not alter focus, but still add/reuse the task's tab in its pane
|
|
"reveal": "always",
|
|
// Where to place the task's terminal item after starting the task:
|
|
// * `dock` — in the terminal dock, "regular" terminal items' place (default)
|
|
// * `center` — in the central pane group, "main" editor area
|
|
"reveal_target": "dock",
|
|
// What to do with the terminal pane and tab, after the command had finished:
|
|
// * `never` — Do nothing when the command finishes (default)
|
|
// * `always` — always hide the terminal tab, hide the pane also if it was the last tab in it
|
|
// * `on_success` — hide the terminal tab on task success only, otherwise behaves similar to `always`
|
|
"hide": "never",
|
|
// Which shell to use when running a task inside the terminal.
|
|
// May take 3 values:
|
|
// 1. (default) Use the system's default terminal configuration in /etc/passwd
|
|
// "shell": "system"
|
|
// 2. A program:
|
|
// "shell": {
|
|
// "program": "sh"
|
|
// }
|
|
// 3. A program with arguments:
|
|
// "shell": {
|
|
// "with_arguments": {
|
|
// "program": "/bin/bash",
|
|
// "args": ["--login"]
|
|
// }
|
|
// }
|
|
"shell": "system",
|
|
// Whether to show the task line in the output of the spawned task, defaults to `true`.
|
|
"show_summary": true,
|
|
// Whether to show the command line in the output of the spawned task, defaults to `true`.
|
|
"show_command": true,
|
|
// Which edited buffers to save before running the task:
|
|
// * `all` — save all edited buffers
|
|
// * `current` — save currently active buffer only
|
|
// * `none` — don't save any buffers
|
|
"save": "none",
|
|
// Represents the tags for inline runnable indicators, or spawning multiple tasks at once.
|
|
// "tags": []
|
|
// Hooks that cause this task to run automatically on certain events:
|
|
// * `create_worktree` — run this task after creating a new git worktree (e.g. to install dependencies or copy untracked config files into it)
|
|
// "hooks": ["create_worktree"]
|
|
},
|
|
]
|