Skip to content
  • Florian 
  • 6 min read

Kaleidoscope + Tower: the perfect Git setup

Developers make up the largest segment of Kaleidoscope customers. Many of you use the Git version control system to manage your source code, regardless of the programming language you may be using.

The Kaleidoscope team also uses Git, and today we want to tell you about an app that most of us use on a daily basis.

Tower: the easy, powerful, productive Git client

While there are quite a few good apps that work with Git, we keep coming back to Tower. There’s just a lot to like. It’s a proper native app that always feels right on macOS, something we highly value. Tower includes all the features you would expect when working with Git and more, yet the app doesn’t feel complicated or bloated with features. Everything is well organized and its basic features are discoverable. Our list of reasons to use Tower doesn’t end with the app itself. The Tower support team is outstanding, and the app has a fair business model, which ensures that the company can do a good job maintaining and evolving the product for us, the users.

You can see a rundown of features of Tower by visiting the excellent features pages on the Tower website. While you are there, don’t miss out on many helpful blog posts, including a recent one on Diff Tools, featuring Kaleidoscope.

If you don’t own Tower already, a free 30 day demo is available directly from their website. Download it right now and try out the integration features described below.

Tips for using Tower and Kaleidoscope together

There’s an obvious synergy between Tower and Kaleidoscope: Tower is a great front end to Git’s change management and Kaleidoscope is a tool for dealing with changes. Here are a few scenarios, beyond comparing two files, that may not be obvious and can help you optimize your workflow. All examples below assume you have set Kaleidoscope as the Diff Tool in Tower Preferences > Git Config.

Set Tower to use Kaleidoscope for diffing and merging.

Comparing two arbitrary commits

Sometimes you aren’t interested in the changes between two consecutive commits. Instead, you want to see what has changed between two specific commits, for example. Just select those two commits from the History of a branch, by Command(⌘)-clicking them. This will give you a Compare button on the right. Clicking it will open a changeset in Kaleidoscope, giving you a an overview of all changes between those two commits. All Kaleidoscope’s advanced features, such as filtering and search, are at your disposal.

Compare all changes that have been made to the canary branch of the next.js repository on July 25, 2022. Select two commits from the list (via ⌘-click), then click Compare to send them to Kaleidoscope.

Inspecting a Pull Request

When selecting a pull request from the list, you’ll get a Difftool button upon hovering over the right area. Alternatively, choose Repository > Open Diff Tool (or use the shortcut ⇧⌘D). Kaleidoscope will help you understand exactly what will change when accepting and merging the pull request.

Inspect a pull request, this time from a web framework called fresh on GitHub. In Pull Requests, choose one from the list, then click the Difftool button to see all changes that are part of that pull request in Kaleidoscope.

Comparing Branches and Tags

Sometimes you want to see exactly which files—and which contents in those files—have changed between two releases or in a feature branch. This is very easy with Tower. Select two branches or tags from the sidebar by ⌘-clicking two entries. Bring up the contextual menu and select Compare <entry> with <entry2>…. This will open a changeset window in Kaleidoscope, showing you all the changes between those two entries.

View all changes between the 1.0.0 and the 1.2.0 release, once again from the next.js repository on GitHub. In Tags, select the two tags by ⌘-clicking them. Then bring up the context menu and choose Compare “1.0.0” with “1.2.0”… Kaleidoscope will show all changes made to any file.

Comparing the working copy

Here’s one of our favorite features, new since Tower version 8.2. You can open Kaleidoscope with the current working copy status and compare all changes of the current working copy with the last commit. By selecting Repository > Open Diff Tool (or using the shortcut ⇧⌘D), you get a new Kaleidoscope window showing all current changes compared to the last commit, staged or not. This allows you to quickly scan the changes in the working copy, and decide whether to commit these changes or revert blocks that should not be in the next commit.

A simple press of ⌘D (or Working Copy > Open Diff Tool) in your Working Copy shows all uncommitted changes.

Tower + Kaleidoscope = Focus

So far we have shown how to send content from Tower to Kaleidoscope. But what is the specific benefit of Kaleidoscope in the context of Git changesets? Apart from the more elaborate diffing options and the ability to resolve merge conflicts right inside Kaleidoscope, consider the sidebar in the screenshot below. Kaleidoscope focuses on all changes to all files. It offers a great overview, including some statistics. And it provides powerful filtering options to help you quickly focus on those changes you care about at that moment.

Enhanced changeset filters available since Kaleidoscope 3.6. You can show only a certain file type, or show multiple file types by combining filters. In this example, only changed files with extension .m that have the string KAL in their file name will be shown.

Our favorite Tower Features

In part two of this series we will showcase a few features of Tower that we particularly love and rely on for our daily work. Is there a use case you rely on that has not been mentioned here? Please share it with us!