- 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
- when fetching the upstream repository, only fetch the main branch
- 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
- now catches when there is an unfinished state from a git town command that hit
conflicts. If you try to run another git town command, you will be prompted 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 in order to set your default value. Any locally configured value will override.- add
--debug
flag in order to see all the git commands runs under the hood - speed improvement thanks to various optimizations to greatly reduce 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- Previously: 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 commands that would be run 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 (previously was true) (#929)
- 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
- 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
- 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 multiple 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 for whether or not to push (#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, the main branch is synced with its upstream counterpart (#685)
- removed
git extract
- update internal storage of perennial branches
- if you have configured multiple perennial branches, you will need to reset
your configuration
git town config --reset
git town config --setup
or you will be prompted the next time you run a Git Town command
- if you have configured multiple perennial branches, 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: only 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 sync --all
: fix parent branch promptgit ship
: comment out default commit message (#382)
git ship
: add ability to ship remote only branch (#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 easily 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: completely removes a feature branch (#87, edd7d8)
- git sync: pushes tags to the remote when running on the main branch (#68, 71b607)
- non-feature branches: cannot be 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)
- only makes one fetch 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 completely 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
- only pulls the main branch 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
- can be installed 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