Fryboyter

Git - Bereits gesendete Commits zusammenfassen

Ich habe an mehreren Dateien in einem Git-Repository jeweils die gleiche Änderung durchgeführt. Hierfür habe ich pro Datei einen Commit erstellt und diese bereits zu Github übermittelt. Ein Commit hätte es in dem Fall auch getan. Wie kann man nun nachträglich die betreffenden Commits zu einem Commit zusammenfassen?

Als erstes führt man im lokalen Arbeitsverzeichnis git rebase -i HEAD~X aus. Anstelle von X gibt man die Anzahl der letzten Commits an die man zusammenfassen möchte.

Nun sollte automatisch ein Editor geöffnet werden und in den ersten Zeilen sollte man beispielsweise folgendes vorfinden.

pick 67426ab Commit-Nachricht
pick 56432tz Commit-Nachricht
pick 45643io Commit-Nachricht

Um aus diesen drei Commits einen Commit zu machen ersetzt man in Zeile 2 und 3 das pick mit squash. Das “pick” in der ersten Zeile wird nicht geändert. Abschließend speichert man das ganze ab.

Nun sollte erneut ein Editor geöffnet werden in dem man bei Bedarf die Commit-Nachricht anpassen kann. Da ich für alle drei Commits die gleiche Nachricht genutzt hatte, habe ich keine Änderungen vorgenommen.

Abschließend führt man noch git push –force origin HEAD aus um die Änderungen an Github zu senden. Sollte man einen anderen Alias für das Repository genutzt haben (origin ist Standard) muss man den Befehl entsprechend anpassen. Wer sich nicht sicher ist, kann in der Datei config im Verzeichnis .git nachsehen das im lokalen Arbeitsverzeichnis zu finden ist.

Sofern man nicht die einzige Person ist, die an den Dateien Änderungen vornimmt, sollte man anstelle –force besser –force-with-lease nutzen.

Schaut man sich nun die Historie des Repository an, wurden die betreffenden Commits zu einem Commit zusammengefasst.

OSBN

Claws Mail - Shortcuts ändern

Auf den ersten Blick ist es leider nicht so einfach ersichtlich, wie man die Shortcuts im E-Mail-Client Claws Mail ändern kann.

Als erstes öffnet man die Einstellungen (Menü Konfiguration -> Einstellungen…) und wählt dort in der linken Spalte ganz unten bei “Sonstiges” den Punkt “Vermischtes” aus. Dort aktiviert man dann “Benutzerdefinierte Tastenkürzel möglich” aus und klickt abschließend auf “Anwenden”.

Nehmen wir nun einmal an, man möchte den Menüpunkt “Löschen” einen Shortcut zuweisen (in der Standardkonfiguration gibt es, vermutlich aus Sicherheitsgründen, keine Zuweisung). Hierzu wählt man eine beliebige E-Mail mit einem Rechtsklick aus, so dass das Kontextmenü erscheint. Nun bewegt man den Maus-Cursor über das Wort Löschen und betätigt dann den gewünschten Shortcut. Dieser sollte dann neben dem jeweiligen Menüpunkt angezeigt werden.

Das ganze funktioniert auch in den normalen Menüs wie “Datei”. Nur das hierbei keine E-Mail ausgewählt werden muss.

Um eine versehentliche Änderung zu vermeiden, kann man abschließend den Punkt “Benutzerdefinierte Tastenkürzel möglich” wieder deaktivieren.

OSBN

VSCode - Snippet für Front Matter anlegen

Meine Artikel erzeuge ich mittels Markdown-Dateien. Am Beginn dieser Datei ist der sogenannte Front-Matter-Bereich vorhanden in dem Informationen wie der Titel, das Datum der Veröffentlichung oder die Tags eines Artikels hinterlegt werden.

Diesen Bereich jedes mal manuell zu erzeugen ist auf Dauer nervig. Der von mir verwendete statische Website-Generator Hugo bietet hierfür Templates an, so dass man mit einem Befehl wie hugo new vscode-snippet-fuer-front-matter-anlegen.md einen neuen Artikel anlegen kann.

Ich bevorzuge es allerdings alles mit dem Editor zu machen. Aktuell nutze ich VSCode. Dieser bietet sogenannte Snippets mit denen man Vorlagen erstellen kann.

Hierfür wählt man in den Einstellungen im Menü “Datei” “Benutzerausschnitte” aus. Im nun angezeigten Drop-Down-Menü wählt man “Neue globale Codeausschnittsdatei…” aus und gibt der Snippet-Datei einen aussagekräftigen Dateinamen.

