Fryboyter

Github mit Mercurial nutzen

Vor ein oder zwei Wochen habe ich mir eines meiner Git-Repository zerlegt. Da mich die Lösung viel Zeit, zu viele Nerven und zwei Commits gekostet hat, bin ich nun wieder bei Mercurial gelandet. Dieses Werkzeug mag zwar nicht so mächtig wie Git sein, die Fehlermeldungen sowie die Dokumentation sind meiner Meinung nach viel besser verständlich.

Allerdings will ich auch weiterhin Github aufgrund dessen weiter Verbreitung nutzen. Sei es nun um dort selbst etwas zu veröffentlichen oder um mich an Projekten Dritter zu beteiligen. Mercurial bietet hierfür ein Plugin, dass sich hg-git nennt. Damit kann man ein Git-Repository herunterladen und es wird lokal automatisch in ein Mercurial-Repository umgewandelt. Nimmt man nun Änderungen vor, werden diese dann vor dem Hochladen in ein Git-Repository so geändert, dass sie mit Git kompatibel sind. Die Einrichtung von hg-git ist zudem ziemlich einfach.

Ich gehe bei folgender Anleitung davon aus, dass sowohl Mercurial als auch python-dulwich auf dem Rechner installiert ist und das im Home-Verzeichnis das Verzeichnis Projekte existiert. Dem Verzeichnis kann man natürlich einen anderen Namen geben.

Zuerst wechselt man im Terminal Emulator seiner Wahl in das Verzeichnis Projekte und lädt dort die Dateien von hg-git herunter.

cd ~/Projekte
hg clone https://foss.heptapod.net/mercurial/hg-git hg-git

Alternativ kann man hg-git auch über die Paketverwaltung seiner Distribution installieren.

Als nächstes erweitert man die Datei .hgrc im Home-Verzeichnis um folgenden Inhalt. Falls die Datei noch nicht vorhanden ist, einfach anlegen und die drei Zeilen eintragen.

[extensions]
hgext.bookmarks =
hggit = ~/Projekte/hg-git/hggit

Zeile zwei aktiviert das Plugin Bookmarks das in diesem Fall Branches simuliert. Zeile drei aktiviert das eben heruntergeladene Plugin hg-git.

Im Verzeichnis Projekte laden wir nun mit folgendem Befehl ein Git-Repository herunter (die Github-Adresse sowie das Zielverzeichnis fryboyter.git bitte entsprechend an die eigenen Gegebenheiten anpassen).

hg clone git@github.com:Fryboyter/Hugo.git fryboyter.hg

Da hierbei von Git zu Merurial umgewandelt wird, kann dies je nach Größe des Repository etwas dauern.

Als nächstes wechselt man in das Verzeichnis in dem das nun erstellete Mercurial-Respository liegt. In diesem Beispiel also fryboyter.hg. Dort führt man abschließend noch den Befehl hg bookmark -f main aus. Anstelle von main muss man die Bezeichnung des Haupt-Branch angeben. Ansonsten erkennt Mercurial bei einem Push keine Änderungen.

Nun sollte alles funktionieren. Bei meinen Tests konnte ich zumindest problemlos von Github pullen und zu Github pushen. Mehr brauche ich in meinem Fall eigentlich auch nicht. Was mir bei der ganzen Aktion aufgefallen ist, dass das lokale Mercurial-Repository weniger als 30 MB groß ist. Das lokale Git-Repository hingegen belegt etwas mehr als 60 MB. Davon geht die Welt jetzt nicht unter aber es ist trotzdem ein interessantes Detail.

OSBN | Allgemein

I'll be back

Bestimmt kennen die meisten den Spruch “i’ll be back” den Arnold Schwarzenegger im Film Terminator zum Besten gibt. Und er hatte recht.

Jahrelang hatte ich den Terminal Emulator Terminator genutzt, da ich zum Beispiel dessen Tiling-Funktion geschätzt habe. Leider ist die Entwicklung im Jahre 2017 eingeschlafen. Zudem basiert die letzte veröffentlichte Version auf Python 2, was seit diesem Jahr offiziell “end of life” erreicht hat. Daher bin ich schon vor Längerem zu Tilix gewechselt. Dieses Projekt hat allerdings das gleiche Schicksal ereilt, so das es aktuell keine Weiterentwicklung gibt.

Aber manchmal kommen sie wieder. Anfang April haben einige Entwickler beschlossen das Projekt “Terminator” weiterzuführen. Das Projekt auf Launchpad konnte laut deren Aussage nicht übernommen werden, so dass es bei Github eine neue Heimat gefunden hat. Worüber ich sehr froh bin, da ich die grafische Oberfläche von Launchpad einfach nur schrecklich finde.

Mitte April wurde dann die Version 1.92 veröffentlicht. Die wohl wichtigste Änderung ist, dass Terminator nun Python 3 nutzt. Daher bin ich heute von Tilix wieder zu Terminator gewechselt und hoffe das ein weiterer Wechsel des Terminal Emulators nun in weiter Ferne liegt.

