<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/src/lib/git/mod.rs, branch v2.2.0</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/atom?h=v2.2.0</id>
<link rel='self' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/atom?h=v2.2.0'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/'/>
<updated>2026-02-18T21:17:41+00:00</updated>
<entry>
<title>fix: thread applied OID through patch chain correctly</title>
<updated>2026-02-18T21:17:41+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-18T21:17:41+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=09db17fd719ddd42c5afad24e1a8e71735374f8e'/>
<id>urn:sha1:09db17fd719ddd42c5afad24e1a8e71735374f8e</id>
<content type='text'>
When applying a chain of patches without parent-commit tags, each
patch's parent was resolved independently, meaning patch2 would not
parent off the OID patch1 actually produced. Thread next_parent_override
through the loop and guard the early-return in create_commit_from_patch
so the override is always honoured.
</content>
</entry>
<entry>
<title>fix: harden apply_patch_chain when optional patch tags absent</title>
<updated>2026-02-18T21:04:59+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-18T21:04:59+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=73d829b916d87626f33ea2adead0c48f1d9d737d'/>
<id>urn:sha1:73d829b916d87626f33ea2adead0c48f1d9d737d</id>
<content type='text'>
- Replace .unwrap() calls in filter closure with pattern-let guards
  so a missing/invalid mbox commit id conservatively includes the patch
- Use the OID returned by create_commit_from_patch as branch tip instead
  of the tag commit id, which may differ for GPG-signed commits
- Add module-level doc comment to mbox_parser explaining design rationale
  and known limitations around the mbox envelope SHA1
</content>
</entry>
<entry>
<title>feat: handle missing optional patch tags for pr/ flow</title>
<updated>2026-02-18T14:48:20+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-18T14:48:20+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=fcff4541e1f36b6575596c353637b25aeae9bdcf'/>
<id>urn:sha1:fcff4541e1f36b6575596c353637b25aeae9bdcf</id>
<content type='text'>
- Add mbox_parser module to extract metadata from patch content
- Extract author/committer from From: and Date: headers when tags missing
- Extract commit message body as fallback for description tag
- Implement best-guess parent commit logic using committer timestamps
- Update patch_supports_commit_ids to accept mbox-parseable patches
- Enable patches without optional tags to appear as pr/ branches
</content>
</entry>
<entry>
<title>fix: handle existing local branch that is behind when checking out PR</title>
<updated>2026-02-12T16:19:29+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-12T16:19:29+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=1be46b4fd7a78ce418765ef5467823b7ea5e60eb'/>
<id>urn:sha1:1be46b4fd7a78ce418765ef5467823b7ea5e60eb</id>
<content type='text'>
When a PR branch already exists locally, the previous code would silently
move the branch pointer without checking for tracking or fast-forward safety.

Now:
- If branch has tracking: checkout and warn user to git pull
- If no tracking and fast-forward: safely move pointer
- If no tracking and diverged: show copy-paste commands for reset/rebase
- If commit not found locally: suggest fetching

Uses console crate for yellow output instead of hardcoded ANSI codes.
</content>
</entry>
<entry>
<title>chore: cargo update</title>
<updated>2025-10-17T14:16:03+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-10-17T14:02:53+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=709946c1b49114b71d3080bb8d97e63525f40fd9'/>
<id>urn:sha1:709946c1b49114b71d3080bb8d97e63525f40fd9</id>
<content type='text'>
update patches ahead of wider upgrade. clippy required some autofixes
</content>
</entry>
<entry>
<title>feat(send): add `merge-base` tag to PR (Update)</title>
<updated>2025-10-17T09:20:43+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-10-17T08:30:35+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=2bf98e91e5b5a7d1b18557e65711b5ef3d1a54a3'/>
<id>urn:sha1:2bf98e91e5b5a7d1b18557e65711b5ef3d1a54a3</id>
<content type='text'>
following its inclusion in the NIP-34 spec
</content>
</entry>
<entry>
<title>refactor: move patch size evaluation fn to lib</title>
<updated>2025-08-01T08:39:36+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-08-01T08:39:36+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=a625be66cfbced5f96cb0123a286937543e7273c'/>
<id>urn:sha1:a625be66cfbced5f96cb0123a286937543e7273c</id>
<content type='text'>
so we can use it in ngit as well as remote helper
</content>
</entry>
<entry>
<title>fix(list): improve pr unsupport text</title>
<updated>2025-07-25T15:11:01+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-07-25T14:52:19+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=0cad465dd3f78bd6c680067d12d396d4782829bf'/>
<id>urn:sha1:0cad465dd3f78bd6c680067d12d396d4782829bf</id>
<content type='text'>
and show a more helpful message when proposal can be checked out
using the remote
</content>
</entry>
<entry>
<title>chore: bump nightly rustfmt</title>
<updated>2025-07-16T09:59:20+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-07-16T09:59:20+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=ac53bca7e315848864ff9e51703720b5b466bc42'/>
<id>urn:sha1:ac53bca7e315848864ff9e51703720b5b466bc42</id>
<content type='text'>
to latest available and apply fmt fixes
</content>
</entry>
<entry>
<title>chore: nix flake update</title>
<updated>2025-07-16T09:39:35+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-07-16T09:10:41+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=092b9606ff2b721d858a5c7b2b27a2f9942b4bc4'/>
<id>urn:sha1:092b9606ff2b721d858a5c7b2b27a2f9942b4bc4</id>
<content type='text'>
required running:
`cargo fix --allow-dirty --allow-staged`
`cargo clippy --fix --allow-dirty -- -D warnings`
to fix problems

and then manually fixing some too
</content>
</entry>
</feed>
