Skip to content

Commit 5e0a0f2

Browse files
committed
📚 Update README: Document intelligent change detection system
🆕 COMPREHENSIVE DOCUMENTATION UPDATE ## New Content Added: ### Intelligent Change Detection System - Documents YAML hash monitoring and remote repository tracking - Explains performance optimization (seconds vs minutes) - Details the new selective rebuild logic ### Updated Workflow Documentation - Enhanced Mermaid sequence diagram with change detection flow - Updated make targets with new utility commands - Added force-build options and cache management ### Technical Implementation Details - Documents check_changes.sh script functionality - Explains cache system (.cache/ directory) - Details GitHub API integration for remote monitoring ### Repository Mapping Documentation - digitalesysteme → VL_EingebetteteSysteme - prozprog → VL_ProzeduraleProgrammierung - softwareentwicklung → VL_Softwareentwicklung - robotikprojekt → VL_Robotikprojekt ### Troubleshooting Section - Common scenarios and solutions - Performance metrics and expectations - Remote repository update handling ### Updated File Structure - Documents new files: check_changes.sh, .cache/, .gitignore - Shows current PDF naming examples - Reflects improved Makefile capabilities ## Key Improvements: ✅ Comprehensive coverage of all new features ✅ Clear performance expectations documented ✅ Troubleshooting guide for common issues ✅ Technical details for maintenance and debugging ✅ Updated workflow diagrams and examples The README now fully reflects the production-ready intelligent build system with remote repository monitoring capabilities.
1 parent 9402e7e commit 5e0a0f2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+169
-69
lines changed

README.md

Lines changed: 141 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
Course-Overview der Arbeitsgruppe Softwareentwicklung und Robotik (TU Freiberg)
44

5-
## Asset-Generierung und Deployment
5+
## Intelligente Asset-Generierung mit Change-Detection
66

7-
Die Kurs-Assets werden lokal generiert und intelligent deployed. Der Ablauf nutzt ein optimiertes Makefile für die lokale Entwicklung und eine schlanke GitHub Action als Fallback.
7+
Die Kurs-Assets werden lokal generiert mit einem intelligenten Change-Detection-System, das sowohl lokale YAML-Änderungen als auch Remote-Repository-Updates überwacht. Das System nutzt ein optimiertes Makefile für die lokale Entwicklung und eine schlanke GitHub Action als Fallback.
88

