Integration
This page describes how to integrate Git Town into other applications.
GitHub Actions
The Git Town GitHub action appends a visual breadcrumb of the currently reviewed branch and its location in the branch stack to new PRs.
Shell autocompletion
To have your shell auto-complete Git Town commands, set up shell autocompletion
Shell prompt
You can display a reminder for running git town continue
to finish a pending
Git Town command in your shell prompt. Here is what this could look like:
Bash
To add the example status indicator to your shell prompt in Bash, add this to
your .bashrc
file:
function git_town_status {
local pending_gittown_command=$(git town status --pending)
if [ -n "$pending_gittown_command" ]; then
echo -e " \033[30;43m $pending_gittown_command \033[0m "
fi
}
PS1='$(git_town_status)> '
Zsh
To add the example status indicator to your shell prompt in Zsh, add this to
your ~/.zshrc
file:
git_town_status() {
local git_status
git_status=$(git town status --pending)
if [[ -n "$git_status" ]]; then
echo "%K{yellow}%F{black} $git_status %f%k "
fi
}
setopt PROMPT_SUBST
PROMPT='$(git_town_status)> '
Fish
To add the example status indicator to your shell prompt in Fish, edit your
~/.config/fish/config.fish
file and overwrite the
fish_prompt
function:
function fish_prompt
set -f pending_gittown_command (git-town status --pending)
if [ -n "$pending_gittown_command" ]
set -f yellow_pending_gittown_command (set_color -b yellow)(set_color black)(echo " $pending_gittown_command ")(set_color normal)' '
else
set -f yellow_pending_gittown_command ''
end
printf '%s> ' $yellow_pending_gittown_command
end
Lazygit
Example lazygit configuration file to integrate Git Town:
customCommands:
- key: "Y"
context: "global"
description: "Git-Town sYnc"
command: "git-town sync --all"
stream: true
loadingText: "Syncing"
- key: "U"
context: "global"
description: "Git-Town Undo (undo the last git-town command)"
command: "git-town undo"
prompts:
- type: "confirm"
title: "Undo Last Command"
body: "Are you sure you want to Undo the last git-town command?"
stream: true
loadingText: "Undoing Git-Town Command"
- key: "!"
context: "global"
description: "Git-Town Repo (opens the repo link)"
command: "git-town repo"
stream: true
loadingText: "Opening Repo Link"
- key: "a"
context: "localBranches"
description: "Git-Town Append"
prompts:
- type: "input"
title: "Enter name of new child branch. Branches off of '{{.CheckedOutBranch.Name}}'"
key: "BranchName"
command: "git-town append {{.Form.BranchName}}"
stream: true
loadingText: "Appending"
- key: "h"
context: "localBranches"
description: "Git-Town Hack (creates a new branch)"
prompts:
- type: "input"
title: "Enter name of new branch. Branches off of 'Main'"
key: "BranchName"
command: "git-town hack {{.Form.BranchName}}"
stream: true
loadingText: "Hacking"
- key: "K"
context: "localBranches"
description: "Git-Town Delete (deletes the current feature branch and sYnc)"
command: "git-town delete"
prompts:
- type: "confirm"
title: "Delete current feature branch"
body: "Are you sure you want to delete the current feature branch?"
stream: true
loadingText: "Deleting Feature Branch"
- key: "p"
context: "localBranches"
description: "Git-Town Propose (creates a pull request)"
command: "git-town propose"
stream: true
loadingText: "Creating pull request"
- key: "P"
context: "localBranches"
description: "Git-Town Prepend (creates a branch between the curent branch and its parent)"
prompts:
- type: "input"
title: "Enter name of the for child branch between '{{.CheckedOutBranch.Name}}' and its parent"
key: "BranchName"
command: "git-town prepend {{.Form.BranchName}}"
stream: true
loadingText: "Prepending"
- key: "S"
context: "localBranches"
description: "Git-Town Skip (skip branch with merge conflicts when syncing)"
command: "git-town skip"
stream: true
loadingText: "Skiping"
- key: "G"
context: "files"
description: "Git-Town GO aka:continue (continue after resolving merge conflicts)"
command: "git-town continue"
stream: true
loadingText: "Continuing"