zurück zum Artikel

Versionsverwaltung: Git 2.40 lernt Navigationssprünge in Emacs

Maika Möbus

(Bild: My Life Graphic/Shutterstock.com)

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.

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 [1] 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 [2] 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 [3] 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 [4]. Alle Änderungen, die insgesamt 88 Mitwirkende beigesteuert haben, sind in den Release Notes zu finden [5].

(mai [6])


URL dieses Artikels:
https://www.heise.de/-7545183

Links in diesem Artikel:
[1] https://www.heise.de/news/Aufgeraeumt-Emacs-ein-Urgrossvater-der-Texteditoren-erhaelt-neue-Online-Heimat-6279859.html
[2] https://git-scm.com/docs/gitglossary/2.40.0#Documentation/gitglossary.txt-aiddefbarerepositoryabarerepository
[3] https://www.heise.de/news/Versionsverwaltung-Git-2-37-Unerreichbare-Objekte-und-mehr-7156031.html
[4] https://github.blog/2023-03-13-highlights-from-git-2-40/
[5] https://github.com/git/git/blob/v2.40.0/Documentation/RelNotes/2.40.0.txt
[6] mailto:mai@heise.de