<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="https://kemitix.net/feed_style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <tabi:metadata xmlns:tabi="https://github.com/welpo/tabi">
        <tabi:base_url>https:&#x2F;&#x2F;kemitix.net</tabi:base_url>
        <tabi:separator>
            •
        </tabi:separator>
        <tabi:about_feeds>This is a web feed, also known as an Atom feed. Subscribe by copying the URL from the address bar into your newsreader. Visit About Feeds to learn more and get started. It&#x27;s free.</tabi:about_feeds>
        <tabi:visit_the_site>Visit website</tabi:visit_the_site>
        <tabi:recent_posts>Recent posts</tabi:recent_posts>
        <tabi:last_updated_on>Updated on $DATE</tabi:last_updated_on>
        <tabi:default_theme></tabi:default_theme>
        <tabi:post_listing_date>date</tabi:post_listing_date>
        <tabi:current_section>git-next</tabi:current_section>
    </tabi:metadata><title>kemitix.net - git-next</title>
        <subtitle>Personal blog, for development work</subtitle>
    <link href="https://kemitix.net/tags/git-next/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://kemitix.net/tags/git-next/" rel="alternate" type="text/html"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-05-25T15:16:00+01:00</updated>
    <id>https://kemitix.net/tags/git-next/atom.xml</id><entry xml:lang="en">
        <title>Project Release: git-next v2025.5.1</title>
        <published>2025-05-25T15:16:00+01:00</published>
        <updated>2025-05-25T15:16:00+01:00</updated>
        <author>
            <name>Paul Campbell</name>
        </author>
        <link rel="alternate" href="https://kemitix.net/blog/git-next-v2025-05-1/" type="text/html"/>
        <id>https://kemitix.net/blog/git-next-v2025-05-1/</id>
        
            <content type="html">&lt;p&gt;Today I released version &lt;code&gt;2025.5.1&lt;&#x2F;code&gt; of &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&quot;&gt;git-next&lt;&#x2F;a&gt;, my Trunk-based development manager.
This update fixes an embarrasing bug in the previous version, where it couldn’t update the &lt;code&gt;next&lt;&#x2F;code&gt; branch.
Which is basically &lt;code&gt;git-next&lt;&#x2F;code&gt;’s whole thing.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;key-changes&quot;&gt;Key Changes:&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;git-operations-overhaul-wrench&quot;&gt;Git Operations Overhaul 🔧&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed remote push synchronization issues&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;While switching to &lt;code&gt;git2&lt;&#x2F;code&gt; in the previous release I got the process wrong and my tests weren’t sufficient to pick up on it.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Added detailed push conflict detection&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;So, working through the push process I’ve added more checks.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Enhanced rebase handling with parent commit validation
&lt;ul&gt;
&lt;li&gt;Improved commit log traversal with duplicate filtering&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;configuration-maintenance-tools&quot;&gt;Configuration &amp;amp; Maintenance 🛠&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed legacy external repo support&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;This had originally been added as an option, but I’m not aware that it get’s
used and it complicates matters when deciding the name of the remote that we
should be pushing to.
Where as, when we have only internal repos. we always know that they will
called ‘origin’.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Simplified remote management (now always uses ‘origin’)&lt;&#x2F;li&gt;
&lt;li&gt;Refactored ServerRepoConfig to builder pattern&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;I’m moving away from constructor to use builders more&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Added Docker publishing workflow to Justfile&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Because I kept forgetting to push the image to codeberg:&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;   &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;just&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; publish-docker-image v2025.5.1&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;diagnostics-reliability-stethoscope&quot;&gt;Diagnostics &amp;amp; Reliability 🩺&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Added more logging:
&lt;ul&gt;
&lt;li&gt;Added detailed push failure diagnostics&lt;&#x2F;li&gt;
&lt;li&gt;Implemented repository state logging&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Fixed shutdown error visibility&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;When using the &lt;code&gt;--ui&lt;&#x2F;code&gt; or &lt;code&gt;--xui&lt;&#x2F;code&gt; any error that caused the server to abort we
lost when the screen reset to normal.
Now it is logged to the screen after the console is reset.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Removed debug symbols from dev builds&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;An optimisation for development only.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;documentation-updates-books&quot;&gt;Documentation Updates 📚&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Corrected Forgejo naming throughout codebase&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;I had been using &lt;code&gt;ForgeJo&lt;&#x2F;code&gt; consistently, but wrongly.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Removed deprecated gitdir references&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Now that we only support internal repos, we don’t support the &lt;code&gt;gitdir&lt;&#x2F;code&gt; option
for repos.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;testing-improvements-white-check-mark&quot;&gt;Testing Improvements ✅&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Added comprehensive force push tests&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Given the mess I made with git push, there are now more tests around this.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Implemented remote test setup framework&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Part of that is setting up two git repos on disk and making one the remote of
the other.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Added 6 new test cases for branch validation&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Tests to check that we use &lt;code&gt;--force-with-lease&lt;&#x2F;code&gt; only when required, which is
when CI fails and &lt;code&gt;next&lt;&#x2F;code&gt; needs to be reset back to &lt;code&gt;main&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Enhanced commit history verification&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Again, more tests to check this is doing what it is supposed to.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This release focuses on hardening Git operations while improving
maintainability and diagnostics.&lt;&#x2F;p&gt;
</content>
        </entry><entry xml:lang="en">
        <title>Project Update: git-next</title>
        <published>2025-05-08T18:44:00+01:00</published>
        <updated>2025-05-08T18:44:00+01:00</updated>
        <author>
            <name>Paul Campbell</name>
        </author>
        <link rel="alternate" href="https://kemitix.net/blog/dev-update-2025-05-08/" type="text/html"/>
        <id>https://kemitix.net/blog/dev-update-2025-05-08/</id>
        
            <content type="html">&lt;h2 id=&quot;migration-cleanup-completed&quot;&gt;Migration Cleanup Completed&lt;&#x2F;h2&gt;
