Versionsverwaltung: Git 2.40 lernt Navigationssprünge in Emacs

Nicht nur in Vim, sondern auch in Emacs lässt sich nun git jump nutzen. Die Migration weiterer Git-Bestandteile von Perl und Shell zu C schreitet voran.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen

(Bild: My Life Graphic/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Maika Möbus

Git 2.40 markiert das erste Release der Versionsverwaltungssoftware in diesem Jahr. Es versieht das optionale Tool git jump mit Emacs-Support, vereinfacht die Anwendung von git check-attr und treibt die Migration älterer Git-Bestandteile von Perl und Shell zu C weiter voran.

2018 führte Git 2.19 das optionale Tool git jump im contrib directory ein. Es wrappt andere Git-Befehle wie git grep und fügt deren Ergebnisse in der Quickfix-Liste des Texteditors Vim ein. Damit lässt sich beispielsweise git jump grep foo schreiben und in Vim schnell zwischen allen "foo"-Matches navigieren. Mit diff und merge lässt sich git jump ebenfalls verwenden. In Git 2.40 hat das Tool gelernt, neben Vim auch mit dem Texteditor Emacs umzugehen.

Emacs-Nutzerinnen und -Nutzer können git jump wie folgt ausprobieren:

M-x grepgit jump --stdout grep foo

Neuerungen gibt es auch für den Befehl git check-attr. Er dient dazu, festzustellen, welche gitattributes für einen bestimmten Pfad festgelegt sind. Diese lassen sich in einer oder mehreren .gitattributes-Dateien im Repository definieren. Bisher benötigte git check-attr einen Index, sodass in einem Bare Repository ein Workaround für das temporäre Lesen im Index nötig war:

TEMP_INDEX="$(mktemp ...)" 

git read-tree --index-output="$TEMP_INDEX" HEAD 
GIT_INDEX_FILE="$TEMP_INDEX" git check-attr ... 

Dagegen kann git check-attr in Git 2.40 mithilfe des neuen --source= nach .gitattributes scannen. Das gilt auch für ein Bare Repository:

$ git check-attr -a --source=HEAD^{tree} git.c 
git.c: diff: cpp 
git.c: whitespace: indent,trail,space

Das Git-Team arbeitet bereits seit einigen Jahren daran, ursprünglich in Form von Perl- oder Shell-Implementationen vorliegende Bestandteile von Git als modernere C-Äquivalente neu zu schreiben. Neben der Möglichkeit, Git-eigene APIs nativ zu verwenden, soll das Konsolidieren von Git-Befehlen in einen einzigen Prozess zu einer beschleunigten Ausführung von Git-Befehlen auf Plattformen wie Windows führen, die hohe Prozess-Start-up-Kosten aufweisen.

Im neuen Release ist nun auf Basis jahrelanger Vorarbeit git bisect als natives Built-in vollständig in C implementiert. Daneben hat das Git-Team die Legacy-Implementierung git add --interactive entfernt. Sie entstand zunächst als Shell-Skript und wurde als natives Built-in in Git 2.26 neu eingeführt, mit dem sich sowohl die alte als auch neue Variante mithilfe der experimentellen Konfiguration add.interactive.useBuiltin nutzen ließen. Da der Wert standardmäßig seit Version 2.37 bei true lag, hat sich das Entwicklungsteam nun entschieden, die Legacy-Variante endgültig zu entfernen.

Diese und weitere Highlights in Git 2.40 beleuchtet ein GitHub-Blogeintrag. Alle Änderungen, die insgesamt 88 Mitwirkende beigesteuert haben, sind in den Release Notes zu finden.

(mai)