99
```mermaid
1010
sequenceDiagram
@@ -14,19 +14,27 @@ sequenceDiagram
1414
participant Action as GitHub Action
1515
participant Pages as GitHub Pages
1616
17-
Note over Dev,Pages: Lokaler Entwicklungsworkflow (Standard)
17+
Note over Dev,Pages: Intelligenter Entwicklungsworkflow mit Change-Detection
1818
1919
Dev->>Make: make digitalesysteme
20-
Make->>Make: liaex -i digitalesysteme.yml
21-
Note right of Make: Generiert HTML + PDFs
22-
Make->>Make: mkdir -p assets/digitalesysteme/pdf
23-
Make->>Make: cp *.pdf assets/digitalesysteme/pdf/
24-
Note right of Make: Organisiert Assets in Kursordner
25-
Make->>Make: sed -i 's|assets/pdf/|assets/digitalesysteme/pdf/|g'
26-
Note right of Make: Korrigiert PDF-Pfade in HTML
27-
Make->>Git: git add . && git commit --amend
28-
Make->>Git: git push --force
29-
Note right of Make: Automatischer Git-Workflow
20+
Make->>Make: ./check_changes.sh digitalesysteme
21+
Note right of Make: Prüft YAML-Hash + Remote-Repository
22+
23+
alt Änderungen erkannt
24+
Make->>Make: liaex -i digitalesysteme.yml
25+
Note right of Make: Generiert HTML + PDFs
26+
Make->>Make: mkdir -p assets/digitalesysteme/pdf
27+
Make->>Make: cp *.pdf assets/digitalesysteme/pdf/
28+
Note right of Make: Organisiert Assets in Kursordner
29+
Make->>Make: sed -i 's|assets/pdf/|assets/digitalesysteme/pdf/|g'
30+
Note right of Make: Korrigiert PDF-Pfade in HTML
31+
Make->>Git: git add . && git commit --amend
32+
Make->>Git: git push --force
33+
Note right of Make: Automatischer Git-Workflow
34+
else Keine Änderungen
35+
Make->>Dev: ⏭️ Übersprungen (Sekunden statt Minuten!)
36+
Note right of Make: Verwendet existierende Assets
37+
end
3038
3139
Git->>Action: Push Trigger
3240
Action->>Action: git diff --name-only HEAD~1 HEAD
@@ -60,18 +68,25 @@ sequenceDiagram
6068
## Verfügbare Make-Targets
6169

6270
```bash
63-
# Einzelne Kurse generieren
64-
make digitalesysteme # Digitale Systeme / Eingebettete Systeme
65-
make prozprog # Prozedurale Programmierung
66-
make softwareentwicklung # Softwareentwicklung
67-
make robotikprojekt # Robotikprojekt
68-
make index # Übersichtsseite
69-
70-
# Alle Kurse
71-
make all
72-
73-
# Hilfe anzeigen
74-
make help
71+
# Intelligente Kurs-Generierung (mit Change-Detection)
72+
make digitalesysteme # ⚡ Überspringt wenn keine Änderungen
73+
make prozprog # ⚡ Überspringt wenn keine Änderungen
74+
make softwareentwicklung # ⚡ Überspringt wenn keine Änderungen
75+
make robotikprojekt # ⚡ Überspringt wenn keine Änderungen
76+
make index # Übersichtsseite (keine Remote-Überwachung)
77+
78+
# Alle Kurse mit Change-Detection
79+
make all # Nur geänderte Kurse werden regeneriert
80+
81+
# Erzwungene Neugenerierung (ignoriert Cache)
82+
make force-build-digitalesysteme # Einzelner Kurs
83+
make force-all # Alle Kurse
84+
85+
# Utility-Befehle
86+
make status # Zeigt Build-Status und Cache-Informationen
87+
make clean-cache # Löscht Cache → nächster Build regeneriert alles
88+
make clean-all # Löscht alle generierten Dateien
89+
make help # Zeigt alle verfügbaren Targets
7590
```
7691

7792
## Konfiguration
@@ -92,28 +107,113 @@ SCORM_SCORE = 80
92107
```
93108
├── digitalesysteme.yml # Kurskonfiguration
94109
├── digitalesysteme.html # Generierte Webseite
110+
├── check_changes.sh # 🆕 Intelligente Change-Detection
111+
├── .cache/ # 🆕 Cache für Change-Detection
112+
│ └── digitalesysteme # Hash-Cache (YAML + Remote)
95113
├── assets/
96114
│ └── digitalesysteme/
97115
│ └── pdf/ # Kurs-spezifische PDFs
98-
│ ├── 070f8b44f.pdf
99-
│ └── ...
100-
├── Makefile # Build-System
116+
│ ├── 272cfe0.pdf
117+
│ ├── 0611ae484.pdf
118+
│ └── ... # 16 PDFs insgesamt
119+
├── Makefile # 🔄 Verbessertes Build-System
120+
├── .gitignore # 🆕 Ignoriert .cache/ Verzeichnis
101121
└── .github/workflows/
102-
└── generateOERoverview.yml # Intelligente GitHub Action
122+
└── generateOERoverview.yml # Optimierte GitHub Action
103123
```
104124

105-
## Entwicklungsworkflow
106-
107-
1. **Lokal entwickeln**: `make digitalesysteme`
108-
- Generiert HTML und PDFs
109-
- Organisiert Assets automatisch
110-
- Korrigiert Pfade in HTML-Dateien
111-
112-
2. **Automatischer Git-Workflow**:
125+
## Intelligentes Change-Detection-System
126+
127+
### 🔍 **Was wird überwacht:**
128+
- **📄 Lokale YAML-Dateien**: SHA256-Hash der Konfiguration
129+
- **🌐 Remote GitHub-Repositories**: Commit-Hash via GitHub API
130+
- `digitalesysteme``VL_EingebetteteSysteme`
131+
- `prozprog``VL_ProzeduraleProgrammierung`
132+
- `softwareentwicklung``VL_Softwareentwicklung`
133+
- `robotikprojekt``VL_Robotikprojekt`
134+
- **📁 Generierte HTML-Dateien**: Existenz-Check
135+
136+
### **Performance-Optimierung:**
137+
- **Sekunden statt Minuten** bei unveränderten Inhalten
138+
- Automatisches **Überspringen** bei identischen Hashes
139+
- **Selective Rebuilds** nur bei tatsächlichen Änderungen
140+
141+
### 🛠️ **Entwicklungsworkflow:**
142+
143+
1. **Status prüfen**: `make status`
144+
```
145+
📚 Course: digitalesysteme
146+
✅ HTML file exists
147+
📋 Cache file exists
148+
💾 Cached YAML: bd241dd6...
149+
💾 Cached remote: 5caf909b...
150+
📁 Assets: 16 PDFs
151+
🌐 Monitoring: VL_EingebetteteSysteme
152+
```
153+
154+
2. **Intelligente Entwicklung**: `make digitalesysteme`
155+
-**Änderung erkannt** → Vollständige Regenerierung (HTML + PDFs + Git)
156+
- ⏭️ **Keine Änderung** → Überspringt Build (< 5 Sekunden)
157+
158+
3. **Automatischer Git-Workflow** (nur bei Änderungen):
113159
- `git add .` und `git commit --amend`
114160
- `git push --force` für saubere History
115161

116-
3. **Intelligentes Deployment**:
117-
- GitHub Action erkennt Änderungen
118-
- Regeneriert nur bei Bedarf
119-
- Fungiert als zuverlässiges Fallback
162+
## Technische Implementierung
163+
164+
### 🧠 **Change-Detection-Script** (`check_changes.sh`)
165+
```bash
166+
# Prüft lokale YAML-Änderungen
167+
YAML_HASH=$(sha256sum digitalesysteme.yml | cut -d' ' -f1)
168+
169+
# Überwacht Remote-Repository via GitHub API
170+
REMOTE_HASH=$(curl -s "https://api.github.com/repos/TUBAF-IfI-LiaScript/VL_EingebetteteSysteme/commits/master" | jq -r '.sha')
171+
172+
# Vergleicht mit Cache
173+
if [ "$YAML_HASH" != "$CACHED_YAML" ] || [ "$REMOTE_HASH" != "$CACHED_REMOTE" ]; then
174+
echo "✅ Changes detected - rebuild needed"
175+
# Update cache and trigger rebuild
176+
else
177+
echo "⏭️ No changes detected - skipping"
178+
fi
179+
```
180+
181+
### 📋 **Cache-System**
182+
- **Speicherort**: `.cache/[course]` (ignoriert von Git)
183+
- **Format**: Zeile 1 = YAML-Hash, Zeile 2 = Remote-Hash
184+
- **Invalidierung**: Automatisch bei erkannten Änderungen
185+
186+
### 🔄 **Rebuild-Trigger**
187+
-**YAML-Datei geändert** → Lokale Konfiguration aktualisiert
188+
-**Remote-Repository aktualisiert** → Neue Markdown-Inhalte verfügbar
189+
-**HTML-Datei fehlt** → Erste Generierung oder Datei gelöscht
190+
- ⏭️ **Alles unverändert** → Skip (massive Zeitersparnis)
191+
192+
## Troubleshooting & Tipps
193+
194+
### 🔧 **Häufige Szenarien:**
195+
196+
```bash
197+
# Erzwungene Neugenerierung (ignoriert Cache)
198+
make force-build-digitalesysteme
199+
200+
# Cache zurücksetzen (nächster Build regeneriert alles)
201+
make clean-cache
202+
203+
# Vollständige Neugenerierung aller Kurse
204+
make force-all
205+
206+
# Status aller Kurse anzeigen
207+
make status
208+
```
209+
210+
### 🌐 **Remote-Repository-Updates:**
211+
Das System erkennt automatisch neue Commits in den überwachten Repositories:
212+
- Neue Markdown-Inhalte werden automatisch bei `make digitalesysteme` gezogen
213+
- PDF-Dateinamen bleiben bei unverändertem Inhalt identisch
214+
- Remote-Verbindungsfehler → System nutzt cached Version
215+
216+
### 📊 **Performance-Metriken:**
217+
- **Mit Änderungen**: ~3-5 Minuten (komplette PDF-Generierung)
218+
- **Ohne Änderungen**: ~3-5 Sekunden (Change-Detection + Skip)
219+
- **Überwachte Repositories**: 4 aktive + 1 index (nur lokal)

assets/pdf/01c52ddbe.pdf

-1.45 MB
Binary file not shown.

assets/pdf/01d05c9b.pdf

-978 KB
Binary file not shown.

assets/pdf/02618764b.pdf

949 KB
Binary file not shown.

assets/pdf/02cc9732b.pdf

-765 KB
Binary file not shown.

assets/pdf/039c7c00e.pdf

997 KB
Binary file not shown.

assets/pdf/04151dcd4.pdf

-5.81 MB
Binary file not shown.

assets/pdf/0415ad7f2.pdf

812 KB
Binary file not shown.

assets/pdf/05a0f71a0.pdf

-699 KB
Binary file not shown.

assets/pdf/05ebbf8d8.pdf

-1.33 MB
Binary file not shown.

0 commit comments

Comments
 (0)