Add a file to be committed: root@taz[sid]:/tmp/tg-bug> git add 1 root@taz[sid]:/tmp/tg-bug› git st # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # new file: 1 # Commit works as expected: root@taz[sid]:/tmp/tg-bug› git commit -a -m . [master 8978e64] . 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 1 Now read tg help: root@taz[sid]:/tmp/tg-bug> tg help TopGit v0.8 - A different patch queue manager Usage: tg [-r REMOTE] (create|delete|depend|export|import|info|mail|patch|push|remote|summary|update|help) ... tg has added it's own stuff to .git/hooks/pre-commit whilst running tg help. Let's purge topgit to see it something breaks and add another file ... root@taz[sid]:/tmp/tg-bug> dpkg -P topgit ... root@taz[sid]:/tmp/tg-bug> echo 2 > 2 root@taz[sid]:/tmp/tg-bug> git st # On branch master # Untracked files: # (use "git add ..." to include in what will be committed) # # 2 nothing added to commit but untracked files present (use "git add" to track) ... and try to commit: root@taz[sid]:/tmp/tg-bug> git commit -a -m . .git/hooks/pre-commit: 2: tg: not found exec: 2: /pre-commit: not found zsh: exit 1 git commit -a -m . So tg breaks unrelated tools by adding a shell snippet without proper checking.