Git Town Versions Save

Additional Git commands for easier branch management and support for stacked changes

v14.2.0

2 weeks ago

New Features

  • git town set-parent is now a proper Git Town command, with continue and undo (#3407).
  • Git Town now works if you have merge.ff-only configured (#3408).

Bug Fixes

  • git town set-parent now properly defaults to the existing parent (#3406).

Big thanks to @charlierudolph, @ericyliu, @hammenm, @hmbrg, @kevgo, @KORDayDream, @StevenXL, @vectro, @zifeo for contributing code, ideas, and feedback to 23 shipped PRs and 7 resolved issues!

v14.1.0

3 weeks ago

Besides polishing the git town switch command, Git Town 14.1 focuses on stability improvements and bashing bugs. We closed out 50% of all open tickets (70 tickets), including many long-standing bugs!

This version also de-emphasizes git ship. Most people should not run git ship. The recommended workflow is to ship feature branches using the web UI or merge queue of your code hosting platform. git ship is for edge cases like development in offline mode.

New Features

  • git town switch now has an -m option that checks out the selected branch using git checkout -m (#3321).
  • git town switch now doesn't allow selecting branches that are checked out in other Git worktrees (#3295).
  • git town switch now indicates the existence of uncommitted changes. This helps remember to commit them on the current branch if that was needed (#3307).
  • Git Town now shuts down gracefully and allows continue and undo when you press Ctrl-C to cancel a Git command that runs too long or hangs (#414).
  • Notifications to the user are now highlighted in cyan in the Git Town output, making them easier to spot (#3353).
  • The setup assistant now also uses remotes/origin/HEAD to determine the default main branch if the already used init.defaultbranch setting isn't set (#646).
  • Prototypical support for the API of GitHub Enterprise. This is impossible to test for the Git Town team, so please provide bug reports if something doesn't work (#1179).
  • Improved support for GitLab instances that use a custom SSH port (#1891).
  • git ship now sqash-merges using the --ff option. This removes an incompatibility for users who have the merge.ff option set to false in their Git configuration (#1097).
  • If a branch is listed as its own parent, Git Town now notifies the user and deletes this invalid lineage entry (#3393).
  • Improved error messages (#2949).

Bug Fixes

  • git sync now ends on the previously checked out branch when pruning branches (#2784).
  • git sync --all now syncs in topological order. This ensures all branches in deep stacks get synced (#3344).
  • git town switch no longer displays branches that were deleted manually (#3361).
  • git kill now checks out the main branch when the previous branch also was killed (#3358).

Massive thanks to @abhijeetbhagat, @aeneasr, @allewun, @alphatroya, @amarpatel, @avaz, @breml, @bryanlarsen, @charlierudolph, @ChrisMM, @cirego, @ericyliu, @grignaak, @hammenm, @hmbrg, @JCB-K, @kevgo, @koppor, @KORDayDream, @martinjaime, @mball-agathos, @mribichich, @ruudk, @sascha-andres, @sheldonhull, @tranhl, @vectro, @WhosNickDoglio, @WurmD, @zeronacer, @zifeo for contributing code, ideas, and feedback to 74 shipped PRs and 70 resolved issues!

v14.0.0

1 month ago

Git Town 14.0 improves the developer experience around uncommitted and stacked changes.

BREAKING CHANGES

git hack, git append, and git prepend no longer sync the branch lineage in the presence of uncommitted changes. This allows you to commit your changes first before pulling in more changes from other developers. They still sync if you call them without uncommitted changes (#3198).

New Features

git town compress (aliasable to git compress by re-running git town config setup) squashes all commits in a branch into a single commit. By default the new commit uses the commit message of the first commit in the branch. You can provide a custom commit message using the -m switch the same way as in git commit. The --stack option compresses all branches in a change stack. Git Town does not compress perennial, observed, contribution, and non-active parked branches (#1529, #2086).

git hack, git append, and git prepend are faster due to creating and checking out the new branch using a single Git operation (#3313).

Big thanks to @blaggacao, @breml, @gabyx, @kevgo, @mball-agathos, @nishchay-manwani-glean, @pjh, @ruudk, @tranhl, @utkinn, and @WhosNickDoglio for contributing code, ideas, and feedback to 68 shipped PRs and 7 resolved issues!

v13.0.2

1 month ago
Bug Fixes
  • Fixes a serious bug where users who have branch.sort set might get tracking branches removed (#3241).

Statistics

Heartfelt thanks to @breml and @kevgo for going the extra mile to investigate a tricky bug and contributing to 25 shipped PRs and 4 resolved issues!

v13.0.1

1 month ago

Bug Fixes

  • Allows syncing branches with merge conflicts in linked worktrees (#3230).
  • Fixes the Bash-based installer (#3234).

Statistics

Many thanks to @alexus37, @breml, @bryanlarsen, @kevgo, @tranhl, @vectro, @wederbrand for contributing feedback, ideas, and solutions to 8 shipped PRs and 6 resolved issues!

v13.0.0

1 month ago

Git Town 13.0 adds better support for syncing feature branches after rebasing/amending commits.

BREAKING CHANGES

When the sync-feature-strategy is set to rebase, Git Town now force-pushes your locally rebased commits to the tracking branch (#3182). This avoids mixing locally rebased commits with outdated commits on the tracking branch. To not accidentally override new commits on the tracking branch that haven't been integrated into your local commits, Git Town now force-pushes using the --force-if-includes Git flag.

This requires raising the minimally required Git version from 2.7 to 2.30. Git 2.30 was released over 2 years ago and should be widely available at this point.

New Features

  • Git Town now automatically removes lineage entries for branches that were converted from feature branches to perennial branches (#3218).
  • Git Town documentation and error messages now guide the user to call Git Town as git town instead of git-town on the CLI (#3208).

Bug Fixes

  • Fixes a crash when an ustream HEAD is set (#2660).
  • Fixes the error message when trying to set the parent of a perennial branch (#3217).

Kudos to @100rab-S, @dgentry, @kevgo, @koppor, @nicksieger, @ruudk, @srstevenson, and @tranhl for contributing code, ideas, and feedback to 18 shipped PRs and 13 resolved issues!

v12.1.0

2 months ago

Git Town 12.1 implements some of the most requested features by the Git Town community. It also continues the modernization of Git Town's internals. This time we made Git Town's undo engine simpler, more robust, and more reliable by removing all remaining mutable state.

New Features

  • New options to fine-tune how Git Town syncs branches: git contribute, git observe, and git park. More info at https://www.git-town.com/advanced-syncing and #3095.
  • All branches matching the regular expression in the new configuration setting branches.perennial-regex are now also considered perennial, in addition to the ones already listed in branches.perennials. This makes it easier to deal with situations where you have many perennial branches with similar sounding names like release-1, release-2, etc (#2659).

Bug Fixes

  • git town skip now works correctly in complex situations (#2978).
  • Git Town now deletes branches more reliably (#3097).

Statistics

Many thanks to @100rab-S, @harrismcc, @kevgo, @ruudk, @tranhl for contributing feedback, ideas, and solutions to 70 shipped PRs and 11 resolved issues!

v12.0.2

2 months ago

Bug Fixes

  • All dialogs that show local branches now paginate (#3119)

Big thanks to @ruudk for helping identify the missing pagination for dialogs thanks to his plentiful local Git branches!

v12.0.1

3 months ago

Bug Fixes

  • Remove crashes when using a self-hosted platform instance (#3114)
  • Improve the CLI output when using a hosting connector (#3115)

A heartfelt thanks to @lud-wj for helping triangulate a bug.

v12.0.0

3 months ago

Git Town 12 continues the effort to make the Git Town user experience more consistent and intuitive by modernizing Git Town's configuration system.

BREAKING CHANGES

  • The new setup assistent (see below) replaces the existing CLI and Git commands to change the configuration.
  • Removing the Git Town configuration is now done by running git town config remove instead of git town config reset (#3051).
  • More intuitive names for the following configuration options. Git Town automatically updates the configuration, so no action is needed on your end.
    • code-hosting-platform is now hosting-platform (#3054)
    • code-hosting-origin-hostname is now hosting-origin-hostname (#3053)
    • ship-delete-remote-branch is now ship-delete-tracking-branch (#2929)
  • Putting Git Town into offline mode is a top-level command again. Run git town offline yes to enable offline mode instead of git town config offline yes (#3049).
  • All visual dialogs have been rewritten using a modern UI framework for a better look and to avoid the rendering issues encountered before (#2964).
  • Nested feature branches are now called "stacked changes" to match the emerging industry term (#3062).

New Features

  • Git Town v12 introduces Git Town's setup assistant (#2941). The setup assistant guides you through all of Git Town's configuration settings, including setting up the shorter aliases for Git Town commands. Run it by executing git town config setup. This assistant replaces the old configuration commands under git town config, the alias command, and the old "quick configuration" process.
  • Git Town now supports storing non-confidential configuration entries in a configuration file with name .git-branches.toml (#2748). The best way to create one is the setup assistant. The setup assistant can also migrate your existing Git-based configuration to the config file.
  • All commands now support the --dry-run flag to try them out safely (#2859).
  • You can now install Git Town on Windows using Chocolatey: choco install git-town (#763)
  • Massive performance improvements (exceeding 200%) on Windows thanks to not executing Git through the CMD shell anymore (#2881).
  • The undo commands execute faster (#2863).

Bug Fixes

  • Fix the --version command on Windows (#2900).

Statistics

  • 294 contributions
  • 31 resolved tickets

A heartfelt thanks to the contributors for this release: @alokpr, @brandonaut, @bryanlarsen, @ChrisMM, @eugef, @IGassmann, @Iron-Ham, @jakeleboeuf, @JaKXz, @kevgo, @koppor, @Nezteb, @ruudk, @zeronacer