Zum Inhalt

plan zeigt unerwartete Änderungen

Ziel

Du weißt, woher die Änderungen in plan kommen, die nicht von dir sind, und plan zeigt danach nur noch deine eigene Änderung oder gar nichts.

Voraussetzungen

Kein apply, solange unklar ist, woher eine Änderung kommt

apply gleicht den Server an dein Repo an. Kommt eine Änderung in plan von jemand anderem, rollst du sie damit aus oder machst sie rückgängig, ohne zu wissen, was sie bewirkt.

Schritte

So findest du die Ursache:

flowchart TD
    start(["plan zeigt Änderungen,<br>die nicht von dir sind"])
    status{"git status:<br>eigene Änderungen offen?"}
    eigene["Schritt 1:<br>eigene alte Änderung<br>ausrollen oder verwerfen"]
    pull{"nach git pull --rebase<br>und plan noch da?"}
    fertig(["fertig"])
    log{"Schritt 3:<br>passt ein neuer Commit<br>zur Änderung?"}
    commit["Person fragen:<br>committet, aber<br>nicht ausgerollt?"]
    push["Schritt 4: Person fragen:<br>ausgerollt, aber<br>nicht gepusht?"]
    hand["Schritt 5: Drift<br>Person fragen, dann<br>ins Repo oder per apply<br>zurücksetzen"]

    start --> status
    status -->|ja| eigene
    status -->|nein| pull
    eigene --> pull
    pull -->|nein| fertig
    pull -->|ja| log
    log -->|ja| commit
    log -->|nein| push
    push -->|niemand| hand

1. Eigenen Stand prüfen

Bash
git status

Erwartet: nothing to commit, working tree clean. Zeigt git status geänderte Dateien, sind das deine eigenen, noch nicht ausgerollten Änderungen, und plan zeigt sie mit an. git diff zeigt, was das ist. Willst du sie behalten, roll sie nach Änderung ausrollen aus; sonst verwirf sie mit git restore <datei>.

2. Neuesten Stand holen und plan wiederholen

Bash
git pull --rebase
cue cmd plan

Erwartet: „No changes“. Dann fehlten dir nur die Commits der anderen, und du bist fertig.

3. Historie prüfen

Sieh nach, wer zuletzt an den Dateien gearbeitet hat, die zu den Änderungen in plan gehören:

Bash
git log -5 --format='%h %an %ar %s' -- <datei>

Erwartet: die letzten fünf Commits an der Datei mit Name, Zeitpunkt und Message, etwa 1a2b3c4 Anna 2 hours ago update hedgedoc to 1.12.1. Passt ein neuer Commit zu dem, was plan anlegen oder ändern will, hat die Person committet, aber nicht ausgerollt. Frag sie, ob die Änderung ausgerollt werden soll, und lass sie es selbst nach Änderung ausrollen tun.

4. Fragen, ob jemand ausgerollt und nicht gepusht hat

Will plan etwas auf einen älteren Stand zurücksetzen, etwa ein Image auf eine ältere Version oder einen Record löschen, den es bei deSEC gibt, hat wahrscheinlich jemand ausgerollt und nicht gepusht. Bei einem Host steht unter old: der Stand auf dem Host, unter new: der im Repo; bei DNS löscht - delete, was nur bei deSEC steht. Frag in Signal, wer zuletzt etwas ausgerollt hat, und warte, bis die Person ihre Commits gepusht hat. Danach weiter mit Schritt 2.

5. Drift klären

Hat niemand etwas ausgerollt, ist es Drift: Jemand hat von Hand auf dem Host oder in der Web-Oberfläche von deSEC etwas geändert. Frag in Signal, wer das war und warum. Steht bei einem Host nur ein Container unter Containers to start:, sucht vielleicht gerade jemand einen Fehler und hat ihn dafür gestoppt (siehe Was man von Hand darf).

  • Wird die Änderung gebraucht, übernimm sie ins Repo und roll sie nach Änderung ausrollen aus; plan zeigt dann keinen Unterschied mehr.
  • Wird sie nicht gebraucht, setz sie zurück:

    Bash
    cue cmd apply
    

    Erwartet: dieselben Änderungen wie bei plan, dann Continue? (yes/no); tippe yes.

Lässt sich nicht klären, wer die Änderung gemacht hat, entscheidet ihr gemeinsam in Signal, bevor jemand apply ausführt.

Prüfen

Bash
cue cmd plan

Erwartet: bei einem Host No changes detected. All units are up to date., bei DNS No changes. Infrastructure is up-to-date. Hast du die Anleitung mitten in Änderung ausrollen begonnen, zeigt plan jetzt nur noch deine eigene Änderung; mach dort weiter.

Wenn etwas schiefgeht