Bestimmt werden sich jetzt einige Fragen, warum nicht st? Oder warum nicht urxvt? Oder kitty? Die Antwort lautet wie so oft Geschmackssache. Und mir schmeckt eben Terminator.

OSBN | Linux

Dritte können nun Änderungen an meinen Artikeln vornehmen

Manchen Leuten ist scheinbar ab und zu sehr langweilig. Dieses Wochenende habe ich doch tatsächlich eine E-Mail mit Hinweisen auf den einen oder anderen Fehler in meinen Artikeln erhalten. Im Grunde waren es nur Rechtschreibfehler.

In der E-Mail wurde ich auf gefragt ob ich für solche Sachen nicht ein öffentlich zugängliches Repository anbieten kann. Kann ich. Es ist unter https://github.com/Fryboyter/Hugo erreichbar.

Aber würde ich selbst einen Artikel lesen und dann das Repository aufrufen und die Datei suchen wen ich einen Fehler finden würde? Eher nicht. Daher habe ich nun einen Link unterhalb der jeweilige Artikelüberschrift eingebaut, der direkt auf die betreffende Datei bei Github verweist.

Als erstes habe ich hierfür in der Konfigurationsdatei von Hugo (config.toml) den Bereich [params] um einen Verweis auf das Repository eingetragen.

[params]
ghrepo = "https://github.com/Fryboyter/Hugo/"

Als nächstes habe ich das verwendete Theme (single.html und list.html) von fryboter.de wie folgt erweitert.

| <a href="{{.Site.Params.ghrepo}}edit/master/content/{{.File.Path}}" >Bei Github bearbeiten</a>

Hiermit wird das in der Datei conifg.toml hinterlegte Verweis auf das Respository genutzt. Dieser wird dann einfachum edit/master/content/ erweitert, da sich dieser Teil nicht ändert. Ganz am Schluss wird mit {{.File.Path}} auf die betreffende Datei verlinkt.

Im Grunde ist das mal wieder ziemlich simpel. Hugo gefällt mir immer mehr.

OSBN | Allgemein

Github - Benachrichtigungen bei neuen Veröffentlichungen

Will man bei Github darüber informiert werden, sobald ein Projekt eine neue Version veröffentlicht hat, musste man kreativ werden. Wer einen RSS-Reader nutzt, hat es am leichtesten, da es es hier reicht den Link auf die Release-Seite um .atom zu erweitern (z. B. https://github.com/bolt/bolt/releases.atom).

Wer allerdings eine Benachrichtigung per E-Mail bevorzugt (wie ich) der musste noch kreativer werden und beispielsweise gut abgehangene Tools wie rss2email oder vergleichbare Dienste wie IFTTT nutzen. Feature Requests, die teilweise schon ein paar Jahre alt sind, zeigen aber, dass viele Nutzer es lieber hätten, wenn Github eine solche Benachrichtigung “out of the box” anbieten würde. Viele werden die Hoffnung schon aufgegeben haben. Aber manchmal dauert es “nur” etwas länger. Als ich mich eben bei Github angemeldet hatte, bekam ich einen Hinweis angezeigt, dass man sich nun auch über neue Veröffentlichungen informieren lassen kann. Zu finden ist das ganze unter der Schaltfläche “Watch”.

Github Watch

Ich habe bei einigen Projekten die mich interessieren mal “Release only” ausgewählt. Mal schauen was passiert.

OSBN | Allgemein

Wie Anfänger bei Projekten auf Github mitwirken können

Oft findet man auf Github das eine oder andere Projekt bei dem man merkt, dass man auch mithelfen könnte obwohl man nicht programmieren kann. Zum Beispiel indem man eine Dokumentation erstellt oder verbessert. Oder indem man einfach Sprachdateien erstellt.

Änderungen kann man aber bei vielen Projekten nicht einfach per E-Mail an den Entwickler schicken, sondern muss hierfür einen Pull Request bei Github erstellen. Spätesten an dieser Stelle klinken sich dann oft diejenigen aus, die mit Programmieren nichts am Hut haben. Zumal man oft sogar ziemlich schroff abgefertigt wird, wenn man es trotzdem per E-Mail versucht (was ich leider aus eigener Erfahrung bestätigen kann).

Auf Github wurde nun ein Projekt gestartet, das Anfängern den Einstieg erleichtern soll. So wird zum Beispiel erklärt, wie man ein Projekt forkt, Änderungen vornimmt und dann schlussendlich einen Pull Request erstellt. Zudem gibt es noch tiefer gehende Anleitungen um zum Beispiel einen Commit zurück zu ziehen oder wie man bei einem Merge Conflict verfährt. Teile dieser Anleitung sind bereits auch in diverse Sprachen übersetzt worden, so dass man nicht einmal der englischen Sprachen mächtig sein muss um dieser folgen zu können.

Linux | OSBN