This commit is contained in:
Adam Skotarczak 2025-04-29 09:25:32 +02:00
parent b77a270167
commit cc40c0be22
9 changed files with 207 additions and 170 deletions

29
.gitignore vendored Normal file
View File

@ -0,0 +1,29 @@
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# Custom
scanner.py
tree.txt
*.zip

24
LIZENSE
View File

@ -1 +1,23 @@
MIT
# MIT License with Attribution Requirement
Copyright (c) 2025 Adam Skotarczak <adam@skotarczak.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, subject to the following conditions:
1. The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
2. **Attribution Requirement**: Any public use or distribution of this Software,
modified or unmodified, must include a clear and visible attribution to the original author:
**Adam Skotarczak <adam@skotarczak.net>**
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

116
README.md
View File

@ -1,78 +1,120 @@
# ⚙️ GitCopy All in One
# ⚙️ GitCopy All in One
![gitCopy Logo](./assets/gitcopy_logo_300x300.png)
![gitCopy Logo](./media/gitcopy_logo_300x300.png)
> gitCopy ist nur ein Faulheits-Tool das ein zip-Archiv aus einem git-Repository erstellt um es z.B einer KI zu übergeben.
[![Lizenz: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Plattform: Windows](https://img.shields.io/badge/platform-Windows%2010%2F11-blue.svg)](#voraussetzungen)
[![Status: Stable](https://img.shields.io/badge/status-stable-brightgreen.svg)](#)
> **GitCopy** ist ein minimalistisches CLI-Tool, das ein ZIP-Archiv aus dem aktuellen Stand eines Git-Repositories erstellt optimiert für schnelle Übergaben, Archivierungen und Analysen.
---
## Inhaltsverzeichnis
## 📑 Inhaltsverzeichnis
- [⚙️ GitCopy All in One](#-gitcopy-all-in-one)
- [ Inhaltsverzeichnis](#-inhaltsverzeichnis)
- [ Über das Projekt](#-über-das-projekt)
- [ Struktur](#-struktur)
- [⚙️ Installation - Verwendung](#-installation---verwendung)
- [ Beitragende](#-beitragende)
- [⚙️ GitCopy All in One](#-gitcopy--all-in-one)
- [📑 Inhaltsverzeichnis](#-inhaltsverzeichnis)
- [💬 Über das Projekt](#-über-das-projekt)
- [🔧 Voraussetzungen](#-voraussetzungen)
- [📦 Projektstruktur](#-projektstruktur)
- [⚙️ Installation \& Verwendung](#-installation--verwendung)
- [Optionale Parameter:](#optionale-parameter)
- [🤝 Beitragende](#-beitragende)
- [⚠️ Lizenz](#-lizenz)
- [ Hinweise](#-hinweise)
- [💡 Hinweise](#-hinweise)
---
## Über das Projekt
## 💬 Über das Projekt
Ein Überblick, was das Projekt tut, warum es existiert und für wen es gedacht ist.
**GitCopy** richtet sich an alle, die schnell und unkompliziert den aktuellen Stand eines Git-Repositories als saubere ZIP-Datei exportieren möchten.
Typische Anwendungsfälle:
- Übergabe von Projektständen an KIs oder externe Systeme
- Archivierung von Quellcodes ohne Git-Historie
- Erstellung sauberer, analysierbarer Snapshots
-
- Was ist das Ziel?
- Wer soll das nutzen oder lesen?
- Wo kommt es her / wie kam es dazu?
Das Ziel ist ein robuster, schlanker Prozess ohne zusätzliche Abhängigkeiten oder komplexe Konfiguration.
---
## Struktur
## 🔧 Voraussetzungen
Beschreibt den Aufbau deines Projekts (Verzeichnisse, Dateien, Formatierungskonventionen, …)
- **Betriebssystem:** Windows 10 oder höher
- **Installiertes Git:**
Git muss auf dem System verfügbar sein (`git` im Pfad).
[Git Download-Seite](https://git-scm.com/download/win)
- **Konsole:**
Standard `cmd.exe`, Windows Terminal oder kompatible Umgebungen (z.B. PowerShell).
Hinweis:
Das Skript berücksichtigt `.gitignore` automatisch nur Dateien, die von Git tatsächlich verfolgt werden, landen im ZIP.
---
## 📦 Projektstruktur
Projektdateien und Verzeichnisse:
```cmd
.
├── assets/ # irrelevanter Balast wie icons und Logos
├── gitcopy.bat # Skript
├── README.md # Diese Datei
└── LICENSE # Lizenztext
📁 gitcopy/ # Projektverzeichnis
├── 📁 assets # Medien und Icons
│ ├── 📄 gitcopy-original.png # Originalgrafik
│ ├── 📄 gitcopy_icon.ico # Icon für Windows-Verknüpfungen
│ └── 📄 gitcopy_logo_300x300.png # Logo für Dokumentationen
├── 📄 .gitignore # Ausschlussdatei für Git
├── 📄 LICENSE # Lizenzinformation (MIT)
├── 📄 README.md # Diese Dokumentation
├── 📄 VERSION # Aktuelle Versionsnummer
├── 📄 gitcopy.bat # Hauptskript
```
---
## ⚙️ Installation - Verwendung
## ⚙️ Installation & Verwendung
- gitcopy.git in das Arbeitsverzeichnis kopieren und ausführen
1. Repository klonen oder `gitcopy.bat` in ein beliebiges Arbeitsverzeichnis kopieren.
2. Konsole öffnen und das Skript ausführen:
```cmd
gitcopy.bat
```
### Optionale Parameter:
| Parameter | Beschreibung |
|----------------|---------------|
| `-d`, `--debug` | Aktiviert den Debug-Modus (prüft nicht auf uncommitted Änderungen) |
| `-h`, `--help` | Zeigt eine Hilfeseite an |
Beispiel:
```cmd
gitcopy.bat --debug
```
---
## Beitragende
## 🤝 Beitragende
Liste der Autor:innen, Unterstützer:innen oder Reviewer:
- [@realAscot](https://github.com/realAscot) Idee, Konzept und Umsetzung
- [@realAscot](https://github.com/realAscot) Idee, Konzept, Umsetzung
- Du? Mach gern mit! 😊
Beiträge und Verbesserungsvorschläge sind jederzeit willkommen!
---
## ⚠️ Lizenz
Dieses Projekt steht unter der **MIT-Lizenz**.
Details siehe [LICENSE](LICENSE).
Details findest du in der Datei [LICENSE](LICENSE).
---
## Hinweise
## 💡 Hinweise
- aktuell keine
- Das ZIP-Archiv enthält **nur** Dateien, die von Git getrackt werden.
Dateien, die in `.gitignore` ausgeschlossen sind, werden **nicht** mit aufgenommen.
- Nicht committed oder nicht getrackte Änderungen werden in der Standardkonfiguration geprüft.
- Im Debug-Modus (`--debug`) werden offene Änderungen ignoriert.
---

View File

@ -1,105 +0,0 @@
# 🧾 Pflichtenheft Projekt: **gitCoppy**
## Inhalt
- [🧾 Pflichtenheft Projekt: **gitCoppy**](#-pflichtenheft--projekt-gitcoppy)
- [Inhalt](#inhalt)
- [1. Projektübersicht](#1-projektübersicht)
- [2. Zielsetzung und Zweck](#2-zielsetzung-und-zweck)
- [3. Leistungsumfang (Scope)](#3-leistungsumfang-scope)
- [4. Funktionale Anforderungen](#4-funktionale-anforderungen)
- [5. Nicht-funktionale Anforderungen](#5-nicht-funktionale-anforderungen)
- [6. Systemumgebung](#6-systemumgebung)
- [7. Schnittstellen](#7-schnittstellen)
- [8. Benutzeroberfläche (UI/UX)](#8-benutzeroberfläche-uiux)
- [9. Datenmodell und Speicherstruktur](#9-datenmodell-und-speicherstruktur)
- [10. Fehlerbehandlung und Logging](#10-fehlerbehandlung-und-logging)
- [11. Benutzerrollen und Rechte](#11-benutzerrollen-und-rechte)
- [12. Ablaufplan / Meilensteine](#12-ablaufplan--meilensteine)
- [13. Testfälle und Akzeptanzkriterien](#13-testfälle-und-akzeptanzkriterien)
- [14. Lieferumfang](#14-lieferumfang)
- [15. Sonstiges](#15-sonstiges)
## 1. Projektübersicht
- **Projektname:** gitCopy
- einheitliches autarges Skript für jede Plattform. Sinngemäss für Windows `gitCopy.bat`und Linux `gitCopy.sh`.
- **Kurzbeschreibung:**
gitCopy ist eine Skriptsammlung um für die Kommunikation mit der KI, dieser ein Projekt komplett zur Verfügung zu stellen. Am liebsten wäre mir ChatGPT würde direkt auf ein lokales Repository zugreifen können, dann wäre dieses Projekt unnötig.
## 2. Zielsetzung und Zweck
- **Ziel:**
- **Nutzen/Zweck:**
## 3. Leistungsumfang (Scope)
- **Was soll umgesetzt werden:**
- **Was ist explizit ausgeschlossen:**
## 4. Funktionale Anforderungen
- **Funktion 1:**
- Beschreibung:
- Trigger / Auslöser:
- Eingaben:
- Ausgaben:
## 5. Nicht-funktionale Anforderungen
- Modularer Aufbau
- Offline-Lauffähigkeit
## 6. Systemumgebung
- **Zielplattform(en):**
- Linux (sh/ bash)
- Windows (CMD und Powershell kompatibel)
## 7. Schnittstellen
- **keine**
## 8. Benutzeroberfläche (UI/UX)
- **keine**
## 9. Datenmodell und Speicherstruktur
- **keine**
## 10. Fehlerbehandlung und Logging
- **Fehlertypen / Meldungen:**
- Fehler wenn noch offener Commit.
- **Log-Strategie (Datei, Konsole, Rotation):**
## 11. Benutzerrollen und Rechte
- **Rollen:**
- **Rechteverteilung:**
## 12. Ablaufplan / Meilensteine
- **Feature-Priorisierung:**
- **Vorschau-Zwischenstände gewünscht?**
- **Deadline (optional):**
## 13. Testfälle und Akzeptanzkriterien
- **Testszenarien:**
- **Wann ist der Auftrag abgeschlossen:**
## 14. Lieferumfang
- [ ] Quellcode
- [ ] README.md
- [ ] CHANGELOG.md
## 15. Sonstiges
- **keine**

View File

@ -1 +1 @@
1.0.0
1.1.0

View File

@ -2,75 +2,116 @@
setlocal enabledelayedexpansion
chcp 65001 >nul
REM Skript um aus dem Projekt mit git ein portables .zip zu erstellen
REM (C) Adam Skotarczak
REM Skript, um aus einem Projekt mit git-repo, ein portables .zip zu erstellen
REM
REM (C) 2025 MIT Adam Skotarczak
REM
REM Version: v1.0.0
REM Github: https://github.com/realAscot/gitcopy
REM -------------------------------------------------------------------
REM Prüfe auf optionalen Parameter "--debug"
rem --- Git-Verfügbarkeit prüfen ---
where git >nul 2>nul
if errorlevel 1 (
echo.
echo [⚠️] Git ist nicht installiert oder nicht im PATH.
echo [📦] Bitte installiere Git von https://git-scm.com/download/win
echo.
exit /b 1
)
rem --- Git-Version anzeigen ---
for /f "tokens=*" %%i in ('git --version') do set "GIT_VERSION=%%i"
if defined GIT_VERSION (
echo.
echo [✅] Gefundene Git-Version: %GIT_VERSION%
) else (
echo([⚠️] Konnte Git-Version nicht ermitteln.
)
rem Prüfe auf optionalen Parameter "--debug"
set DEBUG=0
if NOT "%~1"=="" (
if "%~1"=="--debug" (
set DEBUG=1
echo [⚠] Debug-Modus aktiv: Ignoriere offene Commits.
)
if "%~1"=="--h" (
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
exit /b 0
) else if "%~1"=="-d" (
set DEBUG=1
echo [⚠️] Debug-Modus aktiv: Ignoriere offene Commits.
exit /b 0
) else if "%~1"=="-h" (
call :show_help
exit /b 0
) else if "%~1"=="--help" (
call :show_help
exit /b 0
) else (
rem Parameter vorhanden aber nicht erkannt.
call :kein_Parameter "%~1"
exit /b 1
)
) else (
call :go "%~1"
)
exit /b 0
:go
call :generate_timestamp
set ZIP_NAME=projektarchiv-%TIMESTAMP%.zip
REM -------------------------------------------------------------------
rem -------------------------------------------------------------------
pushd %~dp0
if %DEBUG%==0 (
echo [*] Prüfe auf uncommitted oder ungetrackte Änderungen...
echo [🔍] Prüfe auf uncommitted oder ungetrackte Änderungen...
set "hasChanges="
for /f "delims=" %%i in ('git status --porcelain') do (
set "hasChanges=1"
goto :has_changes
)
echo [] Arbeitsverzeichnis ist sauber.
echo [] Arbeitsverzeichnis ist sauber.
) else (
echo [⚠] Prüfschritt übersprungen.
echo [⚠] Prüfschritt übersprungen.
)
goto :create_zip
:has_changes
echo.
echo [!] Es sind uncommitted oder ungetrackte Änderungen vorhanden:
echo [⚠️] Es sind uncommitted oder ungetrackte Änderungen vorhanden:
echo.
git status --short
echo.
echo [✘] Bitte committe oder stash diese Änderungen, bevor du ein ZIP erstellst.
echo [⚠] versuche --debug um diese Prüfung zu umgehen aber dann wird das Archiv unvollständig.
echo [❌] Bitte committe oder stash diese Änderungen, bevor du ein ZIP erstellst.
echo [⚠️] versuche --debug um diese Prüfung zu umgehen aber dann wird das Archiv unvollständig.
echo.
endlocal
pause
exit /b 1
:create_zip
echo [*] Erstelle ZIP-Archiv von HEAD...
echo [💾] Erstelle ZIP-Archiv von HEAD...
git archive --format=zip --output="%ZIP_NAME%" HEAD
if errorlevel 1 (
echo [!] Fehler beim Erstellen des Archivs.
echo [⚠️] Fehler beim Erstellen des Archivs.
pause
exit /b 1
)
echo [] Archiv erfolgreich erstellt: %CD%\%ZIP_NAME%
echo [] Archiv erfolgreich erstellt: %CD%\%ZIP_NAME%
popd
endlocal
pause
exit /b 0
:generate_timestamp
REM Erzeugt einen Zeitstempel TTMMJJHHMM sicher und universell
rem Erzeugt einen Zeitstempel TTMMJJHHMM sicher und universell
for /f "tokens=1-4 delims=. " %%d in ('echo %DATE%') do (
set "TAG=0%%d"
set "MONAT=0%%e"
@ -91,9 +132,16 @@ set "MINUTE=!MINUTE:~-2!"
set "TIMESTAMP=!TAG!!MONAT!!JAHR!!STUNDE!!MINUTE!"
goto :eof
:kein_Parameter
echo.
echo [⚠️] Unbekannter Parameter: "%~1" abbruch ...
echo.
call :show_help
exit /b 1
:show_help
echo.
echo GitCopy Hilfe
echo GitCopy Hilfe
echo =====================
echo Erstellt ein ZIP-Archiv vom aktuellen HEAD-Stand des Git-Repositories.
echo.
@ -101,9 +149,10 @@ echo Verwendung:
echo gitcopy.bat [Option]
echo.
echo Optionen:
echo --debug Überspringt die Prüfung auf uncommitted oder ungetrackte Änderungen.
echo --h Zeigt diese Hilfe an.
echo --debug / -d Überspringt die Prüfung auf uncommitted oder ungetrackte Änderungen.
echo -h / --help Zeigt diese Hilfe an.
echo.
endlocal
pause
goto :eof

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB