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.
(Bild: My Life Graphic/Shutterstock.com)
- 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.
Git-Sprünge in Emacs und der Wegfall eines Workarounds
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
Git-Bestandteile in C statt Perl und Shell
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)