Repository navigation
feat: pull, clone --force and commit apply the patches on the new upstream - #214
Open
thorsten-klein wants to merge 1 commit into
Open
thorsten-klein wants to merge 1 commit into
thorsten-klein wants to merge 1 commit into
Conversation
This was referenced Nov 13, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## feat/209-patches-verify #214 +/- ##
==========================================================
Coverage 100.00% 100.00%
==========================================================
Files 49 49
Lines 2540 2660 +120
==========================================================
+ Hits 2540 2660 +120
|
thorsten-klein
force-pushed
the
feat/210-pull-with-patches
branch
from
November 13, 2026 19:27
0579a3c to
5306168
Compare
thorsten-klein
force-pushed
the
feat/209-patches-verify
branch
2 times, most recently
from
November 13, 2026 19:37
0371c8e to
f7193d3
Compare
thorsten-klein
force-pushed
the
feat/210-pull-with-patches
branch
from
November 13, 2026 19:37
5306168 to
1d0ee21
Compare
thorsten-klein
force-pushed
the
feat/209-patches-verify
branch
from
November 13, 2026 20:02
f7193d3 to
9d08374
Compare
thorsten-klein
force-pushed
the
feat/210-pull-with-patches
branch
from
November 13, 2026 20:02
1d0ee21 to
21d9c8c
Compare
|
thorsten-klein
added a commit
that referenced
this pull request
Nov 13, 2026
… repo as patch files (#212) Fixes #198 First of five stacked PRs for the patches. Each builds on the one before: #212 → #213 → #214 → #215 → #216. ## What - New field `patches: <path>` in `.gitnested`: the folder with the local changes as patch files, relative to the subdir. Without it, the patches are off. - New command `git nested patches create [<subdir>]`: - applies the patches on the upstream commit with `git am`, - writes what HEAD has on top as one more patch, with a TODO title, - writes all patches again in one form: no commit id, no signature, named after the title. - The folder is never pushed. `diff` and `status` do not count it. - Nested repos inside the subdir are left out. They can have their own folder. - `verify --patches` applies patches with `git am` now, so a plain diff given as a patch is refused. `--diffs` still uses `git apply`. - New module `patchbuild.py`: the temporary worktree, `git am`, and writing the patches. `verify` uses it too. ## Docs New page `doc/cli/patches.md` and guide `doc/guides/patches.md`. Updated the `.gitnested` reference, `config`, `verify`, the man page and the call diagrams. ## Tests New `tests/e2e/test_patches.py`. The full suite passes with 100% coverage.
thorsten-klein
force-pushed
the
feat/209-patches-verify
branch
from
November 13, 2026 20:45
9d08374 to
32bf985
Compare
thorsten-klein
force-pushed
the
feat/210-pull-with-patches
branch
from
November 13, 2026 20:48
21d9c8c to
861646f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Fixes #210
Based on #213. Part 3 of 5.
What
Once the folder has a patch, the patches take over:
pullchecks that the patches hold all local changes, then takes upstream and runs onegit am -3with all patches. It writes the patches again and commits them with the pull.git am --continue, thengit nested commit. Split patches stay split.clone --forceapplies the patches from HEAD on top of upstream.commitwrites the patches from the nested branch. A branch that is not a line becomes one patch.push --commitempties the folder.git nested patches drop <subdir> <patch>...removes patches and their changes from the subdir, writes the other patches again without gaps, and commits. It stops if a later patch needs a dropped one.Until the folder has a patch, every command works as before.
Not yet:
pull --no-squash,squash: falseandpull --ignore. They are refused with a message.Tests
Pull on a new upstream, a refused pull, a dropped patch, CRLF, a conflict and resume, split patches with a squash merge, a merge that becomes one patch, push
--commit, reclone,patches drop, a folder outside the subdir, and nested repos inside.