This release fixes a few bugs that now get correctly surfaced thanks to stronger type checking introduced in v14.2.1.
Massive thanks to @breml, @bryanlarsen, @edwarbudiman, @FirelightFlagboy, @kelbyers, @kevgo for contributing code, ideas, and feedback to 13 shipped pull requests and 9 resolved issues!
- follows include directives in the Git configuration (#3614)
- fixes a panic during git town propose (#3539)
This release brings substantial stability improvements due to much stronger type checking and removing unnecessary optionality and mutability from the codebase.
Big thanks to @breml, @bryanlarsen, @edwarbudiman, @FirelightFlagboy, @kevgo, @shiv19, @SophiaSaiada for contributing code, ideas, and feedback to 191 shipped pull requests and 9 resolved issues!
- fixes a panic when additional Git remotes are present (#3537)
- fixes a panic when encountering invalid lineage entries (#3453)
- fixes a panic if the previous Git branch is checked out in another worktree (#3297)
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).
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!
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.
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 usedinit.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 themerge.ff
option set tofalse
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).
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!
Git Town 14.0 improves the developer experience around uncommitted and stacked 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).
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!
- Fixes a serious bug where users who have branch.sort set might get tracking branches removed (#3241).
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!
- Allows syncing branches with merge conflicts in linked worktrees (#3230).
- Fixes the Bash-based installer (#3234).
Many thanks to @alexus37, @breml, @bryanlarsen, @kevgo, @tranhl, @vectro, @wederbrand for contributing feedback, ideas, and solutions to 8 shipped PRs and 6 resolved issues!
Git Town 13.0 adds better support for syncing feature branches after rebasing your commits and bumps the required Git version.
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.
- 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 ofgit-town
on the CLI (#3208).
- 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!
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 options to fine-tune how Git Town syncs branches:
git contribute
,git observe
, andgit 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 likerelease-1
,release-2
, etc (#2659).
- git town skip now works correctly in complex situations (#2978).
- Git Town now deletes branches more reliably (#3097).
Many thanks to @100rab-S, @harrismcc, @kevgo, @ruudk, @tranhl for contributing feedback, ideas, and solutions to 70 shipped PRs and 11 resolved issues!
- All dialogs that show local branches now paginate (#3119).
- removes crashes when using a self-hosted platform instance (#3114)
- improve the CLI output when using a hosting connector (#3115)
Git Town 12 continues the effort to make the Git Town user experience more consistent and intuitive by modernizing Git Town's configuration system.
- 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
- 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 ofgit 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.
- Putting Git Town into offline mode is a top-level command again. Run
git town offline yes
to enable offline mode instead ofgit 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).
- 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 undergit town config
, thealias
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).
- Fix the
--version
command on Windows (#2900).
- 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)
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)
Git Town 11 continues the effort to make the Git Town user experience more consistent and intuitive.
git new-pull-request
is nowgit propose
. Not all platforms that Git Town supports use the name "pull request", so Git Town uses the word "proposal" for pull requests, merge requests, etc from now on. Nine fewer characters to type! (#2691)git abort
is merged intogit undo
. From now on you just rungit undo
after a Git Town command fails or finishes to get back to where you started (#2719).- Many configuration options now have more intuitive names. No action needed on your end, Git Town automatically updates the affected settings on your machine. This means you can't go back to v10 after updating to v11.
git ship
by default no longer syncs the branch to ship. Set thesync-before-ship
flag to restore the old behavior. This allows shipping only when the tests pass (#2735).- Creating proposals on BitBucket uses an updated URL (#2692).
git town config reset
now also deletes the branch lineage. This helps get you out of more configuration snafus (#2733).
- The new
sync-before-ship
config option preventsgit 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).
- allow renaming local-only branches (#2710)
git repo
andgit propose
always open the browser page at the default port, even if theorigin
remote points to a custom port (#2730)
- Fix killing perennial branches (#2679)
- Fix wrong error message when
status.short
is enabled in Git config (#2650)
- Fix crash if commits contain "[" (#2645)
Git Town 10 improves support for shipping branches via the code hosting web UI instead of running git ship
. After merging your branches remotely, run git sync --all
to sync all local branches and remove the ones shipped at the remote. Don't worry, Git Town ensures that branches which contain unshipped changes won't get deleted. git undo
brings deleted branches back.
Git Town 10 has improved performance, robustness, and reliability thanks to a large-scale modernization of the Git Town's architecture. Git Town now runs fewer Git commands under the hood to investigate the state of your Git repository. git undo
now works for all commands thanks to a new undo engine that diffs the before and after state of your Git repo.
Git Town 10 starts a larger effort to remove redundant commands and make Git Town's configuration options more consistent and intuitively named.
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, rungit 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 runninggit push origin :branchname
or via the web UI of your code hosting service (#2368)git hack
no longer has the-p
option. Usegit append
andgit 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 ofgit-town version
(#2603) - v10 renames the
debug
parameter toverbose
because all it does is print more information (#2598) - updated GitLab support, please report regressions
- 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)
- 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)
Git Town should now run a bit faster because it runs fewer Git commands under the hood.
- Fix for missing
UpdateProposalTargetStep
(#2288) - Print statistics when removing aliases (#2325)
- Fix broken version information in release binaries (#2333)
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)
- read the token to use for the GitHub API from environment variables
GITHUB_TOKEN
orGITHUB_AUTH_TOKEN
in addition to the already existing option to store it in the Git configuration (#2217)
Some ergonomics improvements that change existing command names, hence the major version bump. If you use the shorter aliases for Git Town commands, please run git town aliases add
after updating to v8.0.
- rename
new-branch-push-flag
command topush-new-branches
(#1980) - all commands that display/update configuration are now subcommands of the
config
command (#1963, #1976) - all commands that help install Git Town are now subcommands of the
install
command (#1969) - moves the default
git town completion
andgit town completions
commands undergit town install completions
(#1969, #1970) - installation of the shorter command aliases changes from
git town alias true
togit town install aliases add
and... remove
(#1965, #1966, #1968) - renames the
push-verify
configuration option topush-hook
(#1989) - automatically renames old
push-verify
configuration settings to the newpush-hook
(#2209) - rename
git set-parent-branch
togit set-parent
(#2114) - stores the runstate in the platform-specific config directory (
~/.config
) instead of the global temp dir (#2126)
- the new
git town switch
command allows switching branches via a UI that visualizes the branch hierarchy (#2106, #2108) - aliases
git town diff-parent
togit diff-parent
(#2128) - accepts more formats for boolean configuration values like "true", "yes", "on", "t", "1" (#1978, #1979)
- configuration command to set/display the
push-hook
config setting (#1991)
- rebase feature branches against their parent branch using the new sync-strategy option (#1950)
- configure using
git town sync-strategy (merge | rebase)
- configure using
- disable Git's
pre-push
hook using the newpush-verify
option (#1958) - support for GitLab subgroups (#1943)
- support GitLab SaaS repos whose name contains "gitlab" (#1926)
- update Regex for hostname extraction to support more ssh usernames (#1883)
- merge GitLab merge requests when shipping (#1874)
- 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)
- fix author not set properly (1686)
- filenames of assets at GitHub releases are all lowercase now (#1710)
- option for more compatible shell autocompletion without descriptions (#1493)
- print diagnostic information on command failure (#1667)
- add log after command that causes auto abort (#1635)
- 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)
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 is no longer a development dependency.
- 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)
- improved error messages
- add option to disable auto sync upstream
- update docs for code-hosting config
- prune branches now properly updates perennial branch config
- support branch names with special characters
- fix the prompt on Windows CMD terminals
- clear the runstate after undo to prevent running
git town undo
twice - fix Fish shell autocomplete
- fix hosting service naming
git town config
: print perennial branch treesgit town hack
: add-p
option which prompts for the parent branch instead of using the main development branch- when fetching the origin repository, fetch tags that are not attached to pulled commits
- fetch only the main branch when fetching the upstream repository
- strip colors from the output of git commands run internally. This caused errors if you had git configured with
color.ui=always
- automatically remove outdated configuration
git town config
:reset
andsetup
are now subcommands instead of flags--abort
,--continue
,--skip
,--undo
flags removed. Instead there are now top level commandsgit town abort
,git town continue
,git town skip
,git town undo
- Catches when there is an unfinished state from a git town command that hit conflicts. If you try to run another git town command, Git Town will prompt you on how to resolve the unfinished state. The unfinished state can be discarded and there is also a new top level command
git town discard
to delete the state of the last run command.
- skip perennial branch prompt if there are no options
- fix parsing of git config when a value contains a newline
- fixes displayed version number
git town set-parent-branch
: update interface to no longer accept arguments and instead prompt the user for the parent of the current branchgit town perennial-branches
: update the interface to add / remove perennial branches. Rungit town perennial-branch update
to receive the same prompt as initial configuration.- Rename
hack-push-flag
tonew-branch-push-flag
. Please reconfigure if you are not using the default.
git town new-branch-push-flag
: add--global
flag to set your default value. Any locally configured value will override.- add
--verbose
flag to see all the git commands runs under the hood - speed improvement from reducing the number of git commands run under the hood
- Nicer prompts from https://github.com/AlecAivazis/survey
- Parent branch prompt: add option to make the branch a perennial branch
git ship
: fix bug when encountering a merge conflict and using a code hosting driver (#1060)
git new-pull-request / repo
: support for ssh identities changed- Before: ssh identity needed to include "github", "gitlab" or "bitbucket"
- Now: Run
git config git-town.code-hosting-origin-hostname <hostname>
where hostname matches what is in your ssh config file
git new-pull-request / repo
: support for self hosted versions- Run
git config git-town.code-hosting-driver <driver>
where driver is "bitbucket", "github", or "gitlab"
- Run
git sync
: add--dry-run
flag to view the planned commands without running themgit ship
: when merging via the GitHub API, update the default commit message to include the PR title and number
- add missing dependency to vendor folder (required for building on Homebrew)
- Update all commands to support offline mode (lack of an internet connection)
- Display / update offline mode with
git town offline [(true | false)]
- Display / update offline mode with
git ship
- add ability to ship hotfixes to perennial branches
- add ability to merge via GitHub API when applicable. See documentation for more info.
- temporary file: use operating system temporary directory instead of hardcoding
/tmp
- temporary file: make parent directories if needed (#955 comment)
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>
orgit town <command> --help
- make
hack-push-flag
false by default (was true before) (#929)
- replace all non-alpha numeric characters in temporary filename (#925)
- fix spacing in parent branch prompts
- enforce Git version 2.7.0 or higher
- fix infinite loop when prompting for parent branch and there are perennial branches configured
- enforce a Git version 2.6.0 or higher
- fix
ship
when the supplied branch is equal to the current branch and there are open changes - allow running
alias
command in non-git directories
- rewrite in go, Git Town is now a single, stand-alone binary
- first-class Windows support
- This breaks existing aliases. If you have the default aliases setup, reconfigure them with
git town alias true
git new-pull-request
,git repo
:- support
ssh://
urls (thanks to @zhangwei) - add GitLab support (thanks to @dgjnpr)
- support
git hack
: no longer accepts a parent branch (functionality moved togit append
)
git append
: create a new branch as a child of the current branchgit prepend
: create a new branch as a parent of the current branchgit rename-branch
: implicitly uses the current branch if only one branch name provided
- fix incorrectly reported branch loop (#785)
- support SSH identities (#739)
- update stashing strategy to avoid use of
git stash -u
which can delete ignored files (#744) - fix merge conflicts resolution that results in no changes (#753)
git hack
: prompt for parent branch if unknown (#760)- prevent parent branch loops (#751)
- All commands now have a
town-
prefix. Examplegit town-sync
. This is to prevent conflicts withgit-extras
which adds git commands by the same name andhub
which wants you to alias git to it and adds commands by the same name.- Use git aliases to remove the
town-
prefix if you would like. Rungit town alias true
to add aliases for allgit-town
commands (skips commands which would overwrite existing aliases).
- Use git aliases to remove the
git town set-parent-branch <child_branch_name> <parent_branch_name>
: to update a parent branch (#729)
git sync --all
: don't prompt for parent of perennial branches (#727)
git hack
: add configuration to omit pushing new branches (#720)
- configuration: make branch order consistent
git ship
: update uncommitted changes error message (#718)
git prune-branches
: new functionality - delete branches whose tracking branch no longer exists (#702)
git sync
: add configuration option to merge the main branch / perennial branches with their upstream (#671)git hack
,git ship
: support for running in subfolders
- internationalize check for undefined function (#678)
git new-pull-request
: ability to continue after conflicts (#700)
- remove
git sync-fork
git new-pull-request
: support forked repos (#682)git sync
: if there is a remote upstream, syncs the main branch with its upstream counterpart (#685)
- removed
git extract
- update internal storage of perennial branches
- if you have configured more than one perennial branch, you will need to reset your configuration
git town config --reset
git town config --setup
or follow the prompt the next time you run a Git Town command
- if you have configured more than one perennial branch, you will need to reset your configuration
- configuration prompt: allow user to select branch by number, ability to recover from bad input
- parent branch prompt: show description and branch list once per command
- preserve checkout history so that
git checkout -
works as expected alongside Git Town commands (#65) git hack
: pushes the new branch to the remote repository (#664)git new-pull-request
: syncs the branch before creating the pull request (#367)git sync --all
: pushes tags (#464)git town config
: shows branch ancestry (#651)
git town version
: Homebrew installs no longer print date and SHA (#631)
git kill
: can remove branches that exist on the remote and not locally (#380)git ship
: prompt when there is more than one author (#486)
git sync --all
: fix parent branch promptgit ship
: comment out default commit message (#382)
git ship
: add ability to ship remote branches (#593)git new-pull-request
/git repo
: remove empty line output (#602)git kill
: prompt for unknown parent branch (#603)git sync --all
: prompt for unknown parent branch (#604)- support branch names with forward slashes (along with any valid branch name) (#608)
- fix
git ship --undo
(#550) - rename
non-feature-branches
toperennial-branches
(#344)- configuration is automatically updated to support this
- support for nested feature branches (#529)
- add
git rename-branch
(#474) - rename
git pull-request
togit new-pull-request
(#413, #507) - add SHA and date to output of
git town version
for manual installs - show error when trying to continue after a successful command (#364)
- support for working without a remote repository for git extract, git hack, git kill, git ship, and git sync
- implemented by our newest core committer @ricmatsui
- git pr renamed to git pull-request
- set up an alias with
git config --global alias.pr pull-request
- set up an alias with
- git ship
- now accepts all
git commit
options - author with the most commits is automatically set as the author (when not the committer) (#335)
- now accepts all
- git pr/repo
- improved linux compatibility by trying
xdg-open
beforeopen
- improved linux compatibility by trying
- improved error messages when run outside a git repository
- improved setup wizard for initial configuration in a git repository
- added contribution guide
- added tutorial
- Manual installs need to update their
PATH
to point to thesrc
folder within their clone of the repository - git extract:
- git hack: errors if branch exists remotely (#237)
- git kill:
- git pr:
- git repo: view the repository homepage (#140)
- git sync:
- git town: view and change Git Town configuration and improved view help page (#98)
- auto-completion for Fish shell (#177)
- git pr: create a new pull request (#138, 40d22e)
- git ship:
- git sync:
- git extract: errors if branch already exists (#128, 75f498)
- git sync-fork: no longer automatically sets upstream configuration (865030)
- remove needless checkouts for git-ship, git-extract, and git-hack (#150, #155, 8b385a, 35de43)
- linters for shell scripts and ruby tests (#149, 076668, 651c04)
- rake tasks for development (#170, ba74cf)
- git kill: removes a feature branch (#87, edd7d8)
- git sync: pushes tags to the remote when running on the main branch (#68, 71b607)
- non-feature branches: are not shipped and do not merge main when syncing (#45, 31dce1)
- git ship:
- updated output to show each git command and its output, updated error messages (8d8973, 60e1d8, 408e69)
- skips unnecessary pushes (0da896)
- man pages (609e11, 164f06, 27b257)
- git prune-branches (#48, 7a922e)
- Cucumber: optional Fuubar output (7c5402)
- multi-user support for feature branches (#35, ca0882)
- git sync-fork (#22, 1f1f9f)
- stores configuration in the Git configuration instead of a dedicated file (8b8695)
- removes redundant fetches from the central repo per session (#15, 43400a)
- automatically prunes remote branches when fetching updates (86100f)
- always cleans up abort and continue scripts after using one of them (3be4c0)
- simpler readme, dedicated RDD document
- Cucumber feature specs (you need Ruby 2.x) (c9d175)
- much faster testing thanks to fully local test Git repos (#25, c9d175)
- fixes "unary" error messages
- lots of output and documentation improvements
- better terminal output
- Travis CI improvements
- better documentation
- displays the duration of specs
- pulls the main branch only if it has a remote
- --abort options to abort failed Git Town operations
- --continue options to continue some Git Town operations after fixing the underlying issues
- installation through Homebrew
- colored test output
- display summary after tests
- exit with proper status codes
- better documentation
- git hack, git sync, git extract, git ship
- basic test framework
- Travis CI integration
- self-hosting: uses Git Town for Git Town development