add Tutorial für checkout Repo for Msty
This commit is contained in:
parent
b5079bdfda
commit
288541121e
7 changed files with 1352 additions and 1144 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -10,6 +10,7 @@ __pycache__
|
||||||
*.pyc
|
*.pyc
|
||||||
*.log
|
*.log
|
||||||
|
|
||||||
|
/forgejo_issues/
|
||||||
/forgejo_issues/*.md
|
|
||||||
.env
|
.env
|
||||||
|
/FOERBICO/*
|
||||||
|
/FOERBICO/
|
||||||
104
CHECKOUT_Repo_for_MSTY.md
Normal file
104
CHECKOUT_Repo_for_MSTY.md
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
# Git Repositorium für RAG nutzen
|
||||||
|
|
||||||
|
Wenn du ein Repositorium für RAG etwa in Mstys Knowledge Stacks nutzbar machen willst, darf es keine binären Daten enthalten. Hier eine ausführliche Anleitung:
|
||||||
|
|
||||||
|
## Option A: Nutze das Checkout-Script
|
||||||
|
|
||||||
|
Kopiere die Scriptdatei in ein beliebiges Verzeichnis, in das du die textbasierten Repodateien kopieren willst.
|
||||||
|
|
||||||
|
### Für Windows:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
checkout.bat https://git.rpi-virtuell.de/Comenius-Institut/FOERBICO.git
|
||||||
|
```
|
||||||
|
|
||||||
|
Hinweis: Bei geschützten Repositories musst du Benutzernamen und Passwort in der URL angeben:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
checkout.bat https://username:passwort@git.rpi-virtuell.de/Comenius-Institut/geschuetztes_repo.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Für Linux/Mac:
|
||||||
|
|
||||||
|
Mache das Script zuerst ausführbar:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod +x checkout.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Dann führe es aus:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./checkout.sh https://git.rpi-virtuell.de/Comenius-Institut/FOERBICO.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Was die Skripte machen:
|
||||||
|
|
||||||
|
1. Überprüfen, ob bereits ein Verzeichnis mit dem Repository-Namen existiert und löschen es gegebenenfalls
|
||||||
|
2. Klonen das komplette Repository
|
||||||
|
3. Entfernen alle bekannten binären Dateiformate (Bilder, Videos, Audio, Archive) aus dem Arbeitsverzeichnis
|
||||||
|
4. Belassen nur die Textdateien im Repository
|
||||||
|
|
||||||
|
Folgende Dateiformate werden entfernt:
|
||||||
|
- Bilder: JPG, JPEG, PNG, GIF, WEBP
|
||||||
|
- Videos: MP4, MOV, AVI, MKV
|
||||||
|
- Audio: MP3, WAV, OGG
|
||||||
|
- Archive: ZIP, TAR
|
||||||
|
|
||||||
|
Dies ist ein pragmatischer Ansatz, der zwar zunächst alle Dateien herunterlädt, aber anschließend die binären Dateien zuverlässig entfernt.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Option B: Alternative mit Sparse-Checkout (für fortgeschrittene Benutzer)
|
||||||
|
|
||||||
|
> **Hinweis:** Diese Methode funktioniert möglicherweise nicht zuverlässig bei allen Git-Versionen.
|
||||||
|
|
||||||
|
Um ein Repository **ohne die Mediendateien (Bilder, Videos, Audios)** direkt zu klonen, kannst du auch **Sparse-Checkout** verwenden. Hier ist die Schritt-für-Schritt-Anleitung:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1. Klone das Repository **ohne automatischen Checkout**:
|
||||||
|
```bash
|
||||||
|
git clone --no-checkout https://git.rpi-virtuell.de/Comenius-Institut/FOERBICO.git
|
||||||
|
cd FOERBICO
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Aktiviere Sparse-Checkout und konfiguriere die Dateiausschlüsse:
|
||||||
|
```bash
|
||||||
|
# Aktiviere Sparse-Checkout
|
||||||
|
git config core.sparseCheckout true
|
||||||
|
|
||||||
|
# Erstelle/Editiere die sparse-checkout-Datei
|
||||||
|
echo "/*" > .git/info/sparse-checkout # Schließe erst ALLES ein
|
||||||
|
echo "!*.jpg" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.jpeg" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.png" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.gif" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.webp" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.mp4" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.mov" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.avi" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.mkv" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.mp3" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.wav" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.ogg" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.zip" >> .git/info/sparse-checkout
|
||||||
|
echo "!*.tar" >> .git/info/sparse-checkout
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Führe den Checkout für den gewünschten Branch durch (z.B. `main` oder `master`):
|
||||||
|
```bash
|
||||||
|
git checkout main # oder dein Ziel-Branch
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Erklärung:
|
||||||
|
- Mit `/*` schließt du **alle Dateien und Ordner** zunächst ein.
|
||||||
|
- Die Zeilen mit `!*.jpg`, `!*.mp4` usw. **schließen spezifische Dateitypen aus**.
|
||||||
|
- Die ausgeschlossenen Dateien werden **nicht** in deinem Arbeitsverzeichnis erscheinen, sind aber weiterhin im Repository vorhanden (du kannst sie später bei Bedarf nachladen).
|
||||||
|
|
||||||
50
checkout.bat
Normal file
50
checkout.bat
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
@echo off
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
if "%~1"=="" (
|
||||||
|
echo Bitte Repository-URL als Parameter angeben.
|
||||||
|
echo Beispiel: checkout.bat https://git.rpi-virtuell.de/Comenius-Institut/FOERBICO.git
|
||||||
|
echo Hinweis: bei einigen URLs muss der Benutzername und das Passwort in der URL enthalten sein.
|
||||||
|
echo Beispiel: checkout.bat https://username:passwort@git.rpi-virtuell.de/Comenius-Institut/geschuetztes_repo.git
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set REPO_URL=%~1
|
||||||
|
|
||||||
|
REM Extrahiere den Repository-Namen korrekt aus der URL
|
||||||
|
for %%i in (%REPO_URL:/= %) do set REPO_NAME=%%i
|
||||||
|
set REPO_NAME=%REPO_NAME:.git=%
|
||||||
|
|
||||||
|
echo Klone Repository: %REPO_URL% in Ordner: %REPO_NAME%
|
||||||
|
|
||||||
|
REM Überprüfe, ob das Verzeichnis bereits existiert
|
||||||
|
if exist %REPO_NAME%\ (
|
||||||
|
echo Verzeichnis %REPO_NAME% existiert bereits. Lösche es...
|
||||||
|
rmdir /s /q %REPO_NAME%
|
||||||
|
if %ERRORLEVEL% neq 0 (
|
||||||
|
echo Fehler beim Löschen des Verzeichnisses.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Klone Repository mit Standard-Checkout (Vollständig)
|
||||||
|
git clone %REPO_URL%
|
||||||
|
if %ERRORLEVEL% neq 0 (
|
||||||
|
echo Fehler beim Klonen des Repositories.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
cd %REPO_NAME%
|
||||||
|
|
||||||
|
echo Entferne alle Binärdateien...
|
||||||
|
|
||||||
|
REM Entferne Binärdateien aus dem Arbeitsverzeichnis
|
||||||
|
for %%e in (JPG jpg jpeg png gif webp mp4 mov avi mkv mp3 wav ogg zip tar) do (
|
||||||
|
echo Entferne Dateien mit Endung: %%e
|
||||||
|
for /r %%f in (*.%%e) do (
|
||||||
|
del "%%f"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Repository erfolgreich geklont und Binärdateien entfernt.
|
||||||
|
echo Repository-Verzeichnis: %REPO_NAME%
|
||||||
46
checkout.sh
Normal file
46
checkout.sh
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Bitte Repository-URL als Parameter angeben."
|
||||||
|
echo "Beispiel: ./checkout.sh https://git.rpi-virtuell.de/Comenius-Institut/FOERBICO.git"
|
||||||
|
echo "Hinweis: bei einigen URLs muss der Benutzername und das Passwort in der URL enthalten sein."
|
||||||
|
echo "Beispiel: checkout.sh https://username:passwort@git.rpi-virtuell.de/Comenius-Institut/geschuetztes_repo.git"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
REPO_URL=$1
|
||||||
|
|
||||||
|
# Extrahiere den Repository-Namen korrekt aus der URL
|
||||||
|
REPO_NAME=$(basename "$REPO_URL" .git)
|
||||||
|
|
||||||
|
echo "Klone Repository: $REPO_URL in Ordner: $REPO_NAME"
|
||||||
|
|
||||||
|
# Überprüfe, ob das Verzeichnis bereits existiert
|
||||||
|
if [ -d "$REPO_NAME" ]; then
|
||||||
|
echo "Verzeichnis $REPO_NAME existiert bereits. Lösche es..."
|
||||||
|
rm -rf "$REPO_NAME"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Fehler beim Löschen des Verzeichnisses."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vollständiges Klonen des Repositories
|
||||||
|
git clone "$REPO_URL"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Fehler beim Klonen des Repositories."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$REPO_NAME"
|
||||||
|
|
||||||
|
echo "Entferne alle Binärdateien..."
|
||||||
|
|
||||||
|
# Entferne Binärdateien aus dem Arbeitsverzeichnis
|
||||||
|
for ext in JPG jpg jpeg png gif webp mp4 mov avi mkv mp3 wav ogg zip tar; do
|
||||||
|
echo "Entferne Dateien mit Endung: $ext"
|
||||||
|
find . -name "*.$ext" -type f -delete
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Repository erfolgreich geklont und Binärdateien entfernt."
|
||||||
|
echo "Repository-Verzeichnis: $REPO_NAME"
|
||||||
|
|
@ -194,8 +194,14 @@ class ForgejoMarkdownExporter:
|
||||||
|
|
||||||
# Erstelle einen sicheren Dateinamen
|
# Erstelle einen sicheren Dateinamen
|
||||||
safe_title = ''.join(c if c.isalnum() or c in [' ', '-', '_'] else '_' for c in title)
|
safe_title = ''.join(c if c.isalnum() or c in [' ', '-', '_'] else '_' for c in title)
|
||||||
filename = f"{repo_full_name.replace('/', '_')}__issue_{issue_number}_{safe_title[:50]}.md"
|
|
||||||
filepath = os.path.join(self.output_dir, filename)
|
# Erstelle einen Unterordner für das Repository
|
||||||
|
repo_dir = os.path.join(self.output_dir, repo_full_name.replace('/', '_'))
|
||||||
|
os.makedirs(repo_dir, exist_ok=True)
|
||||||
|
|
||||||
|
# Neuer Dateiname ohne Repo-Präfix
|
||||||
|
filename = f"issue_{issue_number}_{safe_title[:50]}.md"
|
||||||
|
filepath = os.path.join(repo_dir, filename)
|
||||||
|
|
||||||
# Hole Kommentare
|
# Hole Kommentare
|
||||||
comments = self.fetch_comments(repo_full_name, issue_number)
|
comments = self.fetch_comments(repo_full_name, issue_number)
|
||||||
|
|
@ -315,12 +321,14 @@ class ForgejoMarkdownExporter:
|
||||||
else:
|
else:
|
||||||
new_issues += 1
|
new_issues += 1
|
||||||
|
|
||||||
|
# Relativen Pfad zur Ausgabedatei speichern
|
||||||
|
file_rel_path = os.path.relpath(filepath, self.output_dir)
|
||||||
issue_hashes[issue_id] = {
|
issue_hashes[issue_id] = {
|
||||||
"hash": current_hash,
|
"hash": current_hash,
|
||||||
"number": issue.get('number'),
|
"number": issue.get('number'),
|
||||||
"repo": repo_full_name,
|
"repo": repo_full_name,
|
||||||
"title": issue.get('title'),
|
"title": issue.get('title'),
|
||||||
"file": os.path.basename(filepath),
|
"file": file_rel_path,
|
||||||
"updated_at": issue.get('updated_at'),
|
"updated_at": issue.get('updated_at'),
|
||||||
"state": issue.get('state')
|
"state": issue.get('state')
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
.
|
|
||||||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue