Git sync
Git sync maakt van een deel van je tenantconfiguratie een Git-beheerde gewenste staat.
Niet-technische gebruikers kunnen gewoon via de web-UI blijven werken, terwijl technische gebruikers
dezelfde configuratie ook via GitHub en een lokale IDE kunnen beheren.
Git sync is tenantbreed qua repo-instellingen, maar de actieve branch en werkmap zijn
per gebruiker. Twee editors kunnen dus tegelijk aan dezelfde tenant werken zonder elkaars
checkout direct te overschrijven.
Wat in Admin → Config blijft
- Repo koppelen of aanpassen voor de tenant.
- GitHub token of publieke remote instellen.
- Tenant-sleutels aanmaken of intrekken voor directe
git-server API-calls.
- Repo-status, diff en recente commits controleren.
- Export naar werkmap, Commit en Apply uitvoeren vanuit dezelfde beheerpagina.
Wat editors in de topbar doen
- Branch wisselen of een nieuwe branch aanmaken.
- Commit, Push, Pull, Apply en Reset uitvoeren zonder terug te gaan naar Admin.
- De huidige branch, commit, dirty status en sync-status ten opzichte van remote zien.
Wat Git sync nu beheert
- Datasources
- Dashboard pages en page views
- Elements
- Tenantconfiguratie zonder gevoelige server-side velden
- Tenant runtime vars
Deze resourcefamilies worden naar een canonieke repo-structuur geschreven. De repo is dus geen ruwe
Firestore-dump, maar een leesbare configuratieboom met YAML en losse SQL-bestanden waar dat logisch is.
Secrets blijven buiten Git. Dat geldt ook voor gevoelige tenantconfig-velden zoals LLM-config en
notification sender-credentials. Runtime vars kunnen wel in Git; runtime secrets niet.
Verwachte repo-structuur
tenant.yaml
tenant-config/
resource.yaml
runtime-vars/
<var-id>/
resource.yaml
datasources/
<datasource-id>/
resource.yaml
query.sql
pages/
<page-id>/
resource.yaml
views/
<view-id>/
resource.yaml
query.sql
elements/
<element-id>/
resource.yaml
main.py
requirements.txt
files/...
Eerste setup
- Ga naar Administration → Config → Git sync.
- Zet Git sync aan voor de tenant.
- Vul Remote URL, Remote name en de standaardbranch in.
- Kies of de remote publiek is of een GitHub token nodig heeft.
- Sla de tenant Git sync instellingen op.
- Gebruik daarna Export naar werkmap als je een bestaande tenant voor het eerst in Git wilt zetten.
Voor private GitHub repo’s gebruik je een GitHub token in de tenantconfiguratie. Dat token is dus voor
git-server → GitHub authenticatie, niet voor eindgebruikerslogin in Dashview.
Bootstrap van een bestaande tenant
Gebruik Export naar werkmap wanneer een bestaande tenant nog niet volledig in de repo staat.
Deze actie:
- schrijft de huidige ondersteunde tenantresources naar de repo in
git-server
- vult ontbrekende mappen zoals
tenant-config/ en runtime-vars/ aan
- laat de wijzigingen als gewone lokale Git-wijzigingen in je werkmap staan
Daarna review je de diff, maak je bewust een commit met je eigen commitbericht en push je die commit naar de
gekozen branch.
Dagelijkse workflow in de web-UI
Na de bootstrap hoort normaal werk meestal niet meer via export te lopen. Gewone web-UI saves schrijven voor
ondersteunde resourcefamilies al door naar de Git-werkmap van de gebruiker en maken de repo dus dirty,
maar ze maken niet automatisch een commit.
- Commit: opent een dialoog waarin je zelf het commitbericht invult.
- Push: stuurt je lokale commits naar de remote branch.
- Pull: haalt de remote branch binnen in je gebruikerswerkmap.
- Apply: schrijft de huidige repo-inhoud terug naar de live tenantresources in Dashview.
- Reset: zet je gebruikerswerkmap hard terug naar de remote branch en gooit ongepushte lokale Git-wijzigingen weg.
- Export naar werkmap: gebruik je vooral voor backfill of wanneer je handmatig de huidige Firestore-status opnieuw naar Git wilt schrijven.
Voor Elements publiceert Apply niet automatisch. Als een repo-wijziging de saved draft van een
bestaand gepubliceerd Element aanpast, blijft de laatste gepubliceerde version actief en verschijnt het Element
in het overzicht als Updated draft. Publiceer het Element daarna handmatig om die draft live te maken.
Repo-status lezen
- Clean betekent dat je werkmap geen niet-gecommitte wijzigingen heeft.
- X local changes betekent dat ondersteunde saves al in je werkmap staan maar nog niet gecommit zijn.
- X ahead / X behind vergelijkt je lokale branch met de remote branch.
- No remote branch yet betekent dat je lokale branch nog niet op remote bestaat.
Wat Apply wel en niet doet
- Wel: bestaande repo-bestanden opnieuw inlezen en die resources updaten in Dashview.
- Niet: de hele tenant exact spiegelen of alles verwijderen wat niet in Git staat.
- Niet: een lege repo interpreteren als “verwijder de tenant”.
- Niet: gewijzigde Elements automatisch publiceren; apply werkt alleen de draft bij.
Dat betekent dat Apply veiliger is dan een destructieve full reconcile. Je kunt wel een
oudere versie van een page, datasource, Element, tenantconfig of runtime var terugzetten, maar niet per ongeluk de hele
tenant weggooien doordat een map ontbreekt.
Lokale IDE workflow
Voor technische gebruikers is de gedeelde waarheid de externe Git remote, bijvoorbeeld GitHub. Je IDE werkt
dus niet direct tegen de interne git-server repo, maar tegen dezelfde remote als Dashview.
- Clone de GitHub repo lokaal.
- Werk in een branch en push naar GitHub.
- Ga terug naar Dashview en klik Pull.
- Klik daarna Apply om de gepullte Git-status live te maken in Dashview.
De andere richting werkt ook: wijzigingen die je in Dashview maakt komen als lokale wijzigingen in de
gebruikerswerkmap van git-server, waarna je zelf Commit en daarna
Push uitvoert.
Branches en conflicts
- Branchwissels zijn per gebruiker/workspace.
- Een gewone branch switch gooit geen lokale wijzigingen weg.
- Als push faalt door remote conflicts, los je die bij voorkeur op in GitHub of je lokale IDE op.
- Als je gewoon terug wilt naar de remote branch, gebruik dan Reset.
Reset is de expliciete destructieve actie. Dat is bewust: een simpele branchwissel mag niet stilletjes
ongepushte lokale commits of merge-state weggooien.
Tenant git-server keys
Tenant Git-server keys zijn niet hetzelfde als je GitHub token. Ze zijn bedoeld voor directe programmatische
toegang tot git-server, bijvoorbeeld vanuit een CLI, CI-job of eigen script.
- GitHub token: laat
git-server pull/push doen tegen je private GitHub repo.
- Tenant git-server key: laat een tool of script direct praten met
git-server.
Gebruik je alleen de gewone Dashview web-UI en GitHub zelf, dan heb je die tenant key meestal niet nodig.