Git Town Changelog

What's new in Git Town 14.2.0

Apr 25, 2024
  • 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).

New in Git Town 14.1.0 (Apr 20, 2024)

  • 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).

New in Git Town 14.0.0 (Apr 13, 2024)

  • 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).

New in Git Town 13.0.2 (Mar 30, 2024)

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

New in Git Town 12.1.0 (Mar 1, 2024)

  • 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).

New in Git Town 12.0.2 (Feb 14, 2024)

  • All dialogs that show local branches now paginate

New in Git Town 12.0.1 (Feb 13, 2024)

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

New in Git Town 12.0.0 (Feb 10, 2024)

  • 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).

New in Git Town 11.1.0 (Dec 12, 2023)

  • New Features:
  • Git Town now handles branches checked out in other worktrees correctly (#2764)
  • Git Town now checks out the previous Git branch ("git checkout -") after removing a local branch (#2742)
  • Bug Fixes:
  • git continue now correctly handles a manually popped stash after resolving conflicts (#2758)
  • git continue retries failing commit, merge-proposal, create-branch, create-proposal, create-tracking-branch, and push-branch operations (#2756)
  • git continue ensures there are no untracked files (#2754)
  • git switch now allows switching to perennial branches (#2752)

New in Git Town 11.0.0 (Dec 7, 2023)

  • New Features:
  • The new sync-before-ship config option prevents git ship from updating the branch it is about to ship. The old behavior makes sense when shipping branches locally but is conflicting with the requirements for tests to pass on CI before shipping via the hosting platform (#2714).
  • Bug Fixes:
  • allow renaming local-only branches (#2710)
  • git repo and git propose always open the browser page at the default port, even if the origin remote points to a custom port
  • (#2730)

New in Git Town 10.0.3 (Nov 27, 2023)

  • Fix killing perennial branches (#2679)

New in Git Town 10.0.2 (Nov 8, 2023)

  • Bug Fixes:
  • Fix wrong error message when status.short is enabled in Git config

New in Git Town 10.0.1 (Nov 3, 2023)

  • Fix crash if commits contain "[" (#2645)

New in Git Town 10.0.0 (Nov 2, 2023)

  • BREAKING CHANGES:
  • git sync now also removes local branches with a deleted tracking branch, after verifying that those local branches contain no unshipped changes (#2038)
  • git town prune-branches has been sunset, run git sync instead (#2579)
  • Git Town's statefile on disk has a new format, you might have to run git town status reset to avoid runtime errors (#2446)
  • git ship no longer ships branches that exist solely at the remote. Moving forward branches to ship must exist on your local machine. Use the web UI of your code hosting service to ship remote branches. (#2367, #2372)
  • git kill no longer deletes branches that exist solely at the remote. Delete them by running git push origin :branchname or via the web UI of your code hosting service (#2368)
  • git hack no longer has the -p option. Use git append and git prepend instead (#2577)
  • Git Town no longer considers it an error if there is nothing to abort or continue (#2631, #2632)
  • querying the version of the installed Git Town binary is now compatible with the way Git does it: git-town --version instead of git-town version (#2603)
  • v10 renames the debug parameter to verbose because all it does is print more information (#2598)
  • updated GitLab support, please report regressions
  • New Features:
  • support for running Git Town on computers that use different language than English (#2478)
  • git undo works for all commands now (#2484)
  • CLI output now contains requests to the code hosting API (#2340)
  • CLI output now describes changes the branch ancestry (#2558)
  • git town switch now displays the output of the command to switch branches (#2602)
  • environment variables now override all GitHub API operations (#2593)
  • community-contributed installation for BSD via FreshPorts (#2553)
  • less force-deleting of branches (#2539)
  • Bug Fixes:
  • fix broken version number in release binaries (#2333)
  • fix crash when a configured branch parent is empty (#2626)
  • fix crash when running set-parent on large monorepos (#2623)
  • when deleting perennial branches, remove the ancestry information of their children (#2540)

New in Git Town 9.0.0 (May 25, 2023)

  • BREAKING CHANGES:
  • Git Town 9.0 supports the new API URLs that become official in GitLab v16. If
  • you use an older version of GitLab, Git Town's integration with GitLab's API
  • might no longer work. The fix is to update your GitLab installation to at least
  • v15 (#2249)
  • New Features:
  • read the token to use for the GitHub API from environment variables
  • GITHUB_TOKEN or GITHUB_AUTH_TOKEN in addition to the already existing option to store it in the Git configuration (#2217)

New in Git Town 7.9.0 (Jan 22, 2023)

  • New Features:
  • Rebase feature branches against their parent branch using the new sync-strategy option (#1950)
  • Configure using git town sync-strategy (merge | rebase)
  • Disable Git's pre-push hook using the new push-verify option (#1958)
  • Support for GitLab subgroups (#1943)
  • Bug Fixes:
  • Support GitLab SaaS repos whose name contains "gitlab" (#1926)

New in Git Town 7.8.0 (Aug 8, 2022)

  • New Features:
  • Update Regex for hostname extraction to support more ssh usernames (#1883)
  • Merge GitLab merge requests when shipping (#1874)
  • Bug Fixes:
  • Fix tests on non-English locales (#1875)
  • Fix bug in undo of "git hack" in local repo (#1804)

New in Git Town 7.7.0 (Jan 22, 2022)

  • New Features:
  • Support for Apple Silicon (#1735, #1736)
  • Ignore changes in submodules during sync (#1744)
  • Improved CLI interface including better shell autocompletions (#1722)
  • Shell-based installer for *nix systems (#1707)
  • New website (#1684)
  • Make command shows dependency tree within the codebase (#1725)
  • Go API now has the same major version number as the binary (#1677)
  • Bug Fixes:
  • Fix author not being set properly (1686)
  • Filenames of assets at GitHub releases are all lowercase now (#1710)
  • Option for more compatible shell autocompletion without descriptions (#1493)

New in Git Town 7.6.0 (Nov 24, 2021)

  • New Features:
  • Print diagnostic information on command failure (#1667)

New in Git Town 7.5.0 (Mar 11, 2021)

  • New Features:
  • add log after command that causes auto abort (#1635)
  • Bug Fixes:
  • fix panic when continuing rebase (#1615)
  • fix panic when continuing a command that includes the fetch upstream step (#1617)
  • fix GitHub API log when shipping with the GitHub driver (#1622)
  • fix panic when aborting a command that includes discard open changes step (#1631)
  • fix continuing sync from subfolder (#1637)

New in Git Town 7.4.0 (Jul 5, 2020)

  • Version 7.4.0 sports a vastly overhauled internal architecture that provides
  • more robust error handling, improved error messages, and a much better developer
  • experience. Ruby has been dropped as a development dependency.
  • New Features:
  • improved installation experience: MSI installer for Windows, .deb and .rpm packages for Linux, archives with properly named binaries for all other use cases (#1589)
  • "diff-parent" command (#1385)
  • support for Gitea hosting service (#1518)
  • print URLs to open when browser is not available (#1318)
  • autocompletion for bash, zsh, fish, powershell (#1492)
  • list parent configurations for branches that are children of a branch that does not have its parent configured (#1436)
  • Bug Fixes:
  • many improved error messages

New in Git Town 6.0.0 (Jan 16, 2018)

  • update perennial branch interface (#1087)

New in Git Town 4.2.1 (Aug 21, 2017)

  • New Features:
  • Update all commands to support offline mode (lack of an internet connection)
  • Display / update offline mode with git town offline [(true | false)]
  • git ship:
  • add ability to ship hotfixes to perennial branches
  • add ability to merge via GitHub API when applicable. See documentation for more info.

New in Git Town 4.2.0 (Aug 21, 2017)

  • New Features:
  • Update all commands to support offline mode (lack of an internet connection)
  • Display / update offline mode with git town offline [(true | false)]
  • git ship:
  • add ability to ship hotfixes to perennial branches
  • add ability to merge via GitHub API when applicable. See documentation for more info.

New in Git Town 4.1.2 (Jun 9, 2017)

  • Bug Fixes:
  • temporary file: use operating system temporary directory instead of hardcoding /tmp

New in Git Town 4.1.1 (Jun 8, 2017)

  • Bug Fixes:
  • temporary file - make parent directories if needed (#955 comment)

New in Git Town 4.1.0 (Jun 2, 2017)

  • New Features:
  • git new-pull-request, git repo: support more commands to open browsers (cygstart, x-www-browser, firefox, opera, mozilla, netscape)
  • Add longer descriptions for commands which appear when running git town help <command> or git town <command> --help
  • Changes:
  • make hack-push-flag false by default (previously was true)
  • (#929)
  • Bug Fixes:
  • replace all non-alpha numeric characters in temporary filename (#925)
  • fix spacing in parent branch prompts
  • enforce a minimum Git version of 2.7.0

New in Git Town 4.0.1 (May 23, 2017)

  • Bug Fixes:
  • fix infinite loop when prompting for parent branch and there are perennial branches configured
  • enforce a minimum Git version of 2.6.0
  • fix ship when the supplied branch is equal to the current branch and there are open changes
  • allow alias to be run in a non-git directory

New in Git Town 4.0.0 (May 23, 2017)

  • Git Town is now a single, stand-alone binary
  • first-class Windows support