&lt;p&gt;The &lt;code&gt;.dev&#x2F;TODO.md&lt;&#x2F;code&gt; file has been significantly simplified after completing the migration from &lt;code&gt;gix&lt;&#x2F;code&gt; to &lt;code&gt;git2&lt;&#x2F;code&gt; in the &lt;code&gt;gitlib&lt;&#x2F;code&gt; module.
The detailed migration checklist has been replaced with a fresh TODO template for the next project.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;new-docker-publishing-workflow&quot;&gt;New Docker Publishing Workflow&lt;&#x2F;h2&gt;
&lt;p&gt;A new &lt;a href=&quot;https:&#x2F;&#x2F;just.systems&quot;&gt;just&lt;&#x2F;a&gt; recipe has been added to streamline Docker image publishing.
The &lt;code&gt;publish-docker-image&lt;&#x2F;code&gt; command now handles:&lt;&#x2F;p&gt;
&lt;p&gt;• Pulling images from the internal registry
• Retagging for &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;-&#x2F;packages&#x2F;container&#x2F;git-next&#x2F;latest&quot;&gt;Codeberg.org&lt;&#x2F;a&gt;
• Pushing to the public registry&lt;&#x2F;p&gt;
&lt;p&gt;Example usage:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;just&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; publish-docker-image v1.2.3&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</content>
        </entry><entry xml:lang="en">
        <title>Project Release: git-next v2025.5.0</title>
        <published>2025-05-07T21:44:00+01:00</published>
        <updated>2025-05-07T21:44:00+01:00</updated>
        <author>
            <name>Paul Campbell</name>
        </author>
        <link rel="alternate" href="https://kemitix.net/blog/git-next-v2025-05-0/" type="text/html"/>
        <id>https://kemitix.net/blog/git-next-v2025-05-0/</id>
        
            <content type="html">&lt;p&gt;Today I released version &lt;code&gt;2025.5.0&lt;&#x2F;code&gt; of &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&quot;&gt;git-next&lt;&#x2F;a&gt;, my Trunk-based development manager.
This major update includes significant backend changes and reworked feature selections.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;key-changes&quot;&gt;Key Changes:&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;backend-migration&quot;&gt;Backend Migration:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Completed migration from &lt;a href=&quot;https:&#x2F;&#x2F;docs.rs&#x2F;gix&#x2F;latest&#x2F;gix&#x2F;&quot;&gt;gix&lt;&#x2F;a&gt; to &lt;a href=&quot;https:&#x2F;&#x2F;docs.rs&#x2F;git2&#x2F;latest&#x2F;git2&#x2F;&quot;&gt;git2&lt;&#x2F;a&gt; for Git operations&lt;&#x2F;li&gt;
&lt;li&gt;Implemented git2-based functionality for:
&lt;ul&gt;
&lt;li&gt;Rebase operations (with new tests)&lt;&#x2F;li&gt;
&lt;li&gt;Remote operations (fetch&#x2F;push)&lt;&#x2F;li&gt;
&lt;li&gt;Branch switching&lt;&#x2F;li&gt;
&lt;li&gt;File reading&lt;&#x2F;li&gt;
&lt;li&gt;Clone operations&lt;&#x2F;li&gt;
&lt;li&gt;Commit log access&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;cargo-features&quot;&gt;Cargo Features:&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Moved email and desktop notifications into two new non-default features:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;notify-desktop&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;notify-email&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Renamed the features for the forges selections to have &lt;code&gt;forge-&lt;&#x2F;code&gt; prefixed:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;forgejo&lt;&#x2F;code&gt; -&amp;gt; &lt;code&gt;forge-forgeoj&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;github&lt;&#x2F;code&gt; -&amp;gt; &lt;code&gt;forge-github&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;improvements&quot;&gt;Improvements:&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Enhanced workflow safety and performance in CI&lt;&#x2F;li&gt;
&lt;li&gt;Added OpenSSL build dependencies for Forgejo workflow, this was required to use &lt;code&gt;https&lt;&#x2F;code&gt; with &lt;code&gt;git2&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Improved cargo registry caching in CI&lt;&#x2F;li&gt;
&lt;li&gt;Updated numerous dependencies to latest versions&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;documentation&quot;&gt;Documentation:&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Added project coding &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&#x2F;src&#x2F;branch&#x2F;main&#x2F;.dev&#x2F;RULES.md&quot;&gt;rules&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&#x2F;src&#x2F;branch&#x2F;main&#x2F;.dev&#x2F;CONVENTIONS.md&quot;&gt;conventions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Added &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&#x2F;src&#x2F;branch&#x2F;main&#x2F;.dev&#x2F;TODO.md&quot;&gt;TODO&lt;&#x2F;a&gt; file for future work&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This release represents a significant step forward in stability and functionality. The complete migration to git2 provides a more robust
foundation for future development.&lt;&#x2F;p&gt;
&lt;p&gt;The full &lt;a href=&quot;https:&#x2F;&#x2F;codeberg.org&#x2F;kemitix&#x2F;git-next&#x2F;src&#x2F;branch&#x2F;main&#x2F;CHANGELOG.md&quot;&gt;changelog&lt;&#x2F;a&gt; and updated documentation can be found in the project repository.&lt;&#x2F;p&gt;
</content>
        </entry>
</feed>
