Package Details: gitahead 2.6.3-5

Git Clone URL: (read-only, click to copy)
Package Base: gitahead
Description: Understand your Git history!
Upstream URL:
Keywords: git git-gui
Licenses: MIT
Submitter: KillWolfVlad
Maintainer: alerque
Last Packager: alerque
Votes: 33
Popularity: 0.29
First Submitted: 2017-09-18 16:45 (UTC)
Last Updated: 2021-11-17 22:14 (UTC)

Pinned Comments

alerque commented on 2022-05-07 15:33 (UTC)

I highly recommend anyone using this package to switch to the gittyup fork.

Latest Comments

alerque commented on 2022-05-07 15:33 (UTC)

I highly recommend anyone using this package to switch to the gittyup fork.

rmartin commented on 2021-11-23 17:33 (UTC)

There is on-going development with a fork rebranded "Gittyup"

Bink commented on 2021-11-17 02:36 (UTC)

Perhaps old news for some, but as of 27 Sep 2021, GitAhead is officially no longer under active development :(

See commit:

patlefort commented on 2021-11-17 01:12 (UTC)

Does not build, the PKGBUILD contain some mistakes. Here's a patch to fix it:

diff --git a/PKGBUILD b/PKGBUILD
index fc654d0..5d205b8 100644
@@ -34,21 +34,20 @@ prepare() {

 build() {
-       cd "$pkgname"
        cmake \
                -G Ninja \
                -DCMAKE_BUILD_TYPE=Release \
                -DCMAKE_PREFIX_PATH=/usr/lib \
-               -C build
-               gitahead
-       ninja -C build
+               -B build \
+               -S "$pkgname"
+       cmake --build build

 package() {
        cd "$pkgname"
        install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/"
-       install -Dm0644 -t "$pkgdir/usr/share/applications/" "$pkgname.desktop"
-       ninja -C build package
+       install -Dm0644 -t "$pkgdir/usr/share/applications/" "$srcdir/$pkgname.desktop"
+       cmake --build "$srcdir/build" --target package
        mkdir -p "$pkgdir/usr/"{share,bin}
        cp -r "$srcdir/build/_CPack_Packages/Linux/STGZ/GitAhead-$pkgver" "$pkgdir/usr/share/gitahead"
        rm -rf "$pkgdir/usr/share/gitahead/"*.so.*

It would also be better to follow the guidelines for submodules, but somehow one of the submodule point to a commit that's not in the repository ( and fetching that submodule fails.

loathingkernel commented on 2021-11-02 11:13 (UTC) (edited on 2021-11-02 11:20 (UTC) by loathingkernel)

It is not a -git package but pinning specific working commits ahead of the most recent tag is allowed and encouraged if required (as it is, this package doesn't build at all). The -git suffix indicates that the PKGBUILD is going to build the most recent version at the time it is being built, not that it builds a version later than the most recent tag.

timschumi commented on 2021-11-02 00:31 (UTC)

This is not a -git package, so it should only operate on tagged releases, with minimal cherry-picks if anything.

That said, I don't use gitahead anymore, so I'll leave that decision to whomever decides to pick up maintainership of the package.

loathingkernel commented on 2021-11-01 22:11 (UTC)

Currently build is broken because one of the git modules can't find the ref it points to. In contrast HEAD from git works fine, so you might want to pin the version to that.

Also I took the liberty of cleaning up the PKGBUILD, here is the patch.

diff --git a/PKGBUILD b/PKGBUILD
index 2f52e24..1cc2983 100644
@@ -5,60 +5,71 @@
 # Contributor: Angelo Theodorou <>

 pkgdesc='Understand your Git history!'
 depends=('desktop-file-utils' 'qt5-base' 'git')
 makedepends=('cmake' 'ninja' 'git' 'qt5-tools' 'qt5-translations')
-  "git+${pkgver}"
+  "git+$_commit"
+  "git+"
+  "git+"
+  "git+"
+  "git+"
+  "git+"
+  ""
-  '254b4e970a942c6ac94df177e54a6169fe7e5f5c5d0d92b6f0c0f03b7b7b2fb0'
+  'SKIP'
+  'SKIP'
+  'SKIP'
+  'SKIP'
+  'SKIP'
+  'fe44a8de4f913add030c8c76fc312f90e88badabb2a4b9b8e6f8a5dc4415d9ee'
+  'd327c209bed0ee3afece3121d781f74a09be195bb33654353ed27f248a914841'

-prepare() {
-  cd "$srcdir/gitahead"
-  patch --forward --strip=1 --input="../gitahead.patch"
+pkgver() {
+  cd $pkgname
+  printf "%s" "$(git describe --long --tags | sed 's/\([^-]*-\)g/r\1/;s/-/./g;s/v//g')"

-  git submodule update --init --recursive
+prepare() {
+  cd $pkgname
+  for submodule in {libgit2,libssh2,git,cmark,hunspell}; do
+    git submodule init dep/"$submodule"/"$submodule"
+    git config submodule.dep/"$submodule"/"$submodule".url "$srcdir"/"$submodule"
+    git submodule update dep/"$submodule"/"$submodule"
+  done
+  patch --forward --strip=1 --input="${srcdir}/gitahead.patch"

 build() {
-  if [ ! -d "$srcdir/gitahead-build" ]; then
-    mkdir "$srcdir/gitahead-build"
-  fi
-  cd "$srcdir/gitahead-build"
-  cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/lib ../gitahead
-  ninja
+  cmake -S $pkgname -B build -G Ninja \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_PREFIX=/opt/$pkgname
+  ninja -C build

 package() {
-  cd "$srcdir/gitahead-build"
-  ninja package
-  mkdir -p "${pkgdir}/usr/"{share,bin}
-  cp -r "${srcdir}/gitahead-build/_CPack_Packages/Linux/STGZ/GitAhead-${pkgver}" "${pkgdir}/usr/share/gitahead"
-  rm -rf "${pkgdir}/usr/share/gitahead/"*.so.*
-  ln -s "/usr/share/gitahead/GitAhead" "${pkgdir}/usr/bin/gitahead"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_16x16.png" "${pkgdir}/usr/share/icons/hicolor/16x16/apps/gitahead.png"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_32x32.png" "${pkgdir}/usr/share/icons/hicolor/32x32/apps/gitahead.png"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_64x64.png" "${pkgdir}/usr/share/icons/hicolor/64x64/apps/gitahead.png"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_128x128.png" "${pkgdir}/usr/share/icons/hicolor/128x128/apps/gitahead.png"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_256x256.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/gitahead.png"
-  install -D -m644 "${pkgdir}/usr/share/gitahead/Resources/GitAhead.iconset/icon_512x512.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gitahead.png"
-  install -D -m644 ${srcdir}/gitahead/ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-  install -D -m644 "${srcdir}/gitahead.desktop" "${pkgdir}/usr/share/applications/gitahead.desktop"
+  DESTDIR="$pkgdir" ninja -C build install
+  rm -rf "$pkgdir"/opt/$pkgname/{bin,include,lib,share}
+  rm -rf "$pkgdir"/opt/$pkgname/*.so.5
+  install -D -m755 "$srcdir"/$ "$pkgdir"/usr/bin/$pkgname
+  for size in 16x16{,@2x} 32x32{,@2x} 64x64{,@2x} 128x128{,@2x} 256x256{,@2x} 512x512{,@2x}; do
+    install -D -m644 "$pkgdir"/opt/$pkgname/Resources/GitAhead.iconset/icon_"$size".png \
+      "$pkgdir"/usr/share/icons/hicolor/"$size"/apps/$pkgname.png
+  done
+  install -D -m644 "$srcdir"/$pkgname/ "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+  install -D -m644 "$srcdir"/$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
diff --git a/gitahead.desktop b/gitahead.desktop
index e39ce73..d267919 100644
--- a/gitahead.desktop
+++ b/gitahead.desktop
@@ -1,10 +1,10 @@
 [Desktop Entry]
 Comment=Understand your Git history!
+Exec=gitahead /dev/null
\ No newline at end of file
diff --git a/ b/
new file mode 100644
index 0000000..fce9405
--- /dev/null
+++ b/
@@ -0,0 +1,3 @@
+/opt/gitahead/GitAhead "$@"

timschumi commented on 2020-10-02 08:47 (UTC)

@hacker1024 I'm not sure. We had to make some fixes to load theming at all, but I don't think its intended to follow the system theme. However, you might get a better answer when asking on the GitHub repository directly.

hacker1024 commented on 2020-10-02 07:27 (UTC)

Is there any way to use the system QT theme with this?

Canseco commented on 2020-09-15 10:17 (UTC)

The fix-qt-theme patch is not needed anymore since QT 5.15.1. I had to remove it from PKGBUILD or else everything was white, even fonts would be unreadable.

psychedelus commented on 2020-06-18 20:20 (UTC)

@timschumi the theme is working perfectly again. Thanks for the quick turnaround, really appreciate it.

timschumi commented on 2020-06-18 18:57 (UTC)

@psychedelus Should be fixed now.

psychedelus commented on 2020-06-18 12:36 (UTC) (edited on 2020-06-18 12:37 (UTC) by psychedelus)

Since the latest update to version 2.6.2 the interface doesn't display correctly. I have the dark theme selected and most of the app is now a light grey and the sidebar is completely white. I've read in a forum that this can be related to a change in the QT theme settings structure. Could this be looked into please, the interface is so ugly at the moment.

timschumi commented on 2019-09-19 13:18 (UTC)

It seems like the system libssh2 is somehow incompatible with gitahead, so it broke when upstream merged a commit that tried to use system libssh2 if possible.

I disabled that and pushed a new package revision. SSH fetching now works for me again, although not quite as fast as in 2.5.8 or earlier, for whatever reason.

Flo356 commented on 2019-09-19 06:51 (UTC)

@timschumi Thanks for your note. Yes I can confirm the error symptom (long wait before fetch and before it fails). I have an old packaged version of the 2.5.8 version installed on a manjaro system which seems to work correctly.

timschumi commented on 2019-09-17 18:03 (UTC) (edited on 2019-09-17 18:05 (UTC) by timschumi)

@Flo356 I'm getting the same here, however with a really long wait before the fetch process starts and another long wait before it finally fails. Are you getting the same? (EDIT: Also, the program pauses/hangs exceptionally long when closing.)

Unfortunately, the issue isn't resolved by including openssl and libQt in the package again, so it has to be something else. Until I can figure this out, you may want to switch to the gitahead-bin package, which uses the official prebuilts.

Also, did those errors appear on earlier versions of gitahead or have they just popped up recently?

Flo356 commented on 2019-09-06 12:48 (UTC)

I faced the following problem with the current version 2.5.10-1 when I try to fetch:

Unable to fetch from 'origin' - Failed to authenticate SSH session: Unable to send userauth-publickey request

timschumi commented on 2019-05-27 14:31 (UTC) (edited on 2019-05-27 14:32 (UTC) by timschumi)


Adding git to the dependencies is usually not done, since you have to retrieve the PKGBUILD and the other build files through git anyways, i.e. it's already required to get the dependency lists in the first place. I can add it as a dependency, but the cleaner solution (which I'd honestly prefer) would be to preinstall git (or rather, the full base-devel group) in your environment, since pretty much every other package requires that as well.

BluePeril commented on 2019-05-27 14:09 (UTC)

Could you please add "git" as makedependency? Otherwise gitahead won't build in a clean build environment.

timschumi commented on 2019-04-16 18:28 (UTC)

@fenuks The LICENSE file in this repository is not for gitahead, but rather for the PKGBUILD itself. Don't ask me why.

fenuks commented on 2019-04-16 16:52 (UTC)

@timschumi Correct me if I'm wrong, but LICENSE file included in this package repository is not used (and in fact, incorrect, since gitahead is MIT-licensed, whereas bundled license file is for GPL), therefore could be removed?

timschumi commented on 2019-04-07 12:36 (UTC) (edited on 2019-04-07 12:44 (UTC) by timschumi)

@shady.squirrel While it's nice to hear that the issue is resolved, the circumstances are still a bit weird. This package is always building from the same tag (unless the version is bumped), so it should still be the same package no matter when you built it (or at least it shouldn't contain any upstream fixes). Anyways, I'll upload the remaining patch and hopefully everything is resolved.

shady.squirrel commented on 2019-04-07 11:40 (UTC)

@timschumi it was an error or their side, I've rebuilt it again later yesterday (haven't seen your comment yet) and it worked okay (minus that 'Plugin documentation' error).

I've rebuilt with that new patch a hour ago, it looks fine so far, even Plugin documentation :)

timschumi commented on 2019-04-06 16:03 (UTC)

@shady.squirrel I made some more changes to the PKGBUILD, do you mind trying a build that has this patch applied?

Main suspect seems to be the binary that was moved to /usr/bin/gitahead, which seems to make it upset (for example, the "Help > Plugin Documentation" menu doesn't work properly).

shady.squirrel commented on 2019-04-06 14:26 (UTC)

@timschumi no, just regular build, either from yay or manually via makepkg, same issue. Binary version works fine, so I'm starting to think it's an issue with their repo.

timschumi commented on 2019-04-06 14:20 (UTC)

@shady.squirrel No such issues here. Are you doing anything special to trigger this?

shady.squirrel commented on 2019-04-05 11:36 (UTC) (edited on 2019-04-05 11:37 (UTC) by shady.squirrel)

Latest build (2.5.5-2) requires Lua Lexer module which isn't found. App is crashing few seconds after starting, rendering it useless.

Crash log:

Lua Error: module 'lexer' not found:
        no field package.preload['lexer']
        no file '~/.cache/yay/gitahead/src/gitahead/dep/scintillua/scintillua-3.6.0/lexers/lexer.lua'
        no file '/usr/local/lib/lua/5.3/'
        no file '/usr/local/lib/lua/5.3/'
        no file './'.

timschumi commented on 2019-03-31 10:05 (UTC)

@encelo I uploaded your proposed changes to the repository. Thanks for the work you did on this!

encelo commented on 2019-03-30 15:54 (UTC) (edited on 2019-03-30 15:58 (UTC) by encelo)

I have made some improvements to the package, such as:

  • Update package URL, description, license and dependencies
  • Link the binary to system-wide Qt5 and OpenSSL
  • Avoid compiling and installing OpenSSL
  • Install license and icons from sources
  • Delete unused files

Just delete all the files and have only those three:


# Maintainer:  Tim Schumacher <>
# Contributor: KillWolfVlad <>
# Contributor: WaveHack <>
# Contributor: Whovian9369 <>
# Contributor: Angelo Theodorou <>

pkgdesc='Graphical Git client that helps you understand and manage your source history'
depends=('desktop-file-utils' 'qt5-base')
makedepends=('cmake' 'ninja')

prepare() {
  cd "$srcdir/gitahead"
  patch --forward --strip=1 --input="../gitahead.patch"

  git submodule update --init --recursive

build() {
  if [ ! -d "$srcdir/gitahead-build" ]; then
    mkdir "$srcdir/gitahead-build"
  cd "$srcdir/gitahead-build"
  cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/lib -DCMAKE_INSTALL_PREFIX="${pkgdir}/usr" ../gitahead

package() {
  cd "$srcdir/gitahead-build"

  ninja install

  rm -f "${pkgdir}"/usr/*.so.*
  rm -f "${pkgdir}/usr/bin/cmark"
  mv "${pkgdir}/usr/GitAhead" "${pkgdir}/usr/bin/gitahead"

  rm -rf "${pkgdir}/usr/include"
  rm -rf "${pkgdir}"/usr/share/{doc,man}
  rm -rf "${pkgdir}"/usr/{lib,lib64}

  mkdir -p "${pkgdir}/usr/lib/${pkgname}"
  mv "${pkgdir}/usr/Plugins" "${pkgdir}/usr/lib/${pkgname}/plugins"

  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_16x16.png" "${pkgdir}/usr/share/icons/hicolor/16x16/apps/gitahead.png"
  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_32x32.png" "${pkgdir}/usr/share/icons/hicolor/32x32/apps/gitahead.png"
  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_64x64.png" "${pkgdir}/usr/share/icons/hicolor/64x64/apps/gitahead.png"
  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_128x128.png" "${pkgdir}/usr/share/icons/hicolor/128x128/apps/gitahead.png"
  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_256x256.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/gitahead.png"
  install -D -m644 "${pkgdir}/usr/Resources/GitAhead.iconset/icon_512x512.png" "${pkgdir}/usr/share/icons/hicolor/512x512/apps/gitahead.png"
  rm -rf "${pkgdir}/usr/Resources/GitAhead.iconset"

  mkdir -p "${pkgdir}/usr/share/${pkgname}"
  mv "${pkgdir}/usr/Resources" "${pkgdir}/usr/share/${pkgname}/resources"

  rm -f "${pkgdir}"/usr/{git-credential-libsecret,indexer,qt.conf,relauncher}

  install -D -m644 ../gitahead/ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
  install -D -m644 "${srcdir}/gitahead.desktop" "${pkgdir}/usr/share/applications/gitahead.desktop"

diff -urN gitahead.orig/dep/CMakeLists.txt gitahead/dep/CMakeLists.txt
--- gitahead.orig/dep/CMakeLists.txt    2019-03-28 16:25:09.753615593 +0100
+++ gitahead/dep/CMakeLists.txt 2019-03-28 16:19:28.866933275 +0100
@@ -1,4 +1,3 @@

diff -urN gitahead.orig/pack/CMakeLists.txt gitahead/pack/CMakeLists.txt
--- gitahead.orig/pack/CMakeLists.txt   2019-03-28 16:06:48.996898436 +0100
+++ gitahead/pack/CMakeLists.txt    2019-03-28 16:23:57.830278953 +0100
@@ -147,7 +147,7 @@

 # Install SSL libraries.
       set(SSL_LIB_SUFFIX "-1_1-x64.dll")

[Desktop Entry]
Comment=Graphical Git client

noraj commented on 2019-02-24 17:59 (UTC)

timschumi you made gitahead using binary exactly as gitahead-bin. gitahead should be built from source.

timschumi commented on 2018-12-18 01:45 (UTC)

Updated the package to 2.5.0. As soon as it's not 3AM and I'm not in school, I'll rename this package to gitahead-bin and start working on a PKGBUILD for building gitahead from source.

FlyingJay1 commented on 2018-12-05 00:03 (UTC)

This is a bogus description: "The most powerful git gui"

Says who? Sounds like an advertisement.

It should just say "Git GUI".