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.
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 [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
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 [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
Copyright © 2023 Heise Medien