Hargnemine — commit ja tagasipööramine
Versiooni oma repositooriumid nagu koodi. Commit külmutab forki muutumatuks kujutiseks; branch annab sellele nime; checkout muudab iga commit’i uuesti värskeks kirjutatavaks forkiks. Selles juhendis teeme teadaolevalt töötavast olekust commit’i, langetame päris PostgreSQL tabeli ja saame kõik read tagasi sekunditega.
Vaata juhendvideot
Mudel
Commit’id ei muutu kunagi — need keelduvad isegi ühendamisest. Forkid ei oota kunagi — checkout on peaaegu kohene reflink-kloon. Täielik mõttemudel on kirjas hargnemise juhendis.
Tee kontrollpunkt
Markerifail teeb versiooni nähtavaks ja päris andmebaas muudab tagasipöörамise sisukaks: customers tabel hoiab kolme rida.
rdc term connect --machine <machine-name> --repository app:work --command 'echo v1 > version.txt && cat version.txt' Kirjutage oma oleku esimene versioon töötavasse forki.
rdc term connect --machine <machine-name> --repository app:work --command 'docker exec db psql -U app -d app -c "SELECT count(*) FROM customers"' Forkis töötab ka päris PostgreSQL andmebaas: customers-tabel sisaldab kolme rida.
rdc repo commit --name app:work --message 'v1 baseline' --machine <machine-name> Tehke töötavas forkis commit: kogu repository olek, andmebaas kaasatud, külmutatakse muutumatuks nimega hetktõmmiseks.
rdc repo branch --branch stable --name app:work Looge commitile osutav haru, inimloetav nimi külmutatud oleku jaoks.
Commit talletab kõik: failid ja PostgreSQL andmekataloogi. stable branch nimetab nüüd selle külmutatud oleku.
Jätka tööd
rdc term connect --machine <machine-name> --repository app:work --command 'echo v2 > version.txt && cat version.txt' Jätkake tööd: fork muutub, commititud ajalugu jääb külmutatuks.
Katastroof
Riskantne muutus langetab tabeli. Seejärel kinnitab päring, et kahju on päris.
rdc term connect --machine <machine-name> --repository app:work --command 'docker exec db psql -U app -d app -c "DROP TABLE customers"' Riskantne muudatus eemaldab töötavas forkis customers-tabeli.
rdc term connect --machine <machine-name> --repository app:work --command 'docker exec db psql -U app -d app -c "SELECT count(*) FROM customers"' Tabeli päring ebaõnnestub nüüd: relatsioon "customers" ei ole olemas. Andmed on töötavast forkist tõesti kadunud.
ERROR: relation "customers" does not exist. Kolm rida, kadunud. Päriselus on see hetk, mil kõht vajub — siin aga on see edasise lahenduse ettevalmistus.
rdc repo commit --name app:work --message 'v2 risky change' --machine <machine-name> Tehke ka uuele olekule commit, eemaldatud tabel kaasatud. Ajalugu kasvab nagu git log.
rdc repo log --name app:work --machine <machine-name> Vaadake repo log abil commit-ajalugu läbi: sõnumid, autorid, vanemad.
Ajalugu jäädvustab, mis tegelikult juhtus, katki olek kaasa arvatud: v2 risky change peal, v1 baseline all.
Pöördu tagasi sekunditega
rdc repo checkout --ref stable --from app:work --tag rollback --machine <machine-name> Checkoutige stable-haru värskesse kirjutatavasse forki, peaaegu kohene tänu copy-on-write'ile.
rdc repo up --name app:rollback --machine <machine-name> Käivitage rollback-fork. See töötab töötava forkiga kõrvuti.
rdc term connect --machine <machine-name> --repository app:rollback --command 'cat version.txt' Lugege rollback-forkis märgisfaili: esimene versioon, täpselt nagu commititud.
rdc term connect --machine <machine-name> --repository app:rollback --command 'docker exec db psql -U app -d app -c "SELECT count(*) FROM customers"' Küsige rollback-forkis customers-tabelit: kolm rida, täpselt nagu commititud. Rollback taastas andmebaasi, mitte ainult failid.
Tagasipööratud fork loeb v1 ja customers tabel on tagasi kõigi kolme reaga. Tagasipööramine taastas andmebaasi, mitte ainult faile. Midagi pole üle kirjutatud: töötaval forkil on endiselt teine versioon ja video avab mõlemad VS Code’is selle tõestamiseks.
Edasi: Elus migratsioon.