v1.1.0
This commit is contained in:
parent
b77a270167
commit
cc40c0be22
29
.gitignore
vendored
Normal file
29
.gitignore
vendored
Normal 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
24
LIZENSE
@ -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
116
README.md
@ -1,78 +1,120 @@
|
||||
# ⚙️ GitCopy All in One
|
||||
# ⚙️ GitCopy – All in One
|
||||
|
||||

|
||||

|
||||
|
||||
> gitCopy ist nur ein Faulheits-Tool das ein zip-Archiv aus einem git-Repository erstellt um es z.B einer KI zu übergeben.
|
||||
[](LICENSE)
|
||||
[](#voraussetzungen)
|
||||
[](#)
|
||||
|
||||
> **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.
|
||||
|
||||
---
|
||||
|
@ -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**
|
101
gitcopy.bat
101
gitcopy.bat
@ -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 "%~1"=="--debug" (
|
||||
set DEBUG=1
|
||||
echo [⚠] Debug-Modus aktiv: Ignoriere offene Commits.
|
||||
if NOT "%~1"=="" (
|
||||
if "%~1"=="--debug" (
|
||||
set DEBUG=1
|
||||
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"
|
||||
)
|
||||
|
||||
if "%~1"=="--h" (
|
||||
call :show_help
|
||||
exit /b 0
|
||||
)
|
||||
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.
|
||||
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
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Loading…
x
Reference in New Issue
Block a user