git: error: GH007: Your push would publish a private email address.

Vor kurzem bekam ich beim Arbeiten mit git und GitHub diese Fehlermeldung:

remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails
To https://github.com/username/some-repo-name
! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'https://github.com/username/some-repo-name'

Ursache für diese Fehlermeldung waren zwei Punkte. Der erste Punkt ist eine bestimmte E-Mail-Einstellung auf GitHub selbst: Dort kann man einstellen, dass ein Push auf GitHub nicht erfolgt, wenn in den Metadaten die eigene E-Mail-Adresse mitgeliefert wird.

Der zweite Punkt ist die E-Mail-Konfiguration von git auf der Maschine, auf der man arbeitet. Um diese Fehlermeldung zu umgehen und trotzdem seine E-Mail-Adresse nicht zu veröffentlichen, kann man folgende Schritte tun. Als erstes konfiguriert man seine E-Mail-Adresse um. Hierbei kann man eine standardmäßige noreply-E-Mail von GitHub verwenden:

git config --global user.email "username@users.noreply.github.com"

Wichtig: Statt username in diesem Kommando sollte man seinen eigenen Benutzernamen verwenden. Nun muss man in dem lokalen git-Repository die Metadaten ändern. Das kann man durch den folgenden Befehl erreichen:

git commit --amend --reset-author

Jedenfalls musste ich danach nichts mehr machen, außer einen neuen Push zu probieren.

git push origin master

Will man aber nochmal prüfen, ob in den Metadaten jetzt die richtige, “anonyme” GitHub-E-Mail-Adresse steht, kann man folgendes Kommando ausführen:

git log --raw

Wenn es sich um ein größeres Repo handelt, kann das Log länger werden. Ich hatte jetzt nur ein kleineres Repo zu Hand, da war der Befehl kein Problem.

Azure SLQ Server mit Azure CLI erstellen

Mit Azure CLI kann man mit wenigen Kommandos einen Azure SQL Server aufsetzen.

Zuerst wird eine eine Ressourcegruppe benötigt. Diese wird mit Hilfe folgenden Kommandos erstellt:

az group create --name "rg_sqlserver_example1" --location westeurope

Den Standort und den Namen muss man gegebenenfalls anpassen. Anschließend erstellt man den SQL Server in Azure mit folgendem Kommando:

az sql server create --name "somesqlservername123" \
--resource-group "rg_sqlserver_example1" \
--location westeurope \
--admin-user "someadminname" \
--admin-password "<yourpassword>"

Auch hier sollte man die Einstellungen für die eigenen Zwecke anpassen. Wenn alles gut gegangen ist, müsste man den SQL Server auch im Portal sehen:

Anschließend kann man jetzt noch eine Datenbank erstellen:

az sql db create --resource-group "rg_sqlserver_example1" \
--server "somesqlservername123" \
--name "database_name_1"

Auch hier müsste man nach einer Weile die neu erstellte Datenbank im Portal sehen:

Es gibt auch noch andere Wege, wie man ein SQL Server in Azure aufsetzt. Mehr dazu in diesem kurzen Video (ist aber auch englisch):

LXC, LXD und “Error: not found”

Beim Lernen wie LXC und LXD funktionieren ist mir eine Meldung recht häufig aufgetreten. Das war die Fehlermeldung

Error: not found

Wie es sich herausgestellt hat, habe ich ein LXD Kommando ausgeführt und wollte das auf einen Container anwenden, den ich aber mit LXC erstellt hatte. Das führt aber zur Frage: Was ist der Unterschied zwischen LXC und LXD.

LXC ist eine Abkürzung für “Linux Container”. Sie funktioniert wie eine normale VM, jedoch mit weniger Overhead als andere Hypervisor.

LDX ist hingegen eine Erweiterung von LXC. LXD ist ein Systemdaemon und dieser verbindet sich mit libxlc, der Bibliothek, auf der LXC aufgebaut ist. Um mit dem Daemon zu kommunizieren, benutzt man eine REST API. LXD ist hierbei der neue Weg, Container zu erstellen und zu verwalten und ist eine Alternative zu den LXC Werkzeugen. Es wird abgerate, LXC und LXD gleichzeitig laufen zu lassen.

Den Unterschied zwischen LXC und LXD bemerkt man auch an den Kommandos, die man aufruft. Kommandos, die ein Bindestrich enthalten wie z.B. lxc-ls oder lxc-create sind LXC Kommandos. Kommandos ohne ein Bindestrich wie z.B. lxc info kommen von LXD.

Quellen