View on GitHub

Meta-Repository Workshop

Mono-repo eller mange repo? Prøv meta-repo! - JavaZone 2025

08 - Kodeendring på tvers av repositories

Mål

Lære å gjøre koordinerte kodeendringer på tvers av flere repositories.

Oppgave: Lag en “recent-activity” kommando

Lag et make target som viser hva som har skjedd siste 7 dager på tvers av alle repositories.

Steg 1: Se hva som har skjedd siste uke

Først, la oss se aktiviteten på tvers av alle repos:

# Se commits siste 7 dager med dato og tid
meta exec "git log origin/main --since='7 days ago' --reverse --oneline --pretty=format:'%ad %h %s' --date=format:'%Y-%m-%d %H:%M'"

Steg 2: Lag make target i hver repo

Vi lager et make target som kan kjøres på tvers av alle repos:

# Legg til make target i alle repositories  
meta exec "printf '\n\nrecent-activity:\n\t@git log origin/main --since=\"7 days ago\" --reverse --oneline --pretty=format:\"%%ad %%h %%s\" --date=format:\"%%Y-%%m-%%d %%H:%%M\"\n' >> Makefile"

# Verifiser at det ble lagt til
meta exec "tail -3 Makefile"

Steg 3: Test det nye make target

# Kjør den nye kommandoen på alle repos
meta exec "make recent-activity"

Steg 4: Commit endringen


# Legg til endringene
meta git add -p

# Commit med samme melding i alle repos  
meta exec "git commit -m 'Add recent-activity make target'"

# Se status
meta git status

Nå kan man i hvert uavhengig repo enkelt se hva som har skjedd siste uke med make recent-activity.


Ekstraoppgave: Legg til nytt priority-nivå “urgent”

Vi skal legge til et nytt priority-nivå “urgent” som skal være høyere enn “high”. Dette krever koordinerte endringer i alle tre repositories.

Steg 1: Analyser dagens tilstand

Først, la oss se hvor priority er definert på tvers av alle repos:


# Finn priority-definisjoner i ett søk
meta exec "grep -Ern 'high|HIGH' src/" --exclude todo-meta

Steg 2: Identifiser nødvendige endringer

Basert på søkeresultatet ser vi at “urgent” priority må legges til i:

Frontend (todo-frontend):

Backend (todo-backend):

Sorter (todo-sorter):

Steg 3: Start en feature branch pg gjør endringene

meta exec "git checkout -b add-urgent-priority" --exclude todo-meta

-> Gjør endringene som skal til i hvert repo

Steg 4: Forstå endringene

# Se forskjellen 
meta exec "git diff"

# Bygg alle prosjektene for å se at endringene er kompatible
meta exec "make build" --parallel

# Test at systemet fortsatt fungerer
meta exec "make test" --parallel

Steg 5: Commit med kontroll

# Gjennomgå endringene interaktivt før commit
meta exec "git add -p" --exclude todo-meta

# Commit med samme melding i alle repos
meta exec "git commit -m 'Add URGENT priority level - coordinated change'"

# Se status på tvers av repos
meta git status

Om du ikke blir ferdig før vi må videre

Bruk git stash save:

meta exec "git stash save 'WIP: adding urgent priority'" --exclude todo-meta
meta exec "git checkout main"

💡 Flere cross-repo muligheter

Meta-repo åpner for mange koordinerte endringer på tvers av repositories:

Build & CI/CD

Kode-modernisering

Infrastruktur

Dette er bare noen eksempler på hva som er mulig med meta-repo koordinering!

← Tilbake til oversikt → Workshop ferdig! Se slides for oppsummering