git-worktrees 0.4.0__tar.gz → 0.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.github/workflows/publish.yml +7 -4
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.github/workflows/testpypi.yml +2 -1
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.github/workflows/tests.yml +4 -2
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/CHANGELOG.md +4 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/PKG-INFO +1 -1
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/pyproject.toml +1 -1
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/scripts/verify-publish.bash +5 -4
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/uv.lock +1 -1
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.agents/skills/release/SKILL.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.claude/settings.json +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.gitignore +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.pre-commit-config.yaml +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/.python-version +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/AGENTS.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/LICENSE +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/README.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gw.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwa.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwh.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwl.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwm.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwnb.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwp.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwr.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gwrot.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/completions/gws.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/conf.d/worktrees.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/docs/BENCHMARK.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/docs/DEVELOPMENT.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/docs/REFERENCE.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/functions/gwa.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/functions/gwl.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/functions/gwm.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/functions/gwr.fish +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/hatch_build.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/renovate.json +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/scripts/README.md +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/scripts/benchmark.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/__init__.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/cli.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/errors.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/forge.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/git.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/layout.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/merged.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/new_branch.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/pick.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/prune.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/render.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/repo.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/rotate.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/verdicts.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/src/worktrees/worktree.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/conftest.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_benchmark.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_cli.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_completions.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_fixture.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_forge.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_gates.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_new_branch.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_render.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_rotate.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_shims.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_spec.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_version.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/tests/test_worktree.py +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gw +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwa +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwh +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwl +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwm +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwnb +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwp +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwr +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gwrot +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/completions/_gws +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/functions/gwa +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/functions/gwl +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/functions/gwm +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/functions/gwr +0 -0
- {git_worktrees-0.4.0 → git_worktrees-0.4.1}/zsh/plugins/worktrees/worktrees.plugin.zsh +0 -0
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
# byte-for-byte what was tested and installed here.
|
|
37
37
|
build:
|
|
38
38
|
name: Build
|
|
39
|
-
runs-on: ubuntu-
|
|
39
|
+
runs-on: ubuntu-26.04
|
|
40
40
|
permissions:
|
|
41
41
|
contents: read
|
|
42
42
|
# Reading another workflow's runs. Without it the tests guard below
|
|
@@ -56,6 +56,7 @@ jobs:
|
|
|
56
56
|
with:
|
|
57
57
|
python-version: "3.14"
|
|
58
58
|
enable-cache: true
|
|
59
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
59
60
|
|
|
60
61
|
- name: Install the release tools
|
|
61
62
|
uses: releasetools/cli@v0
|
|
@@ -126,7 +127,7 @@ jobs:
|
|
|
126
127
|
|
|
127
128
|
publish:
|
|
128
129
|
name: Publish to PyPI
|
|
129
|
-
runs-on: ubuntu-
|
|
130
|
+
runs-on: ubuntu-26.04
|
|
130
131
|
needs: build
|
|
131
132
|
# Binds this job to the trusted publisher registered for `pypi`. Add a
|
|
132
133
|
# required reviewer on this environment for a manual gate before anything
|
|
@@ -144,6 +145,7 @@ jobs:
|
|
|
144
145
|
with:
|
|
145
146
|
python-version: "3.14"
|
|
146
147
|
enable-cache: true
|
|
148
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
147
149
|
|
|
148
150
|
- name: Download distributions
|
|
149
151
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
@@ -162,7 +164,7 @@ jobs:
|
|
|
162
164
|
# PyPI is slow rather than that the version is not out.
|
|
163
165
|
verify:
|
|
164
166
|
name: Verify it installs from PyPI
|
|
165
|
-
runs-on: ubuntu-
|
|
167
|
+
runs-on: ubuntu-26.04
|
|
166
168
|
needs: publish
|
|
167
169
|
permissions:
|
|
168
170
|
contents: read
|
|
@@ -178,13 +180,14 @@ jobs:
|
|
|
178
180
|
with:
|
|
179
181
|
python-version: "3.14"
|
|
180
182
|
enable-cache: true
|
|
183
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
181
184
|
|
|
182
185
|
- name: Verify it installs from PyPI
|
|
183
186
|
run: scripts/verify-publish.bash --prod
|
|
184
187
|
|
|
185
188
|
release:
|
|
186
189
|
name: Release
|
|
187
|
-
runs-on: ubuntu-
|
|
190
|
+
runs-on: ubuntu-26.04
|
|
188
191
|
needs: publish
|
|
189
192
|
permissions:
|
|
190
193
|
contents: write
|
|
@@ -28,7 +28,7 @@ permissions:
|
|
|
28
28
|
jobs:
|
|
29
29
|
snapshot:
|
|
30
30
|
name: Publish a snapshot
|
|
31
|
-
runs-on: ubuntu-
|
|
31
|
+
runs-on: ubuntu-26.04
|
|
32
32
|
# Binds this job to the trusted publisher registered for `testpypi`.
|
|
33
33
|
environment: testpypi
|
|
34
34
|
permissions:
|
|
@@ -47,6 +47,7 @@ jobs:
|
|
|
47
47
|
with:
|
|
48
48
|
python-version: "3.14"
|
|
49
49
|
enable-cache: true
|
|
50
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
50
51
|
|
|
51
52
|
# Epoch seconds rather than the run number: a re-run repeats the number
|
|
52
53
|
# and TestPyPI refuses the duplicate, while the clock has moved on.
|
|
@@ -23,7 +23,7 @@ concurrency:
|
|
|
23
23
|
jobs:
|
|
24
24
|
lint:
|
|
25
25
|
name: Lint
|
|
26
|
-
runs-on: ubuntu-
|
|
26
|
+
runs-on: ubuntu-26.04
|
|
27
27
|
steps:
|
|
28
28
|
- name: Checkout code
|
|
29
29
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
@@ -33,6 +33,7 @@ jobs:
|
|
|
33
33
|
with:
|
|
34
34
|
python-version: "3.14"
|
|
35
35
|
enable-cache: true
|
|
36
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
36
37
|
|
|
37
38
|
- name: Install dependencies
|
|
38
39
|
run: uv sync --all-extras --locked
|
|
@@ -44,7 +45,7 @@ jobs:
|
|
|
44
45
|
|
|
45
46
|
test:
|
|
46
47
|
name: Python ${{ matrix.python-version }}
|
|
47
|
-
runs-on: ubuntu-
|
|
48
|
+
runs-on: ubuntu-26.04
|
|
48
49
|
strategy:
|
|
49
50
|
# One version failing is a fact about that version, so let the others
|
|
50
51
|
# finish and say which.
|
|
@@ -66,6 +67,7 @@ jobs:
|
|
|
66
67
|
with:
|
|
67
68
|
python-version: ${{ matrix.python-version }}
|
|
68
69
|
enable-cache: true
|
|
70
|
+
cache-suffix: ${{ github.workflow }}-${{ github.job }}
|
|
69
71
|
|
|
70
72
|
- name: Install dependencies
|
|
71
73
|
# --locked fails the run on a stale uv.lock, rather than quietly
|
|
@@ -17,6 +17,10 @@ not in here, whatever it cost to build.
|
|
|
17
17
|
A release closes with a `### Choices` section when a decision in it is worth
|
|
18
18
|
the reader's time: what was chosen, and what the alternative failed to do.
|
|
19
19
|
|
|
20
|
+
## 0.4.1 - 2026-09-21
|
|
21
|
+
|
|
22
|
+
CLI behavior is unchanged from 0.4.0.
|
|
23
|
+
|
|
20
24
|
## 0.4.0 - 2026-09-21
|
|
21
25
|
|
|
22
26
|
### Security
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: git-worktrees
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Git worktree commands that refuse to lose work.
|
|
5
5
|
Project-URL: Bug reports, https://github.com/MihaiBojin/worktrees/issues/new
|
|
6
6
|
Project-URL: Source, https://github.com/MihaiBojin/worktrees
|
|
@@ -9,7 +9,7 @@ authors = [
|
|
|
9
9
|
]
|
|
10
10
|
# Static, and the single source of truth for the version. Bump it in a pull
|
|
11
11
|
# request and run `uv lock`; the release tag only has to agree with it.
|
|
12
|
-
version = "0.4.
|
|
12
|
+
version = "0.4.1"
|
|
13
13
|
# The standard library answers every question this asks. A dependency here
|
|
14
14
|
# would be paid on every invocation, and an invocation is 67 ms of which 25 ms
|
|
15
15
|
# is the interpreter starting.
|
|
@@ -28,9 +28,9 @@ readonly NAME VERSION
|
|
|
28
28
|
|
|
29
29
|
echo "Verifying $NAME==$VERSION from $WHICH..." >&2
|
|
30
30
|
|
|
31
|
-
# --isolated
|
|
32
|
-
#
|
|
33
|
-
# dependencies.
|
|
31
|
+
# --isolated ignores installed tools. --no-cache gives each attempt a fresh cache,
|
|
32
|
+
# so an earlier index response cannot hide the published version on later attempts.
|
|
33
|
+
# --index-strategy unsafe-best-match because TestPyPI carries none of the dependencies.
|
|
34
34
|
TMP="$(mktemp -d)"
|
|
35
35
|
trap 'rm -rf "$TMP"' EXIT
|
|
36
36
|
|
|
@@ -53,7 +53,8 @@ delay="$BASE"
|
|
|
53
53
|
while :; do
|
|
54
54
|
attempt=$((attempt + 1))
|
|
55
55
|
|
|
56
|
-
if REPORTED="$(
|
|
56
|
+
if REPORTED="$(uv tool run \
|
|
57
|
+
--no-cache \
|
|
57
58
|
--isolated \
|
|
58
59
|
--index "$INDEX" \
|
|
59
60
|
--index-strategy unsafe-best-match \
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|