Die nun angezeigte Datei füllt man mit folgendem Inhalt.

{
  "Blog post frontmatter": {
    "prefix": "fmc",
    "description": "Erzeugt Frontmatter für Hugo-Artikel",
    "body": [
      "---",
      "title: ${1}",
      "date: ${2:${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}T${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}+0100}",
	  "categories:", 
	  "- ${3}", 
	  "tags:",
    "- ${4}",
    "slug: ${5}",
      "---",
      "$0"
    ]
  }
}

In der ersten Zeile gibt man den Namen des Snippets an der im Editor angezeigt wird. Der Prefix dient als Shortcode mit dem man den Inhalt des Snippets schnell einfügen kann. Hier kann man auch etwas anderes eintragen. Ich habe mir für fmc (front matter create) entschieden.

Im Body wird der Inhalt des Snippets angelegt, der automatisch eingefügt werden soll. In meinem Fall wird mit --- der Front-Matter-Bereich begonnen. Dann folgt der Titel, das Datum, die Kategorien, die Tags sowie der Slug über den der Artikel erreichbar ist. Mit --- wird der Front-Matter-Bereich wieder beendet.

Abschließend speichert man die Datei ab. Legt man nun einen neuen Artikel an, trägt man in der Datei fmc ein. Dies sollte bewirken, dass ein Menü erscheint in dem man das Snippet ausführen kann. Macht man das, sollte automatisch folgender Inhalt eingetragen werden.

---
title: 
date: 2021-01-02T13:01:02+0100
categories:
- 
tags:
- 
slug: 
---


Im obigen Code-Beispiel werden dem einen oder anderen sicherlich ${1}, ${2} usw. aufgefallen sein. Dies sind Sprungmarken. Hat man mittels fmc das Snippet eingefügt, kann man mit der Tabulator-Taste diese Stellen der Reihe nach anspringen und somit die betreffenden Bereiche ausführen.

OSBN | Allgemein

Broot - Navigieren, Durchstöbern und Durchsuchen von Verzeichnisbäumen

Wie kann man broot am besten beschreiben? Vielleicht als Kombination aus tree und fzf auf Steroide. Oder vielleicht als eine Art Dateimanager.

Broot

Mit broot lassen sich mittel sogenanntem “fuzzy finding” Verzeichnisse suchen und deren Inhalt anzeigen. Es lassen sich aber damit auch Dateien anzeigen, neu anlegen, editieren, verschieben, Git Diffs durchführen oder per Shell in Verzeichnisse wechseln. Und noch einiges mehr. Ja Dateimanager mit fuzzy finding kommt der Sache wohl irgendwie am nächsten.

OSBN | Linux

Update auf Wallabag 2.4.0 - Row size to large

Bei Wallabag handelt es ich um ein Tool zum selbst hosten mit dem man interessante Internetseiten abspeichern kann um sie später zu lesen. Vor ein paar Tagen wurde Version 2.4.0 veröffentlicht auf die ich meine Instanz eben aktualisieren wollte.

Das Update ist leider mit der (gekürzten) Fehlermeldung “Syntax error or access violation: 1118 Row size too large.” abgebrochen und die Installation war nicht mehr nutzbar.

Die Ursache ist, dass in der Wallabag-Datenbank mindestens eine Tabelle das Zeilenformat “REDUNDANT” oder “COMPACT” hat. Die betroffenen Tabellen kann man sich mit folgender Datenbankabfrage anzeigen.

SELECT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) 
FROM information_schema.TABLES 
WHERE ENGINE = 'InnoDB' AND ROW_FORMAT IN('Redundant', 'Compact') 
AND TABLE_NAME NOT IN('SYS_DATAFILES', 'SYS_FOREIGN', 'SYS_FOREIGN_COLS', 'SYS_TABLESPACES', 'SYS_VIRTUAL', 'SYS_ZIP_DICT', 'SYS_ZIP_DICT_COLS');

Da sich die Ausgabe nur auf ein paar Tabellen beschränkt hat und ich gerade keine Lust auf eine komplexere Lösung habe, habe ich bei diesen kurzerhand das Zeilenformat manuell mit folgendem Befehl auf “DYNAMIC” geändert.

ALTER TABLE $TABLENAME ROW_FORMAT=DYNAMIC;

Anstelle von $TABLENAME trägt man eine der Tabellen ein die man mit der Datenbankabfrage angezeigt bekommen hat.

Hat man die betreffenden Tabellen entsprechend geändert hat, sollte das Update ohne Fehler abschließen und die betreffende Wallabag-Instanz sollte danach nutzbar sein

OSBN | Allgemein