Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package git-town for openSUSE:Factory 
checked in at 2026-06-22 17:35:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/git-town (Old)
 and      /work/SRC/openSUSE:Factory/.git-town.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "git-town"

Mon Jun 22 17:35:30 2026 rev:18 rq:1360863 version:23.0.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/git-town/git-town.changes        2026-06-08 
14:27:16.469921085 +0200
+++ /work/SRC/openSUSE:Factory/.git-town.new.1956/git-town.changes      
2026-06-22 17:35:44.134987275 +0200
@@ -1,0 +2,9 @@
+Sun Jun 21 16:28:31 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 23.0.3:
+  * Bug Fixes
+    - git town continue now works with faulty Git pre-commit hooks
+      (#6242).
+    - git town ship now works from a Git worktree (#6237).
+
+-------------------------------------------------------------------

Old:
----
  git-town-23.0.2.obscpio

New:
----
  git-town-23.0.3.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ git-town.spec ++++++
--- /var/tmp/diff_new_pack.DI9aRG/_old  2026-06-22 17:35:46.199059911 +0200
+++ /var/tmp/diff_new_pack.DI9aRG/_new  2026-06-22 17:35:46.203060052 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           git-town
-Version:        23.0.2
+Version:        23.0.3
 Release:        0
 Summary:        Git branches made easy
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DI9aRG/_old  2026-06-22 17:35:46.235061178 +0200
+++ /var/tmp/diff_new_pack.DI9aRG/_new  2026-06-22 17:35:46.239061319 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/git-town/git-town.git</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">refs/tags/v23.0.2</param>
+    <param name="revision">refs/tags/v23.0.3</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.DI9aRG/_old  2026-06-22 17:35:46.279062727 +0200
+++ /var/tmp/diff_new_pack.DI9aRG/_new  2026-06-22 17:35:46.283062868 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/git-town/git-town.git</param>
-              <param 
name="changesrevision">16c982b8b9828afb4a00db4ff61d491fca221782</param></service></servicedata>
+              <param 
name="changesrevision">7d8dce35b3a1471a8d081d7837e06d3c9d15b976</param></service></servicedata>
 (No newline at EOF)
 

++++++ git-town-23.0.2.obscpio -> git-town-23.0.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/CHANGELOG.md 
new/git-town-23.0.3/CHANGELOG.md
--- old/git-town-23.0.2/CHANGELOG.md    2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/CHANGELOG.md    2026-06-21 14:45:40.000000000 +0200
@@ -1,5 +1,16 @@
 # Git Town Changelog
 
+## 23.0.3 (2026-06-21)
+
+#### Bug Fixes
+
+- `git town continue` now works with faulty Git pre-commit hooks 
([#6242](https://github.com/git-town/git-town/issues/6242)).
+- `git town ship` now works from a Git worktree 
([#6237](https://github.com/git-town/git-town/issues/6237)).
+
+#### Contributors
+
+Big thanks to @Indemnity83, @OrHayat, @kevgo, @yaadata for contributing code, 
bug fixes, and ideas to 15 shipped pull requests 3 resolved issues!
+
 ## 23.0.2 (2026-06-06)
 
 #### Bug Fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/Makefile new/git-town-23.0.3/Makefile
--- old/git-town-23.0.2/Makefile        2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/Makefile        2026-06-21 14:45:40.000000000 +0200
@@ -1,8 +1,8 @@
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 
 # internal data and state
 .DEFAULT_GOAL := help
-RELEASE_VERSION := "23.0.2"
+RELEASE_VERSION := "23.0.3"
 GO_TEST_ARGS = LANG=C GOGC=off
 
 RTA          = tools/rta@$(RTA_VERSION)
@@ -18,6 +18,7 @@
 GHOKIN       = $(RTA) ghokin
 GOFUMPT      = $(RTA) gofumpt
 GOLANGCILINT = $(RTA) golangci-lint
+KEEPSORTED   = $(RTA) keep-sorted
 LEFTHOOK     = $(RTA) lefthook
 NPM          = $(RTA) npm
 NPX          = $(RTA) npx
@@ -179,7 +180,7 @@
 
 keep-sorted: ${RTA}
        @$(RTA) --install ripgrep
-       @$(RTA) keep-sorted $(shell $(RTA) ripgrep -l --hidden 'keep-sorted 
end' ./ --glob '!{.git,Makefile}')
+       @$(KEEPSORTED) $(shell $(RTA) ripgrep -l --hidden 'keep-sorted end' ./ 
--glob '!{.git,Makefile}')
 
 lint-cached-connectors:
        @(cd tools/lint_cached_connectors && go build) && 
./tools/lint_cached_connectors/lint_cached_connectors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/cucumber-sort.json 
new/git-town-23.0.3/cucumber-sort.json
--- old/git-town-23.0.2/cucumber-sort.json      2026-06-06 14:19:34.000000000 
+0200
+++ new/git-town-23.0.3/cucumber-sort.json      2026-06-21 14:45:40.000000000 
+0200
@@ -33,6 +33,7 @@
     
"features/sync/all_branches/merge_sync_strategy/conflicts/feature_branch_main_branch_conflict/shipped_changes_conflict_with_existing_feature_branch.feature",
     
"features/sync/all_branches/merge_sync_strategy/conflicts/multiple_conflicting_branches.feature",
     
"features/sync/all_branches/merge_sync_strategy/stack/conflicting_changes.feature",
+    
"features/sync/current_branch/feature_branch/broken_precommit_hook.feature",
     
"features/sync/current_branch/feature_branch/change_repo_in_between/add_stash.feature",
     
"features/sync/current_branch/feature_branch/change_repo_in_between/create_branch.feature",
     
"features/sync/current_branch/feature_branch/compress_sync_strategy/two_collaborators/conflicting_changes_parallel.feature",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/docs/RELEASE.md 
new/git-town-23.0.3/docs/RELEASE.md
--- old/git-town-23.0.2/docs/RELEASE.md 2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/docs/RELEASE.md 2026-06-21 14:45:40.000000000 +0200
@@ -12,7 +12,7 @@
     the README file
   - verify that the website content reflects all the changes made
   - search-and-replace the old version with the new version
-    - triple-digits: `23.0.2`
+    - triple-digits: `23.0.3`
     - double-digits: `23.0`
     - its best to do this manually so that you don't change unrelated version
       numbers in CHANGELOG.md, lockfiles, and data files
@@ -21,7 +21,7 @@
     - update `github.com/git-town/git-town/v23` (without trailing slash)
   - update the changelog with links to the website
 - ship the branch
-- `git sync --all && git checkout main && git tag v23.0.2 && git push --tags`
+- `git sync --all && git checkout main && git tag v23.0.3 && git push --tags`
 - wait for CI to finish the release:
   <https://github.com/git-town/git-town/actions>
 - edit the new unpublished release:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/features/ship/squash_merge/current_branch/verbose/verbose.feature
 
new/git-town-23.0.3/features/ship/squash_merge/current_branch/verbose/verbose.feature
--- 
old/git-town-23.0.2/features/ship/squash_merge/current_branch/verbose/verbose.feature
       2026-06-06 14:19:34.000000000 +0200
+++ 
new/git-town-23.0.3/features/ship/squash_merge/current_branch/verbose/verbose.feature
       2026-06-21 14:45:40.000000000 +0200
@@ -34,6 +34,7 @@
       |         | backend  | git diff --shortstat main feature --              
                                                                                
                                                                                
                                                                                
                                    |
       |         | frontend | git checkout main                                 
                                                                                
                                                                                
                                                                                
                                    |
       | main    | frontend | git merge --squash --ff feature                   
                                                                                
                                                                                
                                                                                
                                    |
+      |         | backend  | git rev-parse --absolute-git-dir                  
                                                                                
                                                                                
                                                                                
                                    |
       |         | frontend | git commit -m done                                
                                                                                
                                                                                
                                                                                
                                    |
       |         | backend  | git rev-parse main                                
                                                                                
                                                                                
                                                                                
                                    |
       |         | backend  | git rev-parse --verify -q refs/heads/main         
                                                                                
                                                                                
                                                                                
                                    |
@@ -49,7 +50,7 @@
       |         | backend  | git stash list                                    
                                                                                
                                                                                
                                                                                
                                    |
     And Git Town prints:
       """
-      Ran 32 shell commands.
+      Ran 33 shell commands.
       """
 
   Scenario: undo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/features/sync/current_branch/feature_branch/broken_precommit_hook.feature
 
new/git-town-23.0.3/features/sync/current_branch/feature_branch/broken_precommit_hook.feature
--- 
old/git-town-23.0.2/features/sync/current_branch/feature_branch/broken_precommit_hook.feature
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/git-town-23.0.3/features/sync/current_branch/feature_branch/broken_precommit_hook.feature
       2026-06-21 14:45:40.000000000 +0200
@@ -0,0 +1,48 @@
+Feature: recover from broken precommit hooks
+
+  Background:
+    Given a Git repo with origin
+    And the branches
+      | NAME    | TYPE    | PARENT | LOCATIONS     |
+      | feature | feature | main   | local, origin |
+    And the commits
+      | BRANCH  | LOCATION | MESSAGE                   | FILE NAME        | 
FILE CONTENT   |
+      | feature | local    | conflicting local commit  | conflicting_file | 
local content  |
+      |         | origin   | conflicting origin commit | conflicting_file | 
origin content |
+    And the current branch is "feature"
+    And a pre-commit hook that always fails
+    And I run "git-town sync"
+    And Git Town runs the commands
+      | BRANCH  | COMMAND                                 |
+      | feature | git fetch --prune --tags                |
+      |         | git merge --no-edit --ff origin/feature |
+    And Git Town prints the error:
+      """
+      CONFLICT (add/add): Merge conflict in conflicting_file
+      """
+    And a merge is now in progress
+    And I resolve the conflict in "conflicting_file"
+    And I run "git-town continue"
+    And Git Town prints the error:
+      """
+      Error: exit status 1
+      """
+    And I run "git commit -m manual --no-verify"
+    And I run "git-town continue"
+
+  Scenario: result
+    Then Git Town runs the commands
+      | BRANCH  | COMMAND  |
+      | feature | git push |
+    And no merge is now in progress
+    And all branches are now synchronized
+
+  Scenario: undo
+    When I run "git-town undo"
+    Then Git Town runs the commands
+      | BRANCH  | COMMAND                                                      
                              |
+      | feature | git reset --hard {{ sha 'conflicting local commit' }}        
                              |
+      |         | git push --force-with-lease origin {{ sha-in-origin 
'conflicting origin commit' }}:feature |
+    And no merge is now in progress
+    And the initial branches and lineage exist now
+    And the initial commits exist now
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/features/version/version.feature 
new/git-town-23.0.3/features/version/version.feature
--- old/git-town-23.0.2/features/version/version.feature        2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/features/version/version.feature        2026-06-21 
14:45:40.000000000 +0200
@@ -6,5 +6,5 @@
     When I run "git-town --version"
     Then Git Town prints:
       """
-      Git Town 23.0.2
+      Git Town 23.0.3
       """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/config/version.go 
new/git-town-23.0.3/internal/config/version.go
--- old/git-town-23.0.2/internal/config/version.go      2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/config/version.go      2026-06-21 
14:45:40.000000000 +0200
@@ -1,4 +1,4 @@
 package config
 
 // GitTownVersion provides the current Git Town version.
-const GitTownVersion = "23.0.2"
+const GitTownVersion = "23.0.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/git/commands.go 
new/git-town-23.0.3/internal/git/commands.go
--- old/git-town-23.0.2/internal/git/commands.go        2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/git/commands.go        2026-06-21 
14:45:40.000000000 +0200
@@ -257,8 +257,12 @@
 
 // CommentOutSquashCommitMessage comments out the message for the current 
squash merge
 // If the given prefix has content, adds it together with a newline.
-func (self *Commands) CommentOutSquashCommitMessage(prefix Option[string]) 
error {
-       squashMessageFile := ".git/SQUASH_MSG"
+func (self *Commands) CommentOutSquashCommitMessage(querier 
subshelldomain.Querier, prefix Option[string]) error {
+       gitDir, err := self.gitDirectory(querier)
+       if err != nil {
+               return err
+       }
+       squashMessageFile := filepath.Join(gitDir.String(), "SQUASH_MSG")
        contentBytes, err := os.ReadFile(squashMessageFile)
        if err != nil {
                return fmt.Errorf(messages.SquashCannotReadFile, 
squashMessageFile, err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/git/commands_test.go 
new/git-town-23.0.3/internal/git/commands_test.go
--- old/git-town-23.0.2/internal/git/commands_test.go   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/git/commands_test.go   2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,8 @@
 package git_test
 
 import (
+       "os"
+       "path/filepath"
        "testing"
 
        "github.com/git-town/git-town/v23/internal/config/configdomain"
@@ -910,6 +912,35 @@
                must.EqOp(t, initial, currentBranch)
        })
 
+       t.Run("CommentOutSquashCommitMessage", func(t *testing.T) {
+               t.Parallel()
+               t.Run("comments out the squash message in a normal repo", 
func(t *testing.T) {
+                       t.Parallel()
+                       runtime := testruntime.Create(t)
+                       gitDir := runtime.MustQueryTrim("git", "rev-parse", 
"--absolute-git-dir").String()
+                       squashMessageFile := filepath.Join(gitDir, "SQUASH_MSG")
+                       asserts.NoError(os.WriteFile(squashMessageFile, 
[]byte("line 1\nline 2\n"), 0o600))
+                       
asserts.NoError(runtime.Git.CommentOutSquashCommitMessage(runtime, 
None[string]()))
+                       have := 
string(asserts.NoError1(os.ReadFile(squashMessageFile)))
+                       must.EqOp(t, "# line 1\n# line 2\n# ", have)
+               })
+               t.Run("resolves SQUASH_MSG relative to the per-worktree git dir 
in a linked worktree", func(t *testing.T) {
+                       t.Parallel()
+                       // In a linked worktree, ".git" is a file pointing at 
the real git dir,
+                       // so the literal path ".git/SQUASH_MSG" would fail 
with "not a directory".
+                       origin := testruntime.Create(t)
+                       worktreeDir := t.TempDir()
+                       origin.MustRun("git", "worktree", "add", "-b", 
"feature", worktreeDir)
+                       linked := testruntime.New(worktreeDir, origin.HomeDir, 
origin.BinDir)
+                       gitDir := linked.MustQueryTrim("git", "rev-parse", 
"--absolute-git-dir").String()
+                       squashMessageFile := filepath.Join(gitDir, "SQUASH_MSG")
+                       asserts.NoError(os.WriteFile(squashMessageFile, 
[]byte("body\n"), 0o600))
+                       
asserts.NoError(linked.Git.CommentOutSquashCommitMessage(linked, 
Some("prefix")))
+                       have := 
string(asserts.NoError1(os.ReadFile(squashMessageFile)))
+                       must.EqOp(t, "# prefix\n# body\n# ", have)
+               })
+       })
+
        t.Run("CommitsInBranch", func(t *testing.T) {
                t.Parallel()
                t.Run("feature branch contains commits", func(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/git/gitdomain/repo_status.go 
new/git-town-23.0.3/internal/git/gitdomain/repo_status.go
--- old/git-town-23.0.2/internal/git/gitdomain/repo_status.go   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/git/gitdomain/repo_status.go   2026-06-21 
14:45:40.000000000 +0200
@@ -6,3 +6,8 @@
        RebaseInProgress bool // a rebase is in progress
        UntrackedChanges bool // the repo contains files that aren't tracked by 
Git
 }
+
+// NeedsToCommit indicates whether the repo contains something to commit.
+func (self RepoStatus) NeedsToCommit() bool {
+       return self.OpenChanges || self.RebaseInProgress || self.Conflicts || 
self.UntrackedChanges
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/state/runstate/save_load_test.go 
new/git-town-23.0.3/internal/state/runstate/save_load_test.go
--- old/git-town-23.0.2/internal/state/runstate/save_load_test.go       
2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/state/runstate/save_load_test.go       
2026-06-21 14:45:40.000000000 +0200
@@ -70,6 +70,7 @@
                                &opcodes.CherryPickContinue{},
                                &opcodes.Commit{AuthorOverride: 
Some(gitdomain.Author("[email protected]")), FallbackToDefaultCommitMessage: true, 
Message: Some(gitdomain.CommitMessage("my message"))},
                                &opcodes.CommitAutoUndo{AuthorOverride: 
Some(gitdomain.Author("[email protected]")), FallbackToDefaultCommitMessage: true, 
Message: Some(gitdomain.CommitMessage("my message"))},
+                               &opcodes.CommitIfNeeded{AuthorOverride: 
Some(gitdomain.Author("[email protected]")), FallbackToDefaultCommitMessage: true, 
Message: Some(gitdomain.CommitMessage("my message"))},
                                &opcodes.CommitMessageCommentOut{},
                                &opcodes.CommitRemove{SHA: "123456"},
                                &opcodes.CommitRevert{SHA: "123456"},
@@ -369,6 +370,14 @@
       "type": "CommitAutoUndo"
     },
     {
+      "data": {
+        "AuthorOverride": "[email protected]",
+        "FallbackToDefaultCommitMessage": true,
+        "Message": "my message"
+      },
+      "type": "CommitIfNeeded"
+    },
+    {
       "data": {},
       "type": "CommitMessageCommentOut"
     },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/test/commands/test_commands.go 
new/git-town-23.0.3/internal/test/commands/test_commands.go
--- old/git-town-23.0.2/internal/test/commands/test_commands.go 2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/test/commands/test_commands.go 2026-06-21 
14:45:40.000000000 +0200
@@ -569,6 +569,18 @@
        self.MustRun("git", "config", "init.defaultbranch", value.String())
 }
 
+// Installs a pre-commit hook that always fails.
+func (self *TestCommands) SetFailingPrecommitHook() {
+       content := `
+#!/bin/sh
+exit 1
+`[1:]
+       dirPath := filepath.Join(self.WorkingDir, ".git", "hooks")
+       asserts.NoError(os.MkdirAll(dirPath, 0o744))
+       filePath := filepath.Join(dirPath, "pre-commit")
+       asserts.NoError(os.WriteFile(filePath, []byte(content), 0o744)) 
//nolint:gosec // Git hooks need to be executable
+}
+
 // StageFiles adds the file with the given name to the Git index.
 func (self *TestCommands) StageFiles(names ...string) {
        args := append([]string{"add"}, names...)
@@ -591,7 +603,7 @@
        return self.Run("git", "stash", "pop")
 }
 
-// HasGitTownConfigNow indicates whether this repository contain Git Town 
specific configuration.
+// VerifyNoGitTownConfiguration indicates whether this repository contain Git 
Town specific configuration.
 func (self *TestCommands) VerifyNoGitTownConfiguration() error {
        output, _ := self.Query("git", "config", "--get-regex", "git-town")
        if len(output) > 0 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/test/cucumber/steps.go 
new/git-town-23.0.3/internal/test/cucumber/steps.go
--- old/git-town-23.0.2/internal/test/cucumber/steps.go 2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/test/cucumber/steps.go 2026-06-21 
14:45:40.000000000 +0200
@@ -266,6 +266,12 @@
                state.fixture.AddUpstream()
        })
 
+       sc.Step(`^a pre-commit hook that always fails$`, func(ctx 
context.Context) {
+               state := ctx.Value(keyScenarioState).(*ScenarioState)
+               devRepo := state.fixture.DevRepo.GetOrPanic()
+               devRepo.SetFailingPrecommitHook()
+       })
+
        sc.Step(`^a rebase is (?:now|still) in progress$`, func(ctx 
context.Context) error {
                state := ctx.Value(keyScenarioState).(*ScenarioState)
                devRepo := state.fixture.DevRepo.GetOrPanic()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/vm/opcodes/all.go 
new/git-town-23.0.3/internal/vm/opcodes/all.go
--- old/git-town-23.0.2/internal/vm/opcodes/all.go      2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/vm/opcodes/all.go      2026-06-21 
14:45:40.000000000 +0200
@@ -46,6 +46,7 @@
                &CherryPickContinue{},
                &CherryPick{},
                &CommitAutoUndo{},
+               &CommitIfNeeded{},
                &CommitMessageCommentOut{},
                &CommitRemove{},
                &CommitRevertIfNeeded{},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/vm/opcodes/commit.go 
new/git-town-23.0.3/internal/vm/opcodes/commit.go
--- old/git-town-23.0.2/internal/vm/opcodes/commit.go   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/vm/opcodes/commit.go   2026-06-21 
14:45:40.000000000 +0200
@@ -17,6 +17,14 @@
        Message                        Option[gitdomain.CommitMessage]
 }
 
+func (self *Commit) Continue() []shared.Opcode {
+       return []shared.Opcode{CommitIfNeeded{
+               AuthorOverride:                 self.AuthorOverride,
+               FallbackToDefaultCommitMessage: 
self.FallbackToDefaultCommitMessage,
+               Message:                        self.Message,
+       }}
+}
+
 func (self *Commit) Run(args shared.RunArgs) error {
        return args.Git.Commit(args.Frontend, 
configdomain.UseMessageWithFallbackToDefault(self.Message, 
self.FallbackToDefaultCommitMessage), self.AuthorOverride, 
configdomain.CommitHookEnabled)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/vm/opcodes/commit_if_needed.go 
new/git-town-23.0.3/internal/vm/opcodes/commit_if_needed.go
--- old/git-town-23.0.2/internal/vm/opcodes/commit_if_needed.go 1970-01-01 
01:00:00.000000000 +0100
+++ new/git-town-23.0.3/internal/vm/opcodes/commit_if_needed.go 2026-06-21 
14:45:40.000000000 +0200
@@ -0,0 +1,34 @@
+package opcodes
+
+import (
+       "github.com/git-town/git-town/v23/internal/git/gitdomain"
+       "github.com/git-town/git-town/v23/internal/vm/shared"
+       . "github.com/git-town/git-town/v23/pkg/prelude"
+)
+
+// CommitIfNeeded commits all open changes as a new commit,
+// but only if there are changes to commit.
+type CommitIfNeeded struct {
+       AuthorOverride                 Option[gitdomain.Author]
+       FallbackToDefaultCommitMessage bool
+       Message                        Option[gitdomain.CommitMessage]
+}
+
+func (self *CommitIfNeeded) Run(args shared.RunArgs) error {
+       repoStatus, err := args.Git.RepoStatus(args.Backend)
+       if err != nil {
+               return err
+       }
+       hasOpenFiles := repoStatus.NeedsToCommit()
+       mergeInProgress := args.Git.HasMergeInProgress(args.Backend)
+       needsToCommit := hasOpenFiles || mergeInProgress
+       if !needsToCommit {
+               return nil
+       }
+       args.PrependOpcodes(&Commit{
+               AuthorOverride:                 self.AuthorOverride,
+               FallbackToDefaultCommitMessage: 
self.FallbackToDefaultCommitMessage,
+               Message:                        self.Message,
+       })
+       return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/vm/opcodes/commit_message_comment_out.go 
new/git-town-23.0.3/internal/vm/opcodes/commit_message_comment_out.go
--- old/git-town-23.0.2/internal/vm/opcodes/commit_message_comment_out.go       
2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/vm/opcodes/commit_message_comment_out.go       
2026-06-21 14:45:40.000000000 +0200
@@ -12,7 +12,7 @@
 type CommitMessageCommentOut struct{}
 
 func (self *CommitMessageCommentOut) Run(args shared.RunArgs) error {
-       if err := args.Git.CommentOutSquashCommitMessage(None[string]()); err 
!= nil {
+       if err := args.Git.CommentOutSquashCommitMessage(args.Backend, 
None[string]()); err != nil {
                return fmt.Errorf(messages.SquashMessageProblem, err)
        }
        return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/internal/vm/opcodes/connector_proposal_merge.go 
new/git-town-23.0.3/internal/vm/opcodes/connector_proposal_merge.go
--- old/git-town-23.0.2/internal/vm/opcodes/connector_proposal_merge.go 
2026-06-06 14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/vm/opcodes/connector_proposal_merge.go 
2026-06-21 14:45:40.000000000 +0200
@@ -44,7 +44,7 @@
                if err := args.Git.SquashMerge(args.Frontend, self.Branch); err 
!= nil {
                        return err
                }
-               if err := 
args.Git.CommentOutSquashCommitMessage(Some(forgedomain.CommitBody(proposalData,
 proposalData.Title.String()) + "\n\n")); err != nil {
+               if err := args.Git.CommentOutSquashCommitMessage(args.Backend, 
Some(forgedomain.CommitBody(proposalData, 
proposalData.Title.String())+"\n\n")); err != nil {
                        return fmt.Errorf(messages.SquashMessageProblem, err)
                }
                if err := args.Git.CommitStart(args.Frontend); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/internal/vm/shared/opcode.go 
new/git-town-23.0.3/internal/vm/shared/opcode.go
--- old/git-town-23.0.2/internal/vm/shared/opcode.go    2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/internal/vm/shared/opcode.go    2026-06-21 
14:45:40.000000000 +0200
@@ -21,8 +21,8 @@
        Abort() []Opcode
 }
 
-// Continuable marks an opcode that can provide custom steps
-// to safely continue after a failed Git command.
+// Continuable marks an opcode that can provide the opcodes
+// to run when continuing after a failed Git command.
 // By default, opcodes retry by running their Run method again.
 type Continuable interface {
        Continue() []Opcode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/collector_addf/Makefile 
new/git-town-23.0.3/tools/collector_addf/Makefile
--- old/git-town-23.0.2/tools/collector_addf/Makefile   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/collector_addf/Makefile   2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 
 RTA = ../rta@$(RTA_VERSION)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/format_cmp_or/Makefile 
new/git-town-23.0.3/tools/format_cmp_or/Makefile
--- old/git-town-23.0.2/tools/format_cmp_or/Makefile    2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/format_cmp_or/Makefile    2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/format_self/Makefile 
new/git-town-23.0.3/tools/format_self/Makefile
--- old/git-town-23.0.2/tools/format_self/Makefile      2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/format_self/Makefile      2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/format_unittests/Makefile 
new/git-town-23.0.3/tools/format_unittests/Makefile
--- old/git-town-23.0.2/tools/format_unittests/Makefile 2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/format_unittests/Makefile 2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/generate_json_schema/Makefile 
new/git-town-23.0.3/tools/generate_json_schema/Makefile
--- old/git-town-23.0.2/tools/generate_json_schema/Makefile     2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/generate_json_schema/Makefile     2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/generate_json_schema/go.mod 
new/git-town-23.0.3/tools/generate_json_schema/go.mod
--- old/git-town-23.0.2/tools/generate_json_schema/go.mod       2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/generate_json_schema/go.mod       2026-06-21 
14:45:40.000000000 +0200
@@ -3,7 +3,7 @@
 go 1.26.1
 
 require (
-       github.com/git-town/git-town/v23 v23.0.2
+       github.com/git-town/git-town/v23 v23.0.3
        github.com/invopop/jsonschema v0.13.0
        github.com/shoenig/test v1.12.2
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/iterate_map/Makefile 
new/git-town-23.0.3/tools/iterate_map/Makefile
--- old/git-town-23.0.2/tools/iterate_map/Makefile      2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/iterate_map/Makefile      2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/tools/lint_cached_connectors/Makefile 
new/git-town-23.0.3/tools/lint_cached_connectors/Makefile
--- old/git-town-23.0.2/tools/lint_cached_connectors/Makefile   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/lint_cached_connectors/Makefile   2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/lint_steps/Makefile 
new/git-town-23.0.3/tools/lint_steps/Makefile
--- old/git-town-23.0.2/tools/lint_steps/Makefile       2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/lint_steps/Makefile       2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/messages_sorted/Makefile 
new/git-town-23.0.3/tools/messages_sorted/Makefile
--- old/git-town-23.0.2/tools/messages_sorted/Makefile  2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/messages_sorted/Makefile  2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/messy_output/Makefile 
new/git-town-23.0.3/tools/messy_output/Makefile
--- old/git-town-23.0.2/tools/messy_output/Makefile     2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/messy_output/Makefile     2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/optioncompare/Makefile 
new/git-town-23.0.3/tools/optioncompare/Makefile
--- old/git-town-23.0.2/tools/optioncompare/Makefile    2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/optioncompare/Makefile    2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/tools/optioncompare_in_tests/Makefile 
new/git-town-23.0.3/tools/optioncompare_in_tests/Makefile
--- old/git-town-23.0.2/tools/optioncompare_in_tests/Makefile   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/optioncompare_in_tests/Makefile   2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/git-town-23.0.2/tools/print_config_exhaustive/Makefile 
new/git-town-23.0.3/tools/print_config_exhaustive/Makefile
--- old/git-town-23.0.2/tools/print_config_exhaustive/Makefile  2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/print_config_exhaustive/Makefile  2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/stats_release/Makefile 
new/git-town-23.0.3/tools/stats_release/Makefile
--- old/git-town-23.0.2/tools/stats_release/Makefile    2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/stats_release/Makefile    2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/structs_sorted/Makefile 
new/git-town-23.0.3/tools/structs_sorted/Makefile
--- old/git-town-23.0.2/tools/structs_sorted/Makefile   2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/structs_sorted/Makefile   2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/sync_rta_version/Makefile 
new/git-town-23.0.3/tools/sync_rta_version/Makefile
--- old/git-town-23.0.2/tools/sync_rta_version/Makefile 2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/sync_rta_version/Makefile 2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/tests_sorted/Makefile 
new/git-town-23.0.3/tools/tests_sorted/Makefile
--- old/git-town-23.0.2/tools/tests_sorted/Makefile     2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/tests_sorted/Makefile     2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/tools/use_equal/Makefile 
new/git-town-23.0.3/tools/use_equal/Makefile
--- old/git-town-23.0.2/tools/use_equal/Makefile        2026-06-06 
14:19:34.000000000 +0200
+++ new/git-town-23.0.3/tools/use_equal/Makefile        2026-06-21 
14:45:40.000000000 +0200
@@ -1,6 +1,6 @@
 .DEFAULT_GOAL := help
 
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 RTA = ../rta@$(RTA_VERSION)
 
 fix:  # runs all linters and auto-fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/vendor/modules.txt 
new/git-town-23.0.3/vendor/modules.txt
--- old/git-town-23.0.2/vendor/modules.txt      2026-06-06 14:19:34.000000000 
+0200
+++ new/git-town-23.0.3/vendor/modules.txt      2026-06-21 14:45:40.000000000 
+0200
@@ -97,7 +97,7 @@
 # github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f
 ## explicit; go 1.16
 github.com/erikgeiser/coninput
-# github.com/git-town/git-town/v23 v23.0.2 => .
+# github.com/git-town/git-town/v23 v23.0.3 => .
 ## explicit; go 1.26.1
 # github.com/go-fed/httpsig v1.1.0
 ## explicit; go 1.13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/website/Makefile 
new/git-town-23.0.3/website/Makefile
--- old/git-town-23.0.2/website/Makefile        2026-06-06 14:19:34.000000000 
+0200
+++ new/git-town-23.0.3/website/Makefile        2026-06-21 14:45:40.000000000 
+0200
@@ -1,4 +1,4 @@
-RTA_VERSION = 0.36.0  # run-that-app version to use
+RTA_VERSION = 0.37.0  # run-that-app version to use
 
 .DEFAULT_GOAL := help
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/git-town-23.0.2/website/src/install.sh 
new/git-town-23.0.3/website/src/install.sh
--- old/git-town-23.0.2/website/src/install.sh  2026-06-06 14:19:34.000000000 
+0200
+++ new/git-town-23.0.3/website/src/install.sh  2026-06-21 14:45:40.000000000 
+0200
@@ -3,7 +3,7 @@
 
 # This script installs the Git Town executable in the user's HOME directory.
 
-VERSION=23.0.2             # the version of Git Town to install
+VERSION=23.0.3             # the version of Git Town to install
 DEST=$HOME/.local/bin      # the folder into which to install the Git Town 
executable
 TMP_DIR=.git-town-download # temporary folder to use
 

++++++ git-town.obsinfo ++++++
--- /var/tmp/diff_new_pack.DI9aRG/_old  2026-06-22 17:35:50.935226581 +0200
+++ /var/tmp/diff_new_pack.DI9aRG/_new  2026-06-22 17:35:50.947227003 +0200
@@ -1,5 +1,5 @@
 name: git-town
-version: 23.0.2
-mtime: 1780748374
-commit: 16c982b8b9828afb4a00db4ff61d491fca221782
+version: 23.0.3
+mtime: 1782045940
+commit: 7d8dce35b3a1471a8d081d7837e06d3c9d15b976
 

Reply via email to