If you squint hard enough, git kinda behaves like blockchain. Both use Merkle tree structures. But luckily, git doesn't have a consensus mechanism - control of a specific branch is centralised to whoever has write access.
One of the main reason I dislike blockchain stuff is that data can not be deleted at all. That would invalidate the head of the chain.
Git has a similar effect: You can theoretically change something in the history. But you need to recreate everything after that, invalidate all commit signatures, and annoy everything who is currently working on the tree.
@getimiskon@fedi.getimiskon.xyz Isn't the concept of a blockchain much, much older than git?
@sigmasternchen Genau das würde ich eigentlich als Vorteil ansehen. Und an Git stört mich gerade, dass die History veränderbar ist, z.B. mit rebase. Ein Repository sollte "dokumentenecht" sein.
@ls@social.lsnet.eu Ich verstehe den Gedanken, aber hin und wieder passieren Fehler. Access Tokens, Private Keys und Passwörter kann man rotieren, aber vielleicht will man ja auch nicht Nutzernamen oder Tenant IDs für Cloud Provider öffentlich haben. Oder vielleicht will ich anonym bleiben, aber hatte in git für einen Commit eine falsche Identity konfiguriert.
Bei Blockchain wird das Problem nochmal größer, weil jeder Inhalte einstellen kann, und alle, die auf der Blockchain arbeite eine Kopie davon haben. Man könnte da zB illegale Inhalte einstellen, und danach alle, die auf der Blockchain arbeiten, potentiell anzeigen.
@sigmasternchen Man kann die Chain auf einen alten Stand zurücksetzen wenn's gar nicht anders geht. Zur Not ein Backup einspielen. Aber es darf doch nicht jeder im Repo rumlöschen.
Meine Erwartung an Git ist, dass man - egal welchen Unsinn man macht - immer wieder zu einem alten Stand zurückkommt, denn das ist der Zweck. (Direkte Manipulationen an der DB natürlich ausgenommen.)
Grundsätzlich wird man damit leben müssen, dass sich veröffentlichte Daten nicht zurückrufen lassen. Git klont auch.
@ls@social.lsnet.eu Ich verstehe, wo du herkommst, aber ich sehe das tatsächlich anders.
Ich finde, man sollte in der Theorie immer alles verändern können - auch historisch - wenn man das will. Alles andere ist dann eine Prozessfrage - deswegen kann man auf Github und Co ja bestimmte Branches gegen force-pushes schützen, damit eben nicht jeder im Repo rumlöschen kann. Aber ich finde, die Möglichkeit dazu sollte es trotzdem geben, dass ich in meinem Repo alles machen kann.
Mit Rebase und so weiter hat das erstmal nichts zu tun, finde ich. Gerade so Dinge wie Umbenennen von einem User in der Vergangenheit kann ich mit Rebase sowieso nicht machen - dazu muss ich direkt in die Datenbank und dann force-pushen - wenn es ein remote Repo gibt.