GIT Tools: OneFetch, Git Absorb and Github Desktop

Published: Oct 24, 2024 by Isaac Johnson

A few weeks back, I wrote about RipGrep for searching local GIT repositories/workspaces, then followed it up with an intro to Commitizen. This week, following that trend of developer productivity tools, I’d like to explore OneFetch.

I came across the tool from a HowToGeek writeup and it’s been on my list to dive deeper since.

We will also look at git-absorb as well as Github Desktop.

Let’s dig in!

Installation

There are slew of ways to install. Let’s start with the easiest in WSL, apt.

$ sudo add-apt-repository ppa:o2sh/onefetch
[sudo] password for builder:
 PPA to provide Onefetch for Ubuntu.

Upstream: https://github.com/o2sh/onefetch
 More info: https://launchpad.net/~o2sh/+archive/ubuntu/onefetch
Press [ENTER] to continue or Ctrl-c to cancel adding it.

Get:1 https://download.newrelic.com/infrastructure_agent/linux/apt focal InRelease [10.8 kB]
Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [128 kB]
Get:3 https://packages.microsoft.com/repos/azure-cli focal InRelease [3596 B]
Get:4 https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal InRelease [3632 B]
Get:5 https://apt.releases.hashicorp.com focal InRelease [12.9 kB]
Get:6 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [3632 B]
Get:7 https://download.newrelic.com/infrastructure_agent/linux/apt focal/main amd64 Packages [172 kB]
Get:8 https://packages.cloud.google.com/apt cloud-sdk InRelease [1618 B]
Hit:9 http://ppa.launchpad.net/flatpak/stable/ubuntu focal InRelease
Get:10 https://packages.microsoft.com/repos/azure-cli focal/main amd64 Packages [1835 B]
Hit:11 http://archive.ubuntu.com/ubuntu focal InRelease
Get:12 https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal/main amd64 Packages [318 kB]
Get:13 http://ppa.launchpad.net/o2sh/onefetch/ubuntu focal InRelease [18.0 kB]
Err:5 https://apt.releases.hashicorp.com focal InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
Get:14 http://archive.ubuntu.com/ubuntu focal-updates InRelease [128 kB]
Get:15 https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal/main all Packages [2938 B]
Get:16 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages [318 kB]
Err:8 https://packages.cloud.google.com/apt cloud-sdk InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
Get:17 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [67.9 kB]
Get:18 https://packages.microsoft.com/ubuntu/20.04/prod focal/main all Packages [2938 B]
Get:19 https://packages.microsoft.com/ubuntu/20.04/prod focal/main armhf Packages [22.8 kB]
Hit:20 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal InRelease
Get:21 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease [1642 B]
Get:22 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [3272 kB]
Get:23 http://archive.ubuntu.com/ubuntu focal-backports InRelease [128 kB]
Get:24 http://ppa.launchpad.net/o2sh/onefetch/ubuntu focal/main amd64 Packages [468 B]
Err:21 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease
  The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
