diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d9f883 --- /dev/null +++ b/.gitignore @@ -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 diff --git a/LIZENSE b/LIZENSE index a22a2da..e75a984 100644 --- a/LIZENSE +++ b/LIZENSE @@ -1 +1,23 @@ -MIT +# MIT License with Attribution Requirement + +Copyright (c) 2025 Adam Skotarczak + +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 ** + +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. diff --git a/README.md b/README.md index 299d667..7325152 100644 --- a/README.md +++ b/README.md @@ -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. --- diff --git a/SPECIFICATIONS.obligations.md b/SPECIFICATIONS.obligations.md deleted file mode 100644 index a6609cb..0000000 --- a/SPECIFICATIONS.obligations.md +++ /dev/null @@ -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** diff --git a/VERSION b/VERSION index afaf360..1cc5f65 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0 \ No newline at end of file +1.1.0 \ No newline at end of file diff --git a/gitcopy.bat b/gitcopy.bat index 73745eb..970f5b3 100644 --- a/gitcopy.bat +++ b/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 diff --git a/assets/gitcopy-original.png b/media/gitcopy-original.png similarity index 100% rename from assets/gitcopy-original.png rename to media/gitcopy-original.png diff --git a/assets/gitcopy_icon.ico b/media/gitcopy_icon.ico similarity index 100% rename from assets/gitcopy_icon.ico rename to media/gitcopy_icon.ico diff --git a/assets/gitcopy_logo_300x300.png b/media/gitcopy_logo_300x300.png similarity index 100% rename from assets/gitcopy_logo_300x300.png rename to media/gitcopy_logo_300x300.png