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
|
||||
*.log
|
||||
|
||||
|
||||
/forgejo_issues/*.md
|
||||
/forgejo_issues/
|
||||
.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
|
||||
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
|
||||
comments = self.fetch_comments(repo_full_name, issue_number)
|
||||
|
|
@ -314,13 +320,15 @@ class ForgejoMarkdownExporter:
|
|||
updated_issues += 1
|
||||
else:
|
||||
new_issues += 1
|
||||
|
||||
|
||||
# Relativen Pfad zur Ausgabedatei speichern
|
||||
file_rel_path = os.path.relpath(filepath, self.output_dir)
|
||||
issue_hashes[issue_id] = {
|
||||
"hash": current_hash,
|
||||
"number": issue.get('number'),
|
||||
"repo": repo_full_name,
|
||||
"title": issue.get('title'),
|
||||
"file": os.path.basename(filepath),
|
||||
"file": file_rel_path,
|
||||
"updated_at": issue.get('updated_at'),
|
||||
"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