Get:25 http://ppa.launchpad.net/o2sh/onefetch/ubuntu focal/main Translation-en [248 B]
Get:26 http://security.ubuntu.com/ubuntu focal-security/main Translation-en [481 kB]
Get:27 http://security.ubuntu.com/ubuntu focal-security/main amd64 c-n-f Metadata [14.3 kB]
Get:28 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [3211 kB]
Get:29 http://security.ubuntu.com/ubuntu focal-security/restricted Translation-en [449 kB]
Get:30 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [1013 kB]
Get:31 http://security.ubuntu.com/ubuntu focal-security/universe Translation-en [214 kB]
Get:32 http://security.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [21.4 kB]
Get:33 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [3640 kB]
Get:34 http://archive.ubuntu.com/ubuntu focal-updates/main Translation-en [558 kB]
Get:35 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 c-n-f Metadata [17.8 kB]
Get:36 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [3330 kB]
Get:37 http://archive.ubuntu.com/ubuntu focal-updates/restricted Translation-en [465 kB]
Get:38 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1237 kB]
Get:39 http://archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [297 kB]
Get:40 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 c-n-f Metadata [28.3 kB]
Fetched 19.6 MB in 4s (5516 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://apt.releases.hashicorp.com focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://packages.cloud.google.com/apt cloud-sdk InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease: The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
W: Failed to fetch https://apt.releases.hashicorp.com/dists/focal/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
W: Failed to fetch http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/InRelease  The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
W: Failed to fetch https://packages.cloud.google.com/apt/dists/cloud-sdk/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
W: Some index files failed to download. They have been ignored, or old ones used instead.

Then an apt-update and install

$ sudo apt update && sudo apt install -y onefetch
Hit:1 https://download.newrelic.com/infrastructure_agent/linux/apt focal InRelease
Get:2 https://apt.releases.hashicorp.com focal InRelease [12.9 kB]
Hit:3 https://packages.microsoft.com/repos/azure-cli focal InRelease
Hit:4 https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal InRelease
Hit:5 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease
Hit:6 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:7 http://ppa.launchpad.net/flatpak/stable/ubuntu focal InRelease
Err:2 https://apt.releases.hashicorp.com focal InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
Hit:8 http://security.ubuntu.com/ubuntu focal-security InRelease
Get:9 https://packages.cloud.google.com/apt cloud-sdk InRelease [1618 B]
Hit:10 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:11 http://ppa.launchpad.net/o2sh/onefetch/ubuntu focal InRelease
Hit:12 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:13 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal InRelease
Err:9 https://packages.cloud.google.com/apt cloud-sdk InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
Get:14 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease [1642 B]
Err:14 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease
  The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
Fetched 14.5 kB in 1s (13.0 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
104 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://apt.releases.hashicorp.com focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://packages.cloud.google.com/apt cloud-sdk InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease: The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
W: Failed to fetch https://apt.releases.hashicorp.com/dists/focal/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
W: Failed to fetch http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/InRelease  The following signatures were invalid: EXPKEYSIG 4D64390375060AA4 devel:kubic OBS Project <devel:kubic@build.opensuse.org>
W: Failed to fetch https://packages.cloud.google.com/apt/dists/cloud-sdk/InRelease  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C0BA5CE6DC6315A3
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 onefetch : Depends: libc6 (>= 2.34) but 2.31-0ubuntu9.16 is to be installed
E: Unable to correct problems, you have held broken packages.

I see a bit of an issue with libc6 and my Ubuntu Focal (20.04) installation.

I’ll first try an apt update && apt upgrade followed by sudo apt --fix-broken install.

$ sudo apt --fix-broken install onefetch
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 onefetch : Depends: libc6 (>= 2.34) but 2.31-0ubuntu9.16 is to be installed
E: Unable to correct problems, you have held broken packages.

Hmm.. that is just a blocker - libc6 2.34 is not available to Ubuntu 20.04 (at least via apt).

Brew install

Let’s try Homebrew next

builder@DESKTOP-QADGF36:~/Workspaces/jekyll-blog$ brew install onefetch
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:bd08b92d6725f9216fc3c2458ffd174d5468d43d47dd0fcaeb5109e3008fd40b
########################################################################################################################################## 100.0%
==> Pouring portable-ruby-3.3.5.x86_64_linux.bottle.tar.gz
==> Auto-updated Homebrew!
Updated 4 taps (defenseunicorns/tap, f1bonacc1/tap, homebrew/core and homebrew/cask).
==> New Formulae
afl++                               defenseunicorns/tap/zarf@0.41.0     libdom                              python-gdbm@3.13
aicommit                            defenseunicorns/tap/zarf@0.42.0     libhubbub                           python-tk@3.13
ansible-builder                     distill-cli                         libparserutils                      python@3.13
argtable3                           djlint                              libspelling@0.2                     recc
binsider                            dug                                 lld                                 repopack
blisp                               facad                               m68k-elf-binutils                   roxctl
clickhouse-sql-parser               flang                               m68k-elf-gcc                        rsgain
coordgen                            gptme                               maeparser                           setconf
crossplane                          hawkeye                             minijinja-cli                       sf
defenseunicorns/tap/lula            icu4c@75                            openapi-diff                        sysprof
defenseunicorns/tap/lula@0.9.1      inchi                               oxlint                              termscp
defenseunicorns/tap/maru@0.3.0      jikken                              paperjam                            tex-fmt
defenseunicorns/tap/maru@0.3.1      jxl-oxide                           pipet                               tllist
defenseunicorns/tap/maru@0.4.0      keep-sorted                         polkit                              tmux-sessionizer
defenseunicorns/tap/uds@0.17.0      kubetail                            postgresql@17                       wthrr
defenseunicorns/tap/uds@0.18.0      libcss                              probe-rs-tools                      zsh-system-clipboard

You have 72 outdated formulae installed.

==> Downloading https://ghcr.io/v2/homebrew/core/onefetch/manifests/2.22.0
########################################################################################################################################## 100.0%
==> Fetching dependencies for onefetch: linux-headers@5.15
==> Downloading https://ghcr.io/v2/homebrew/core/linux-headers/5.15/manifests/5.15.168
########################################################################################################################################## 100.0%
==> Fetching linux-headers@5.15
==> Downloading https://ghcr.io/v2/homebrew/core/linux-headers/5.15/blobs/sha256:51151e3fb26579994a3094166668e16c2bbac2b21f372b7593691c6f7655fc39
########################################################################################################################################## 100.0%
==> Fetching onefetch
==> Downloading https://ghcr.io/v2/homebrew/core/onefetch/blobs/sha256:d514014e3ddd400c50e57aecd7410e015a6bbc17eb93a16ec0e33ce8011ac63a
########################################################################################################################################## 100.0%
==> Installing dependencies for onefetch: linux-headers@5.15
==> Installing onefetch dependency: linux-headers@5.15
==> Downloading https://ghcr.io/v2/homebrew/core/linux-headers/5.15/manifests/5.15.168
Already downloaded: /home/builder/.cache/Homebrew/downloads/0076cfa58cff6f81c6037cbf4fa488af4e5fc408f8d63ce5fce6a94ffad751f0--linux-headers@5.15-5.15.168.bottle_manifest.json
==> Pouring linux-headers@5.15--5.15.168.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/linux-headers@5.15/5.15.168: 961 files, 5.7MB
==> Installing onefetch
==> Pouring onefetch--2.22.0.x86_64_linux.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /home/linuxbrew/.linuxbrew/etc/bash_completion.d
==> Summary
🍺  /home/linuxbrew/.linuxbrew/Cellar/onefetch/2.22.0: 13 files, 19.6MB
==> Running `brew cleanup onefetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Caveats
==> onefetch
Bash completion has been installed to:
  /home/linuxbrew/.linuxbrew/etc/bash_completion.d
builder@DESKTOP-QADGF36:~/Workspaces/jekyll-blog$ which onefetch
/home/linuxbrew/.linuxbrew/bin/onefetch

That worked!

$ onefetch --version
onefetch 2.22.0

Usage

Let’s just start by going to a GIT repo (such as the one for this blog) and running OneFetch

/content/images/2024/10/onefetch-01.png

Here we can see the number of branches locally (161), that it’s mostly (auto-detected) as Javascript (I might argue it’s more markdown - and the main “app” is Ruby).

The Authors part I found interesting in that it detected my work identity in there as well

Authors: 75% Isaac Johnson 351
         14% idjohnson 66
          5% Isaac Johnson - WellSky 23

The art is “neat” and adds some colour (like listening to soul and jazz while coding), but let’s generate the same thing without art.

$ onefetch /home/builder/Workspaces/jekyll-blog --no-art
Isaac Johnson ~ git version 2.25.1
----------------------------------
Project: jekyll-blog (161 branches)
Description: Artemis Blog Theme for Jekyll
             sites
HEAD: 90e00438 (2024-10-misctools4, main, origin/main)
Pending: 14+
Version: 1.0.0
Created: 5 years ago
Languages:
           ● JavaScript (46.2 %) ● HTML (21.4 %)
           ● Shell (17.9 %) ● Sass (9.1 %)
           ● CSS (3.7 %) ● Dockerfile (1.7 %)
Dependencies: 1 (Npm)
Authors: 75% Isaac Johnson 351
         14% idjohnson 66
          5% Isaac Johnson - WellSky 23
Last change: a day ago
Contributors: 6
URL: https://github.com/idjohnson/jekyll-blog
Commits: 466
Churn (2): …/10/immich-03.png 1
           …/10/immich-12.jpg 1
           …/10/immich-20.jpg 1
Lines of code: 3009
Size: 3.12 GiB (12743 files)
License: MIT

I can customize some of the output like using nerd fonts and removing the title

/content/images/2024/10/onefetch-02.png

A fun command I saw in the Getting Started was to run onefetch against every language it supports to see a scrolling list of the art

onefetch -l | tr "[:upper:] " "[:lower:]-" | while read line; do echo "$line"; onefetch -a $line; done;

I was sad to see no COBOL and while Fortran is there, no icon.

NOTE: I went to do a PR to add it myself only to see they have cool NASA rockets for FORTRAN, so we just need an updated version

Lastly, I’ll point out that onefetch has native yaml and json output support

So we can kick the stats to JSON for instance

$ onefetch -o json | jq
{
  "title": {
    "gitUsername": "Isaac Johnson",
    "gitVersion": "git version 2.25.1"
  },
  "infoFields": [
    {
      "ProjectInfo": {
        "repoName": "rustypaste",
        "numberOfBranches": 2,
        "numberOfTags": 39
      }
    },
    {
      "DescriptionInfo": {
        "description": "A minimal file upload/pastebin service"
      }
    },
    {
      "HeadInfo": {
        "headRefs": {
          "shortCommitId": "0810f6e",
          "refs": [
            "master",
            "origin/master"
          ]
        }
      }
    },
    {
      "PendingInfo": {
        "added": 0,
        "deleted": 0,
        "modified": 0
      }
    },
    {
      "VersionInfo": {
        "version": "v0.15.1"
      }
    },
    {
      "CreatedInfo": {
        "creationDate": "3 years ago"
      }
    },
    {
      "LanguagesInfo": {
        "languagesWithPercentage": [
          {
            "language": "Rust",
            "percentage": 80.3461753210497
          },
          {
            "language": "Sh",
            "percentage": 15.41038525963149
          },
          {
            "language": "Html",
            "percentage": 3.6850921273031827
          },
          {
            "language": "Dockerfile",
            "percentage": 0.5583472920156337
          }
        ]
      }
    },
    {
      "DependenciesInfo": {
        "dependencies": "28 (Cargo)"
      }
    },
    {
      "AuthorsInfo": {
        "authors": [
          {
            "name": "Orhun Parmaksız",
            "email": null,
            "nbrOfCommits": 214,
            "contribution": 46
          },
          {
            "name": "dependabot[bot]",
            "email": null,
            "nbrOfCommits": 129,
            "contribution": 28
          },
          {
            "name": "orhun",
            "email": null,
            "nbrOfCommits": 68,
            "contribution": 15
          }
        ]
      }
    },
    {
      "LastChangeInfo": {
        "lastChange": "3 weeks ago"
      }
    },
    {
      "ContributorsInfo": {
        "totalNumberOfAuthors": 27
      }
    },
    {
      "UrlInfo": {
        "repoUrl": "https://github.com/orhun/rustypaste.git"
      }
    },
    {
      "CommitsInfo": {
        "numberOfCommits": 467,
        "isShallow": false
      }
    },
    {
      "ChurnInfo": {
        "file_churns": [
          {
            "filePath": "Cargo.lock",
            "nbrOfCommits": 54
          },
          {
            "filePath": "Cargo.toml",
            "nbrOfCommits": 51
          },
          {
            "filePath": "src/server.rs",
            "nbrOfCommits": 6
          }
        ],
        "churn_pool_size": 76
      }
    },
    {
      "LocInfo": {
        "linesOfCode": 3582
      }
    },
    {
      "SizeInfo": {
        "repoSize": "471.68 KiB",
        "fileCount": 111
      }
    },
    {
      "LicenseInfo": {
        "license": "MIT"
      }
    }
  ]
}

We could then use something like jq to get the top language

$ onefetch -o json | jq '.infoFields[] | select(.LanguagesInfo) | .LanguagesInfo.languagesWithPercentage[0] | {language, percentage}'
{
  "language": "Rust",
  "percentage": 80.3461753210497
}

Windows

I used choco to install via an Administrator Powershell prompt

PS C:\WINDOWS\system32> choco install onefetch
Chocolatey v0.10.15
Installing the following packages:
onefetch
By installing you accept licenses for the packages.

onefetch v2.19.0 [Approved]
onefetch package files install completed. Performing other installation steps.
The package onefetch wants to run 'chocolateyinstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint): A

Downloading onefetch
  from 'https://github.com/o2sh/onefetch/releases/download/2.19.0/onefetch-win.tar.gz'
Progress: 100% - Completed download of C:\Users\isaac\AppData\Local\Temp\chocolatey\onefetch\2.19.0\onefetch-win.tar.gz (5.93 MB).
Download of onefetch-win.tar.gz (5.93 MB) completed.
Hashes match.
Extracting C:\Users\isaac\AppData\Local\Temp\chocolatey\onefetch\2.19.0\onefetch-win.tar.gz to C:\ProgramData\chocolatey\lib\onefetch\tools...
C:\ProgramData\chocolatey\lib\onefetch\tools
Extracting C:\ProgramData\chocolatey\lib\onefetch\tools\onefetch-win.tar to C:\ProgramData\chocolatey\lib\onefetch\tools...
C:\ProgramData\chocolatey\lib\onefetch\tools
 ShimGen has successfully created a shim for onefetch.exe
 The install of onefetch was successful.
  Software installed to 'C:\ProgramData\chocolatey\lib\onefetch\tools'

Chocolatey installed 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Did you know the proceeds of Pro (and some proceeds from other
 licensed editions) go into bettering the community infrastructure?
 Your support ensures an active community, keeps Chocolatey tip top,
 plus it nets you some awesome features!
 https://chocolatey.org/compare

Which worked just as well (in a normal powershell prompt, mind you, after installation):

/content/images/2024/10/onefetch-04.png

Git Absorb

The idea of git-absorb is that fixing some bugs in a branch shouldn’t just be a new commit with all the fixes called “fixes”. Instead, one aught to fix the commits that introduced the bugs. I think. Honestly, I’m still trying to wrap my brain around the notion.

However, this comes from the older hg absorb and I guess the notion is popular with many so let’s see if we (I) can figure out what this does.

Since clearly my focal is being a turd with aptitude today, let’s just use homebrew to install and avoid the hassle.

If you are following along, I found this brew install did take a while

$ brew install git-absorb
==> Downloading https://formulae.brew.sh/api/formula.jws.json
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/git-absorb/manifests/0.6.15
########################################################################################################################################## 100.0%
==> Fetching dependencies for git-absorb: xz, libssh2 and libgit2
==> Downloading https://ghcr.io/v2/homebrew/core/xz/manifests/5.6.3
########################################################################################################################################## 100.0%
==> Fetching xz
==> Downloading https://ghcr.io/v2/homebrew/core/xz/blobs/sha256:360e9e63603136e0a4af1c9d0a6c28429fca9008fa5210cc12c2934117223c39
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libssh2/manifests/1.11.1
########################################################################################################################################## 100.0%
==> Fetching dependencies for libssh2: ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2024-09-24
########################################################################################################################################## 100.0%
==> Fetching ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:212f2576348d5f5797d8d3905eb70d0d9bf8829345bce9e20e2fd0336f344648
########################################################################################################################################## 100.0%
==> Fetching libssh2
==> Downloading https://ghcr.io/v2/homebrew/core/libssh2/blobs/sha256:a307208b03d0761f7ea8c53a322ea09b0a60db96e3ef8688df6adec92b45ca5b
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libgit2/manifests/1.8.2
########################################################################################################################################## 100.0%
==> Fetching libgit2
==> Downloading https://ghcr.io/v2/homebrew/core/libgit2/blobs/sha256:db478f04a5cdc7196b5988fe99e95292d6038edd289531b9ff96fa181e23f642
########################################################################################################################################## 100.0%
==> Fetching git-absorb
==> Downloading https://ghcr.io/v2/homebrew/core/git-absorb/blobs/sha256:94fa2414eb3c9ed63e09ab896610c45810e68d430e236696c6edd10990926008
########################################################################################################################################## 100.0%
==> Installing dependencies for git-absorb: xz, libssh2 and libgit2
==> Installing git-absorb dependency: xz
==> Downloading https://ghcr.io/v2/homebrew/core/xz/manifests/5.6.3
Already downloaded: /home/builder/.cache/Homebrew/downloads/e68799185cc17334108ba286ba8c3df0587c9fd8375647d85f7157b62a797599--xz-5.6.3.bottle_manifest.json
==> Pouring xz--5.6.3.x86_64_linux.bottle.tar.gz
==> Downloading https://formulae.brew.sh/api/cask.jws.json
########################################################################################################################################## 100.0%
🍺  /home/linuxbrew/.linuxbrew/Cellar/xz/5.6.3: 97 files, 2MB
==> Installing git-absorb dependency: libssh2
==> Downloading https://ghcr.io/v2/homebrew/core/libssh2/manifests/1.11.1
Already downloaded: /home/builder/.cache/Homebrew/downloads/6d2495eb2b5f37f7931b23940ceb29db14a4742a49d1d8cce26964ad91a03f26--libssh2-1.11.1.bottle_manifest.json
==> Installing dependencies for libssh2: ca-certificates
==> Installing libssh2 dependency: ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2024-09-24
Already downloaded: /home/builder/.cache/Homebrew/downloads/338dad7c2ff7c822cda7c417944521589856741c0fbd7a7f07b88a18d7fb7e05--ca-certificates-2024-09-24.bottle_manifest.json
==> Pouring ca-certificates--2024-09-24.all.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/ca-certificates/2024-09-24: 4 files, 255.4KB
==> Installing libssh2
==> Pouring libssh2--1.11.1.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/libssh2/1.11.1: 202 files, 1.5MB
==> Installing git-absorb dependency: libgit2
==> Downloading https://ghcr.io/v2/homebrew/core/libgit2/manifests/1.8.2
Already downloaded: /home/builder/.cache/Homebrew/downloads/bc15b1845d0644425f38612deeb04668acb6772d62b587cf9fc03cbab71cdc79--libgit2-1.8.2.bottle_manifest.json
==> Pouring libgit2--1.8.2.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/libgit2/1.8.2: 106 files, 6.7MB
==> Installing git-absorb
==> Pouring git-absorb--0.6.15.x86_64_linux.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /home/linuxbrew/.linuxbrew/etc/bash_completion.d
==> Summary
🍺  /home/linuxbrew/.linuxbrew/Cellar/git-absorb/0.6.15: 12 files, 2.2MB
==> Running `brew cleanup git-absorb`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Warning: The following dependents of upgraded formulae are outdated but will not
be upgraded because they are not bottled:
  zarf
  popeye
  process-compose
  punq
  kdash
==> Upgrading 54 dependents of upgraded formulae:
Disable this behaviour by setting HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
alsa-lib 1.2.9 -> 1.2.12, bdw-gc 8.2.4 -> 8.2.8, btop 1.2.13 -> 1.4.0, cairo 1.16.0_5 -> 1.18.2, devspace 6.3.2 -> 6.3.14, fontconfig 2.14.2 -> 2.15.0, gettext 0.21.1 -> 0.22.5, gh 2.32.0 -> 2.59.0, glib 2.78.1 -> 2.82.2, gnutls 3.8.0 -> 3.8.4, go 1.23.1 -> 1.23.2, guile 3.0.9 -> 3.0.10, harfbuzz 7.3.0 -> 10.0.1_1, hugo 0.112.3 -> 0.136.3, icu4c 72.1 -> 74.2, jpeg-turbo 2.1.5.1 -> 3.0.4, jq 1.6 -> 1.7.1, kompose 1.31.2 -> 1.34.0, kubernetes-cli 1.27.3 -> 1.31.1, libevent 2.1.12 -> 2.1.12_1, libidn2 2.3.4_1 -> 2.3.7, libnghttp2 1.53.0 -> 1.63.0, libtiff 4.5.0 -> 4.7.0, libtirpc 1.3.5 -> 1.3.6, libunistring 1.1 -> 1.3, libxcb 1.16 -> 1.17.0, libx11 1.8.7 -> 1.8.10, libxdmcp 1.1.4 -> 1.1.5, libxext 1.3.5 -> 1.3.6, libxi 1.8.1 -> 1.8.2, libxml2 2.11.4 -> 2.13.4_2, gawk 5.2.2 -> 5.3.1, libxrandr 1.5.3 -> 1.5.4, libxt 1.3.0 -> 1.3.0_1, libxtst 1.2.4 -> 1.2.5, little-cms2 2.15 -> 2.16, nettle 3.9 -> 3.10, oniguruma 6.9.8 -> 6.9.9, opa 0.53.0 -> 0.69.0, openssl@1.1 1.1.1t -> 1.1.1w, cups 2.4.2 -> 2.4.11, openjdk@11 11.0.19 -> 11.0.25, opentofu 1.6.0 -> 1.8.3, p11-kit 0.24.1_1 -> 0.25.5, python-yq 3.2.2 -> 3.4.3, python@3.10 3.10.11 -> 3.10.15, python@3.11 3.11.6_1 -> 3.11.10, pyyaml 6.0_1 -> 6.0.1_1, ruby 3.3.4 -> 3.3.5, sonar-scanner 4.8.0.2856 -> 6.2.1.4610, unbound 1.17.1 -> 1.22.0, vault 1.13.2 -> 1.14.4, xorgproto 2023.2 -> 2024.1, yq 4.31.1 -> 4.44.3
Warning: openssl@1.1 has been deprecated! It will be disabled on 2024-10-24.
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/manifests/1.1.1w-1
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/fontconfig/manifests/2.15.0
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libtirpc/manifests/1.3.6
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/glib/manifests/2.82.2
########################################################################################################################################## 100.0%
==> Fetching dependencies for glib: python-packaging, libtirpc, python@3.13 and util-linux
==> Downloading https://ghcr.io/v2/homebrew/core/python-packaging/manifests/24.1_1
########################################################################################################################################## 100.0%
==> Fetching python-packaging
==> Downloading https://ghcr.io/v2/homebrew/core/python-packaging/blobs/sha256:575595301a31862ca4d2d0f6a39fd8e209adb81ff0926d65a81e7f1173f7d30d
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libtirpc/manifests/1.3.6
Already downloaded: /home/builder/.cache/Homebrew/downloads/ad470b269e765b4f8dbba62656db2fc55c8d0b670558da2254d6e58bbaeae63d--libtirpc-1.3.6.bottle_manifest.json
==> Fetching libtirpc
==> Downloading https://ghcr.io/v2/homebrew/core/libtirpc/blobs/sha256:698863d4347f952d77d796520cbe9857146c83983789691c08d848c63f045fa4
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.13/manifests/3.13.0_1
########################################################################################################################################## 100.0%
==> Fetching python@3.13
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.13/blobs/sha256:856c9c245e10cac940a6bf36af6ecf1a321ad82cbbcca2ea38136d3605bea9b2
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/util-linux/manifests/2.40.2-1
Already downloaded: /home/builder/.cache/Homebrew/downloads/635c3a4838ab534b3fed900de735d2527a71bca53917fcc61cc683223c724e8a--util-linux-2.40.2-1.bottle_manifest.json
==> Fetching util-linux
==> Downloading https://ghcr.io/v2/homebrew/core/util-linux/blobs/sha256:773c91eea7c86a3a5a18ae1b43a43c9346b190ccf7640bb811e4cadb77a42874
Already downloaded: /home/builder/.cache/Homebrew/downloads/c91c23954cb6a3960a9108e07006e549024a6a6a8b0764e5fae2a5b36763943f--util-linux--2.40.2.x86_64_linux.bottle.1.tar.gz
==> Fetching glib
==> Downloading https://ghcr.io/v2/homebrew/core/glib/blobs/sha256:3357a6c04dc78db3f79a0e01ff0a5515a1c2745c111b5adbf7d81aa8a60c77eb
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/xorgproto/manifests/2024.1
########################################################################################################################################## 100.0%
==> Fetching xorgproto
==> Downloading https://ghcr.io/v2/homebrew/core/xorgproto/blobs/sha256:fc1ef8db0fe244a7a47541fe8494131a281814a4110d3af41d76226274601df7
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libxdmcp/manifests/1.1.5
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libxcb/manifests/1.17.0
########################################################################################################################################## 100.0%
==> Fetching dependencies for libxcb: libxdmcp
==> Downloading https://ghcr.io/v2/homebrew/core/libxdmcp/manifests/1.1.5
Already downloaded: /home/builder/.cache/Homebrew/downloads/8713e53f73d0be64780dbea522b0ee07027e6cc7828ff1a4fa0a6596f14cfe25--libxdmcp-1.1.5.bottle_manifest.json
==> Fetching libxdmcp
==> Downloading https://ghcr.io/v2/homebrew/core/libxdmcp/blobs/sha256:d8b9dc2969e85e26c6d426d8865244e1416d73f7f408c9f5404a2a614a62e7d4
########################################################################################################################################## 100.0%
==> Fetching libxcb
==> Downloading https://ghcr.io/v2/homebrew/core/libxcb/blobs/sha256:c89a99c1bd6af9c2ee85f4c7bacd07906bb16e6ab515cd5d347f9f392dbd80a1
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libx11/manifests/1.8.10
Already downloaded: /home/builder/.cache/Homebrew/downloads/2e75e14e6bb3157688933738ae64e0dc86954ca8ef075737dda6b890d605d566--libx11-1.8.10.bottle_manifest.json
==> Fetching libx11
==> Downloading https://ghcr.io/v2/homebrew/core/libx11/blobs/sha256:12f965d5b1d09327b0040b9e0f385ca5d4db9ceb29f8c89e6fcbe6e98ecf71c6
Already downloaded: /home/builder/.cache/Homebrew/downloads/c23db918fed0f8b35fe8759446c8a4706c7c8712ad4f486fbc45e5777c8d54d8--libx11--1.8.10.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/libxext/manifests/1.3.6
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/cairo/manifests/1.18.2
Already downloaded: /home/builder/.cache/Homebrew/downloads/9d3ab10478bcceef6fbed69d1a4f387b5d996a592bb1ccbf33e560e3d2d5e103--cairo-1.18.2.bottle_manifest.json
==> Fetching dependencies for cairo: fontconfig and libxext
==> Downloading https://ghcr.io/v2/homebrew/core/fontconfig/manifests/2.15.0
Already downloaded: /home/builder/.cache/Homebrew/downloads/33d176010dc9a105404ed23b6c0f8b853bf3a2df2e274876d412d7229a643320--fontconfig-2.15.0.bottle_manifest.json
==> Fetching fontconfig
==> Downloading https://ghcr.io/v2/homebrew/core/fontconfig/blobs/sha256:1cb0f103706d1199c9917ec6908d9f027eb9688faee40a46bcd32df1173c96b4
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libxext/manifests/1.3.6
Already downloaded: /home/builder/.cache/Homebrew/downloads/fedb843acbfcf682fb451396914bfc096f9ea2748376d4c43ce2af7ce1b766b7--libxext-1.3.6.bottle_manifest.json
==> Fetching libxext
==> Downloading https://ghcr.io/v2/homebrew/core/libxext/blobs/sha256:c62be32e864f64fc9ed3392a2f6eae085350c5b929b52306ac5e26c07b38bd3f
########################################################################################################################################## 100.0%
==> Fetching cairo
==> Downloading https://ghcr.io/v2/homebrew/core/cairo/blobs/sha256:8ed937d16eca80e5acbf0b3ae533f933e2d30915abaafb9840026bd9149ed9ba
Already downloaded: /home/builder/.cache/Homebrew/downloads/8e878ab9057afb4063d66842c3f45ab04084b323a71883f564668d1056836951--cairo--1.18.2.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/harfbuzz/manifests/10.0.1_1-1
########################################################################################################################################## 100.0%
==> Fetching dependencies for harfbuzz: icu4c@75
==> Downloading https://ghcr.io/v2/homebrew/core/icu4c/75/manifests/75.1
########################################################################################################################################## 100.0%
==> Fetching icu4c@75
==> Downloading https://ghcr.io/v2/homebrew/core/icu4c/75/blobs/sha256:ab60784f7aee6a4a7827bbff1cf524c1c357a76be2898fdbf144ffa1df145eff
########################################################################################################################################## 100.0%
==> Fetching harfbuzz
==> Downloading https://ghcr.io/v2/homebrew/core/harfbuzz/blobs/sha256:82d5f95395dbaf51b6a561de5f931722f4a97d4899d44af032bd0afa30bc5edb
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/jpeg-turbo/manifests/3.0.4
Already downloaded: /home/builder/.cache/Homebrew/downloads/2a3630ffd65db74be2c3c6104929548e1a0e8f2c82583e0732016f49b52b2c13--jpeg-turbo-3.0.4.bottle_manifest.json
==> Fetching jpeg-turbo
==> Downloading https://ghcr.io/v2/homebrew/core/jpeg-turbo/blobs/sha256:7eb799fd7e23195d2cb8ef8bf5282518a26f06864cc2d5a9d134a520916291e2
Already downloaded: /home/builder/.cache/Homebrew/downloads/48f29bdecbdeccd4039dd7caf517883171ccbb5c2095e3518e4ad2880abf2bd3--jpeg-turbo--3.0.4.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/libtiff/manifests/4.7.0
########################################################################################################################################## 100.0%
==> Fetching libtiff
==> Downloading https://ghcr.io/v2/homebrew/core/libtiff/blobs/sha256:95966f571ddb04072257468f8545c9204a1aee180015a9f6c44db8113e57f060
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/little-cms2/manifests/2.16
########################################################################################################################################## 100.0%
==> Fetching little-cms2
==> Downloading https://ghcr.io/v2/homebrew/core/little-cms2/blobs/sha256:79268ac2afeaaa7bce8af516f329f808443c3bbad64e705f8a39e4f0ccc112e2
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/alsa-lib/manifests/1.2.12
Already downloaded: /home/builder/.cache/Homebrew/downloads/9b93feff610d48e6376df91a003ff167b2e4a264db20353518a39530a088939c--alsa-lib-1.2.12.bottle_manifest.json
==> Fetching alsa-lib
==> Downloading https://ghcr.io/v2/homebrew/core/alsa-lib/blobs/sha256:d093a3482e754eeca28241ea1fb0502cfbc91d982ec158362d72c52b3b2f4657
Already downloaded: /home/builder/.cache/Homebrew/downloads/b1e3177e05f2da54ffdaf908c68770d075e71b0917af30dc5b1b6c3c08bca760--alsa-lib--1.2.12.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/libxi/manifests/1.8.2
Already downloaded: /home/builder/.cache/Homebrew/downloads/089cbc546059463acb4a311e70491ca9665a8c04ab7683bc3c0803ee15b4d698--libxi-1.8.2.bottle_manifest.json
==> Fetching libxi
==> Downloading https://ghcr.io/v2/homebrew/core/libxi/blobs/sha256:6839d93e4dc8d53688515849ec4ec2d830946d6d26f6cfcca6402390bc0f1867
Already downloaded: /home/builder/.cache/Homebrew/downloads/ea068574cb58b69045d4a3d15ba94bb3412a44c27631ef23d2ebb3b418a0c397--libxi--1.8.2.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/libxrandr/manifests/1.5.4
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libxt/manifests/1.3.0_1
Already downloaded: /home/builder/.cache/Homebrew/downloads/b48bba9d78eb2daf6ea0e2fe55f7ac6456272456d4ae6934035bf759f92ddfbc--libxt-1.3.0_1.bottle_manifest.json
==> Fetching libxt
==> Downloading https://ghcr.io/v2/homebrew/core/libxt/blobs/sha256:505a098f0763f672253f047c75408e739da9956def530758db3476e21184b157
Already downloaded: /home/builder/.cache/Homebrew/downloads/5d62116be918be912412a01e995a0dbc7af837cef86fd770cc12d9e88b3fd4e7--libxt--1.3.0_1.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/libxtst/manifests/1.2.5
Already downloaded: /home/builder/.cache/Homebrew/downloads/255b29f533b7064a6e692de37b3d9a41d73033506bec841e9900dbf2eb337a4c--libxtst-1.2.5.bottle_manifest.json
==> Fetching libxtst
==> Downloading https://ghcr.io/v2/homebrew/core/libxtst/blobs/sha256:51cacd4573d0d4e1cc33c83574cf4838d93de28276a9cd3c69496da8a4466771
Already downloaded: /home/builder/.cache/Homebrew/downloads/621a3574ff3c98080eeb2a78178f0059cbd286295ebd0dcf5df7838032aa8ed0--libxtst--1.2.5.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/cups/manifests/2.4.11
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/11/manifests/11.0.25
########################################################################################################################################## 100.0%
==> Fetching dependencies for openjdk@11: libxrandr and cups
==> Downloading https://ghcr.io/v2/homebrew/core/libxrandr/manifests/1.5.4
Already downloaded: /home/builder/.cache/Homebrew/downloads/1fbb247f2abdbccf5d8f0682109acc180855bab14fd80473fbc15f74ebef0dbc--libxrandr-1.5.4.bottle_manifest.json
==> Fetching libxrandr
==> Downloading https://ghcr.io/v2/homebrew/core/libxrandr/blobs/sha256:c48b622aed3d5e99e225601dca2d129fda08585571d948f8737f3e6a4bcb2a56
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/cups/manifests/2.4.11
Already downloaded: /home/builder/.cache/Homebrew/downloads/bb2b96bbd2a7024c1ac1193ac7e73a36273fe01c1ec85a2832d2188aeb49cf64--cups-2.4.11.bottle_manifest.json
==> Fetching cups
==> Downloading https://ghcr.io/v2/homebrew/core/cups/blobs/sha256:450c1b750daf7df268f6107c5bd585c9a1d20fe20914ff9f038e9f5bbf028380
########################################################################################################################################## 100.0%
==> Fetching openjdk@11
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/11/blobs/sha256:9aa19e0427499e93e51d6375f47473e029fa46cd45560b2b1323d3ed072a9116
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/bdw-gc/manifests/8.2.8
Already downloaded: /home/builder/.cache/Homebrew/downloads/89bb7c10cfa3482949e74e3e7687110dada74da8f2f584bd385aa97c1cb30c96--bdw-gc-8.2.8.bottle_manifest.json
==> Fetching bdw-gc
==> Downloading https://ghcr.io/v2/homebrew/core/bdw-gc/blobs/sha256:f666fdf55ce3b41704f5869120ddfd3e973051d1fc0dc32a80733f20ba15ea0c
Already downloaded: /home/builder/.cache/Homebrew/downloads/2907a2f12384ffe1c173a64df04ad762fe0b7f90c6e1e1410be1443bdb294953--bdw-gc--8.2.8.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/btop/manifests/1.4.0-1
########################################################################################################################################## 100.0%
==> Fetching btop
==> Downloading https://ghcr.io/v2/homebrew/core/btop/blobs/sha256:3bf71bc7a9e5ceab6fda7308ea326590a21dd7690d966830483f55c8dc9db8c5
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/manifests/1.31.1
Already downloaded: /home/builder/.cache/Homebrew/downloads/355d5bb8e1683981ab5aa62cd16f2fd06ff40adef4fe23ead3260ddb757ad5e1--kubernetes-cli-1.31.1.bottle_manifest.json
==> Fetching kubernetes-cli
==> Downloading https://ghcr.io/v2/homebrew/core/kubernetes-cli/blobs/sha256:8ce9759ac9adcf152d5c77aa64e3d8cd1efebebf6e7e271d44055e105e0f18e4
Already downloaded: /home/builder/.cache/Homebrew/downloads/e2208ea1c567f7f8fb02c9878177b57e0900e60b261ddf394f559779daabc699--kubernetes-cli--1.31.1.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/devspace/manifests/6.3.14
########################################################################################################################################## 100.0%
==> Fetching devspace
==> Downloading https://ghcr.io/v2/homebrew/core/devspace/blobs/sha256:65c41a35f7c6d9ff1a762745a64edce27889ddde4a0a3ac8c8f8723574a44e55
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/manifests/1.3
########################################################################################################################################## 100.0%
==> Fetching libunistring
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/blobs/sha256:25ff65379463fe4a51008a36c45a963ebc8d13d054ce606e3fbb6635ea634311
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libxml2/manifests/2.13.4_2
########################################################################################################################################## 100.0%
==> Fetching libxml2
==> Downloading https://ghcr.io/v2/homebrew/core/libxml2/blobs/sha256:e93c2ad1c67a4e949a149d3d742bd672b37259d15bb765930b25ccae582ed7bf
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/0.22.5-1
########################################################################################################################################## 100.0%
==> Fetching gettext
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/blobs/sha256:c1a3a97412d28be6552c4b4191c174ce145329b165599c280b550f9a54bed9b8
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gh/manifests/2.59.0
########################################################################################################################################## 100.0%
==> Fetching gh
==> Downloading https://ghcr.io/v2/homebrew/core/gh/blobs/sha256:e0631067441cb34c73c660f73dfbab885167c3ac5b1f8ade765b14c5ebdbf0f9
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libidn2/manifests/2.3.7
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/nettle/manifests/3.10
Already downloaded: /home/builder/.cache/Homebrew/downloads/8dc57e1a111535116cedad68fea09cf7a5477e6a1e357cdbb65b679768548586--nettle-3.10.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/p11-kit/manifests/0.25.5-1
Already downloaded: /home/builder/.cache/Homebrew/downloads/ba19311d6335b76681ee8e745af9980f80ad52d243a53066a21ead0d6d421a31--p11-kit-0.25.5-1.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/libevent/manifests/2.1.12_1
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libnghttp2/manifests/1.63.0
Already downloaded: /home/builder/.cache/Homebrew/downloads/e63c5bc0f458327f00ee55e74895b72e64faad010393790efba6fc3e26689285--libnghttp2-1.63.0.bottle_manifest.json
==> Fetching libnghttp2
==> Downloading https://ghcr.io/v2/homebrew/core/libnghttp2/blobs/sha256:b72e73226c370de2ba1680f11e0ac5f69bd64235756c5bea5a7dbaffc48a6ea2
Already downloaded: /home/builder/.cache/Homebrew/downloads/4728316150aa23b0f2448e648eeb392fd9da602679d1151347870af3d33cb5e3--libnghttp2--1.63.0.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/unbound/manifests/1.22.0
########################################################################################################################################## 100.0%
==> Fetching dependencies for unbound: libevent
==> Downloading https://ghcr.io/v2/homebrew/core/libevent/manifests/2.1.12_1
Already downloaded: /home/builder/.cache/Homebrew/downloads/68b113f9ab63db45f4e1860de522ce2ca4fa081eb3c0d5c7d6005a35c3cf8d06--libevent-2.1.12_1.bottle_manifest.json
==> Fetching libevent
==> Downloading https://ghcr.io/v2/homebrew/core/libevent/blobs/sha256:83ef4ce689a91f6fca013d6b4b0b2fcda3706080f8e0cccd056a3d94d6bc0f17
########################################################################################################################################## 100.0%
==> Fetching unbound
==> Downloading https://ghcr.io/v2/homebrew/core/unbound/blobs/sha256:a9db089b57722fb40fd586077155936973dbcee07176a4cdf98a46ffefc9cf5d
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gnutls/manifests/3.8.4
########################################################################################################################################## 100.0%
==> Fetching dependencies for gnutls: libidn2, nettle and p11-kit
==> Downloading https://ghcr.io/v2/homebrew/core/libidn2/manifests/2.3.7
Already downloaded: /home/builder/.cache/Homebrew/downloads/45d1d4d2930c4782bf53e761a1c0166cd8a40f4193ac8c44e86f0b6708e80354--libidn2-2.3.7.bottle_manifest.json
==> Fetching libidn2
==> Downloading https://ghcr.io/v2/homebrew/core/libidn2/blobs/sha256:2d94c867e00156a44644758c62895dd6d13538aff7f638ea598ff70e0e8f6505
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/nettle/manifests/3.10
Already downloaded: /home/builder/.cache/Homebrew/downloads/8dc57e1a111535116cedad68fea09cf7a5477e6a1e357cdbb65b679768548586--nettle-3.10.bottle_manifest.json
==> Fetching nettle
==> Downloading https://ghcr.io/v2/homebrew/core/nettle/blobs/sha256:05101c1f60cf7b267464af60a6814404e32691af7630e4ea23ed5b85ae1257a7
Already downloaded: /home/builder/.cache/Homebrew/downloads/edd00a65404c7306cccea79013df459bd5790f41230724aca1242a55458daa00--nettle--3.10.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/p11-kit/manifests/0.25.5-1
Already downloaded: /home/builder/.cache/Homebrew/downloads/ba19311d6335b76681ee8e745af9980f80ad52d243a53066a21ead0d6d421a31--p11-kit-0.25.5-1.bottle_manifest.json
==> Fetching p11-kit
==> Downloading https://ghcr.io/v2/homebrew/core/p11-kit/blobs/sha256:65efc1a95ab97b86e0eb36f2e8782d3f6140d795f3bc33cb6e20267d5fee45f0
Already downloaded: /home/builder/.cache/Homebrew/downloads/551e75226ae3035d7ba0db862605aa22fa27df41a23f8a951dbe9e5226d894e1--p11-kit--0.25.5.x86_64_linux.bottle.1.tar.gz
==> Fetching gnutls
==> Downloading https://ghcr.io/v2/homebrew/core/gnutls/blobs/sha256:9bedb5b302e02e32c64bf75c488216dd644bc205d9e99d2b26edfdf7f3d81b93
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.23.2
########################################################################################################################################## 100.0%
==> Fetching go
==> Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:6de4daee05bd091a7c29aee73e93bde102c560392d5114e3e92b7d1fae0fbcf4
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/guile/manifests/3.0.10
Already downloaded: /home/builder/.cache/Homebrew/downloads/021bce50ed36eb6194672cc1b893b558d64c8a1a67833a5df2b413f99acddc24--guile-3.0.10.bottle_manifest.json
==> Fetching guile
==> Downloading https://ghcr.io/v2/homebrew/core/guile/blobs/sha256:fd3f68416f1b61d67641e43ce42a3a4b88ad5a010533b572b42e69fa8e4ef434
Already downloaded: /home/builder/.cache/Homebrew/downloads/faab34812935af8b0bf1e9443e5c9a71413de5af2cb493f1225084e7bdf0f3a1--guile--3.0.10.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/hugo/manifests/0.136.3
########################################################################################################################################## 100.0%
==> Fetching hugo
==> Downloading https://ghcr.io/v2/homebrew/core/hugo/blobs/sha256:a7cf360613d531f3ba89871d04c02877d6366478e8e350152580bf95e1676148
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/icu4c/manifests/74.2
########################################################################################################################################## 100.0%
==> Fetching icu4c
==> Downloading https://ghcr.io/v2/homebrew/core/icu4c/blobs/sha256:2b881638861905a1a730cdd618966dfcb548685314d86addd1ad6d110ba88432
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/oniguruma/manifests/6.9.9
########################################################################################################################################## 100.0%
==> Fetching oniguruma
==> Downloading https://ghcr.io/v2/homebrew/core/oniguruma/blobs/sha256:18f0e52bb660582698f390023d5db08208ed468d2f01758018b9ee8c69aeba4f
########################################################################################################################################## 100.0%

==> Downloading https://ghcr.io/v2/homebrew/core/jq/manifests/1.7.1-1
Already downloaded: /home/builder/.cache/Homebrew/downloads/d1382cba30f89ffc26790240df7dc444b078442920626f7580500bc63ad0f414--jq-1.7.1-1.bottle_manifest.json
==> Fetching jq
==> Downloading https://ghcr.io/v2/homebrew/core/jq/blobs/sha256:9559d8278cf20ad0294f2059855e1bc9d2bcabfd2bd5b5774c66006d1f201ad8
Already downloaded: /home/builder/.cache/Homebrew/downloads/4f0f28801795a88da550b4dcf54b430a75cb27b5f29a6b350816f9f8ff8281ee--jq--1.7.1.x86_64_linux.bottle.1.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/kompose/manifests/1.34.0
Already downloaded: /home/builder/.cache/Homebrew/downloads/5617c7bdd91cd9b817f06bf0c0b0c56aa0d21e5ea8f2a8339d8e5ef33c51b020--kompose-1.34.0.bottle_manifest.json
==> Fetching kompose
==> Downloading https://ghcr.io/v2/homebrew/core/kompose/blobs/sha256:5635188e3474228ac1e25a87a1a5d0f88f2b0846f2471f746f86741fc3bb8f0a
Already downloaded: /home/builder/.cache/Homebrew/downloads/fef86b75de8026488581d4c43f269d0b97e318affd1907769aa8fcef82c40689--kompose--1.34.0.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/gawk/manifests/5.3.1
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/opa/manifests/0.69.0
########################################################################################################################################## 100.0%
==> Fetching opa
==> Downloading https://ghcr.io/v2/homebrew/core/opa/blobs/sha256:97eb07c1e015110e89ab1e26851ce13c70e417ea124f2b590af2dfd6f4bceb06
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/opentofu/manifests/1.8.3
########################################################################################################################################## 100.0%
==> Fetching opentofu
==> Downloading https://ghcr.io/v2/homebrew/core/opentofu/blobs/sha256:05c3ff5180dac3e5dd29732baa35eec909245b7d2fe45fbcd67be2a5411d8086
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/python-yq/manifests/3.4.3-1
########################################################################################################################################## 100.0%
==> Fetching python-yq
==> Downloading https://ghcr.io/v2/homebrew/core/python-yq/blobs/sha256:6a31d246270aa8b514e914937f3ab9d22fd2d4bdd10e7a88e229bd7749ed81a5
########################################################################################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.10/manifests/3.10.15
Already downloaded: /home/builder/.cache/Homebrew/downloads/dc2adbc53582d842de434ed29b40f33c215304c70f4599d47435160fcd919eaa--python@3.10-3.10.15.bottle_manifest.json
==> Fetching dependencies for python@3.10: gdbm
==> Downloading https://ghcr.io/v2/homebrew/core/gdbm/manifests/1.24
Already downloaded: /home/builder/.cache/Homebrew/downloads/f9d3dc573240cb7eb6a7c9b42dd2e9591cc831662dedec947d70929e7868bccd--gdbm-1.24.bottle_manifest.json
==> Fetching gdbm
==> Downloading https://ghcr.io/v2/homebrew/core/gdbm/blobs/sha256:7fd35749fc28a0bf5e2f3c7cc74d8e2da38914d3009127cbedf9cf617cb6fe61
Already downloaded: /home/builder/.cache/Homebrew/downloads/09998cf7b6984a3e1ee7b0bb2e6bf6a551300a39e3504fafc922b9eef2368aee--gdbm--1.24.x86_64_linux.bottle.tar.gz
==> Fetching python@3.10
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.10/blobs/sha256:0e065b993cd388e8af7f02539f63c2e6fe575e12c7d139efa3f20f2874233a88
Already downloaded: /home/builder/.cache/Homebrew/downloads/6fae070736f8b03e01e47797971ae32d09a6b0e6afe7dbb96c645fbaf6dc543e--python@3.10--3.10.15.x86_64_linux.bottle.tar.gz
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.11/manifests/3.11.10
Already downloaded: /home/builder/.cache/Homebrew/downloads/dbceba8ebdfd7d47453a640759660b014f161373922ee800cf0591569c2ef58c--python@3.11-3.11.10.bottle_manifest.json
Error: pyyaml has been disabled because it does not meet homebrew/core's requirements for Python library formulae! It was disabled on 2024-10-06.
==> Downloading https://ghcr.io/v2/homebrew/core/ruby/manifests/3.3.5
Already downloaded: /home/builder/.cache/Homebrew/downloads/26a0236242fad217f21ca6c730ba2bc313c6b132ff7d868134fdb602096bfe59--ruby-3.3.5.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/sonar-scanner/manifests/6.2.1.4610-1
########################################################################################################################################## 100.0%
==> Fetching dependencies for sonar-scanner: openjdk
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/manifests/23-1
########################################################################################################################################## 100.0%
==> Fetching openjdk
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/blobs/sha256:82fc99187027bf29857ea070a092b41ce76169bbedad8a91177c60f1d405829d
########################################################################################################################################## 100.0%
==> Fetching sonar-scanner
==> Downloading https://ghcr.io/v2/homebrew/core/sonar-scanner/blobs/sha256:5e24f759a690b4abb55737325a6c9e94d42b2235abd0e93021306d6016d967e6
########################################################################################################################################## 100.0%
Error: vault has been disabled because it will change its license to BUSL on the next release! It was disabled on 2024-09-27.
==> Downloading https://ghcr.io/v2/homebrew/core/yq/manifests/4.44.3
Already downloaded: /home/builder/.cache/Homebrew/downloads/72287770eadb680ce9c7ce2f254ea7810b800593596891e639c88460c450e510--yq-4.44.3.bottle_manifest.json
==> Fetching yq
==> Downloading https://ghcr.io/v2/homebrew/core/yq/blobs/sha256:b2fc2e913fb1b863b3b2594318329a46676fb29c64dd5dae92711493ac3716ae
Already downloaded: /home/builder/.cache/Homebrew/downloads/223a037069c6aafeafe290138c5925b8c10fb428b5341e882f4357bcf1973a53--yq--4.44.3.x86_64_linux.bottle.tar.gz
==> Upgrading glib
  2.78.1 -> 2.82.2
==> Installing dependencies for glib: python-packaging, libtirpc, python@3.13 and util-linux
==> Installing glib dependency: python-packaging
==> Downloading https://ghcr.io/v2/homebrew/core/python-packaging/manifests/24.1_1
Already downloaded: /home/builder/.cache/Homebrew/downloads/0a8b3181cb4fa8bee143a75cd85f08eb834903bde31ef0a291f3fe9f82bdbe41--python-packaging-24.1_1.bottle_manifest.json
==> Pouring python-packaging--24.1_1.all.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /home/linuxbrew/.linuxbrew
Could not symlink lib/python3.11/site-packages/packaging/__init__.py
Target /home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/__init__.py
already exists. You may want to remove it:
  rm '/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/__init__.py'

To force the link and overwrite all conflicting files:
  brew link --overwrite python-packaging

To list all files that would be deleted:
  brew link --overwrite python-packaging --dry-run

Possible conflicting files are:
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/__init__.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_elffile.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_manylinux.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_musllinux.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_parser.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_structures.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/_tokenizer.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/markers.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/metadata.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/py.typed
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/requirements.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/specifiers.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/tags.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/utils.py
/home/linuxbrew/.linuxbrew/lib/python3.11/site-packages/packaging/version.py
==> Summary
🍺  /home/linuxbrew/.linuxbrew/Cellar/python-packaging/24.1_1: 74 files, 615.7KB
==> Installing glib dependency: libtirpc
==> Downloading https://ghcr.io/v2/homebrew/core/libtirpc/manifests/1.3.6
Already downloaded: /home/builder/.cache/Homebrew/downloads/ad470b269e765b4f8dbba62656db2fc55c8d0b670558da2254d6e58bbaeae63d--libtirpc-1.3.6.bottle_manifest.json
==> Pouring libtirpc--1.3.6.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/libtirpc/1.3.6: 86 files, 1MB
==> Installing glib dependency: python@3.13
==> Downloading https://ghcr.io/v2/homebrew/core/python/3.13/manifests/3.13.0_1
Already downloaded: /home/builder/.cache/Homebrew/downloads/9b17bb2e9c677d8c64b5adc51ee37d3de0d768a86fc8a8526255a2bf36aeb114--python@3.13-3.13.0_1.bottle_manifest.json
==> Pouring python@3.13--3.13.0_1.x86_64_linux.bottle.tar.gz
Error: Too many open files @ rb_sysopen - /home/linuxbrew/.linuxbrew/Cellar/python@3.13/3.13.0_1/lib/python3.13/lib-dynload/binascii.cpython-313-x86_64-linux-gnu.so

Just because I saw some open-files errors in the logs above i did a quick re-install to ensure it was installed properly

$ brew reinstall git-absorb
==> Downloading https://ghcr.io/v2/homebrew/core/git-absorb/manifests/0.6.15
Already downloaded: /home/builder/.cache/Homebrew/downloads/ea604bb223de6c8b54e36b873e7ed7e5c98624bde2b69e5f6345fe5ab4cb4b65--git-absorb-0.6.15.bottle_manifest.json
==> Fetching git-absorb
==> Downloading https://ghcr.io/v2/homebrew/core/git-absorb/blobs/sha256:94fa2414eb3c9ed63e09ab896610c45810e68d430e236696c6edd10990926008
Already downloaded: /home/builder/.cache/Homebrew/downloads/2e51714383558527701cfce1ab811666981452f61038575b209c79b081d06cf8--git-absorb--0.6.15.x86_64_linux.bottle.tar.gz
==> Reinstalling git-absorb
==> Pouring git-absorb--0.6.15.x86_64_linux.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /home/linuxbrew/.linuxbrew/etc/bash_completion.d
==> Summary
🍺  /home/linuxbrew/.linuxbrew/Cellar/git-absorb/0.6.15: 12 files, 2.2MB
==> Running `brew cleanup git-absorb`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

Let’s assume I have some fixes saves into a repo. Here I just updated some minor changes and spelling, though I couldn’t recall which commits those files originally came from:

builder@DESKTOP-QADGF36:~/Workspaces/htmlResume$ git branch --show-current
isaacreal
builder@DESKTOP-QADGF36:~/Workspaces/htmlResume$ git status
On branch isaacreal
Your branch is up to date with 'origin/isaacreal'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   experience/experience202201.json

no changes added to commit (use "git add" and/or "git commit -a")

So it looks like git absorb desires the changes to be staged first

builder@DESKTOP-QADGF36:~/Workspaces/htmlResume$ git absorb
Oct 22 11:43:29.766 WARN Will not fix up past commits not authored by you, use --force to override, commit: b9d30e686d9064a44e83a35c1e40572d20eea0ee
Oct 22 11:43:29.772 WARN No changes staged, try adding something to the index or set absorb.autoStageIfNothingStaged = true

It couldn’t find that commit

builder@DESKTOP-QADGF36:~/Workspaces/htmlResume$ git absorb
Oct 22 11:44:08.304 WARN Will not fix up past commits not authored by you, use --force to override, commit: b9d30e686d9064a44e83a35c1e40572d20eea0ee
Oct 22 11:44:08.309 WARN Could not find a commit to fix up, use --base to increase the search range.

even that didn’t work

$ git absorb --base 41c4f25eff224c50ce51c0251666cf2ac041425b
Oct 22 11:45:00.849 WARN Will not fix up past commits not authored by you, use --force to override, commit: b9d30e686d9064a44e83a35c1e40572d20eea0ee
Oct 22 11:45:00.850 WARN Could not find a commit to fix up, use --base to increase the search range.

I’ll just have to accept that “I don’t get it”.

I saw another writeup, which focused on using it in Windows. But even that author didn’t actually demo using it, rather explaining its usage.

So perhaps you can hit me up if you can explain it further.

Github Desktop

I feel rather silly - I never even knew Github had a Desktop app as I only ever use VisualStudio Code.

We can get it from the Download page

/content/images/2024/10/githubdesktop-01.png

Since I’m demoing this at home, I’ll use my non-work identity and stick to “Github.com”

/content/images/2024/10/githubdesktop-02.png

After I get past MFA, I can choose to which Orgs to give it permission.

/content/images/2024/10/githubdesktop-03.png

I then click Finish after verifying my identity

/content/images/2024/10/githubdesktop-04.png

I can then create tutorial repos, clone a repo from a URL, or open up one of my own

/content/images/2024/10/githubdesktop-05.png

I’ll then pull that fork I did of Rustpad

/content/images/2024/10/githubdesktop-06.png

By default it wants to use my “Documents” folder which is (super annoyingly) OneDrive

/content/images/2024/10/githubdesktop-07.png

I’ll change to my real local Documents folder then click clone

/content/images/2024/10/githubdesktop-08.png

It (accurately) identified I have changes to push back to the original author, so I left the default selection

/content/images/2024/10/githubdesktop-09.png

I can view my PR with files inline, which is kind of nice (not that I don’t like the WebUI, but this is quite clean)

/content/images/2024/10/githubdesktop-10.png

We can also see split differences

/content/images/2024/10/githubdesktop-11.png

I can do things like amend the commit

/content/images/2024/10/githubdesktop-12.png

Which would let me add comments to the latest commit I believe

/content/images/2024/10/githubdesktop-13.png

Most operations will kick us out to VSCode or the Github page.

/content/images/2024/10/githubdesktop-15.png

Allthough, I can still use it to see current commits and Pull Requests as well as compare to the upstream

/content/images/2024/10/githubdesktop-14.png

Summary

We looked a few developer tools today including some for visualization like OneFetch and Github Desktop and some for more complicated rebases like git-absorb.

Even though Github Desktop is very feature limited, it’s fast and might be useful to new GIT users. I plan to use OneFetch when having to service some repos where I don’t know the main authors.

I’m too old and ornery to change how I GIT commit so the chances of me using git absorb are pretty low, to be honest.

/content/images/2024/10/isaacjohnson_a_modern_sun_lit_software_office_with_young_hip_c_b9f62af4-a53d-4180-aa95-131a9bffbc73.png

GIT Developer OneFetch Github Absorb

Have something to add? Feedback? You can use the feedback form

Isaac Johnson

Isaac Johnson

Cloud Solutions Architect

Isaac is a CSA and DevOps engineer who focuses on cloud migrations and devops processes. He also is a dad to three wonderful daughters (hence the references to Princess King sprinkled throughout the blog).

Theme built by C.S. Rhymes