Eric Sunshine 9611ef554d gitk: fix MacOS 10.14 "Mojave" crash on launch
On MacOS, a "wish" application started from the terminal opens in the
background, thus doesn't match user expectation that a newly-launched
application ought to be placed in the foreground. To address this
shortcoming, both gitk and git-gui use Apple Events to send a message to
"System Events" instructing it to foreground the "wish" application by
PID.

Unfortunately, MacOS 10.14 tightens restrictions on Apple Events,
requiring explicit granting of permission to control applications in
this fashion, and apparently such granting for "Automation" is not
allowed at all[1]. As a consequence gitk crashes outright at launch time
with a "Not authorized to send Apple events to System Events" error,
thus is entirely unusable on "Mojave".

In contrast, git-gui does not crash since it deliberately[2] catches and
ignores Apple Events errors. This does mean that git-gui will not
automatically become the foreground application on "Mojave", which is a
minor inconvenience but far better than crashing outright as gitk does.

Update gitk to catch and ignore Apple Events errors, mirroring git-gui's
behavior, to avoid this crash.

(Finding and implementing an alternate approach to foregrounding the
"wish" application on "Mojave" may be desirable but is outside the scope
of this crash fix.)

[1]: https://lore.kernel.org/git/D295145E-7596-4409-9681-D8ADBB9EBB0C@me.com/
[2]: https://lore.kernel.org/git/CABNJ2G+h3zh+=wLA0KHjUn8TsfhqUK1Kn-1_=6hnXVRJUPhuuA@mail.gmail.com/

Reported-by: Evgeny Cherpak <cherpake@me.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
2025-09-22 18:03:04 +02:00
2013-01-30 21:12:16 +11:00

Gitk - The Git Repository Browser

Gitk is a graphical Git repository browser. It displays the commit history of a Git repository as a graph, showing the relationships between commits, branches, and tags.

Usage

To view the history of the current repository:

gitk

To view the history of specific files or directories:

gitk path/to/file
gitk path/to/directory

To view a specific branch or range of commits:

gitk branch-name
gitk v1.0..v2.0

For more usage examples and options, see the gitk manual.

Building

Gitk is a Tcl/Tk application. It requires Tcl/Tk to be installed on your system.

Running directly

Gitk can be run from the source directory without installation:

./gitk

This allows for quick testing of changes.

Installation

To install system-wide, you can use either make or meson:

# Install to default location ($HOME/bin)
make install

# Install to system-wide location
sudo make install prefix=/usr/local

# Install to custom location
make install prefix=/opt/gitk

# Using Meson
meson setup builddir
meson compile -C builddir
meson install -C builddir

Both build systems will handle setting the correct Tcl/Tk interpreter path and installing translation files.

Contributing

Contributions are welcome! The preferred method for submitting patches is via email to the Git mailing list, as this allows for more thorough review and broader community feedback. However, GitHub pull requests are also accepted.

All commits must be signed off (use git commit --signoff) and should have commit messages prefixed with gitk:.

Email Patches

Send patches to git@vger.kernel.org and CC j6t@kdbg.org. See the Git project's patch submission guidelines for detailed instructions on creating and sending patches.

License

Gitk is distributed under the GNU General Public License, either version 2, or (at your option) any later version.

Description
No description provided
Readme 587 MiB
Languages
C 50.5%
Shell 38.7%
Perl 4.5%
Tcl 3.2%
Python 0.8%
Other 2.1%