Initial release with Gitea updater
This commit is contained in:
commit
46c2474985
36 files changed
+3674
No files matched your search
@@ -0,0 +1,92 @@
|
||||
# SyncVito
|
||||
|
||||
SyncVito ist ein Windows-Desktopwerkzeug zum Synchronisieren lokaler Ordner mit NAS- oder anderen Dateisystempfaden. Die Oberfläche ist vollständig deutsch, läuft im Windows-Infobereich weiter und speichert Aufgaben sowie Einstellungen lokal als JSON.
|
||||
|
||||
## Funktionsumfang
|
||||
|
||||
- Beliebig viele Sync-Aufgaben mit Quell- und Zielordner
|
||||
- Einweg-Synchronisation oder bidirektionaler Abgleich
|
||||
- Manuelle, zeitgesteuerte oder durch `watchdog` ausgelöste Echtzeitläufe
|
||||
- Optionale Unterauswahl einzelner Dateien und Ordner
|
||||
- Löschungen spiegeln oder Dateien grundsätzlich behalten
|
||||
- Konfliktwahl: neuerer Zeitstempel gewinnt oder `_conflict`-Sicherung
|
||||
- Erkennung sperrender Windows-Prozesse über den Restart Manager
|
||||
- Automatischer Retry für gesperrte Dateien und nicht erreichbare NAS-Pfade
|
||||
- Eine zentrale Fortschrittsanzeige, Aktivitätsprotokoll und Status im Tray
|
||||
- Aufgabenbezogener Laufzeitstatus mit Worst-Case-Ableitung: grün bei gesunden aktiven Aufgaben, rot bei Pause/Inaktivität und Ausrufezeichen bei Fehlern, NAS-Ausfall oder wartenden Dateisperren
|
||||
- Persistente Darstellungseinstellungen und optionaler Windows-Autostart
|
||||
- UAC-Manifest mit `requireAdministrator`
|
||||
- Automatische oder manuelle Updateprüfung über öffentliche Gitea-Releases
|
||||
- SHA-256-geprüfter Download und sicherer Austausch der EXE nach dem Beenden
|
||||
|
||||
Projektseite: [gitea.davito.synology.me/Davito/SyncVito](https://gitea.davito.synology.me/Davito/SyncVito)
|
||||
|
||||
## Entwicklung starten
|
||||
|
||||
Voraussetzung ist Python 3.11 oder neuer unter Windows.
|
||||
|
||||
```powershell
|
||||
python -m pip install -r requirements.txt
|
||||
python main.py
|
||||
```
|
||||
|
||||
Die Konfiguration wird unter `%LOCALAPPDATA%\SyncVito\config.json` gespeichert. Der technische Abgleichzustand für bidirektionale Löschungen liegt daneben in `sync-state.json`.
|
||||
|
||||
## Tests
|
||||
|
||||
```powershell
|
||||
python -m pytest
|
||||
```
|
||||
|
||||
## Eigenständige EXE bauen
|
||||
|
||||
```powershell
|
||||
.\build.ps1
|
||||
```
|
||||
|
||||
Die Ergebnisse liegen anschließend unter `dist\SyncVito.exe` und `dist\SyncVito.exe.sha256`. Die EXE ist eine One-File-Anwendung ohne benötigte Python-Installation und fordert beim Start über das eingebettete Manifest Administratorrechte an.
|
||||
|
||||
Hinweis: Eine nicht signierte lokale EXE kann beim ersten Start einen Windows-SmartScreen-Hinweis auslösen. Für die Verteilung in einer Organisation empfiehlt sich eine reguläre Codesignatur.
|
||||
|
||||
## Updates und Releases
|
||||
|
||||
SyncVito fragt höchstens einmal innerhalb von 24 Stunden die stabilen Releases des öffentlichen Gitea-Repositories ab. Die automatische Prüfung lässt sich in den Einstellungen abschalten; eine manuelle Prüfung ist dort und im Tray-Menü jederzeit möglich.
|
||||
|
||||
Ein installierbares Release benötigt exakt diese Anhänge:
|
||||
|
||||
- `SyncVito.exe`
|
||||
- `SyncVito.exe.sha256`
|
||||
|
||||
Für ein Release muss die Version in `src/syncvito/version.py` angepasst und der Quellstand committed sein. Anschließend wird ein Gitea-Token mit Repository-Schreibrecht ausschließlich lokal gesetzt:
|
||||
|
||||
```powershell
|
||||
$env:GITEA_TOKEN = "<lokales-token>"
|
||||
.\publish-release.ps1 -Version 1.0.0 -Notes "Erstes stabiles Release"
|
||||
```
|
||||
|
||||
Das Skript baut und testet die Anwendung, erzeugt Tag und Release und lädt beide Artefakte hoch. Das Token wird weder in der Anwendung noch im Repository gespeichert.
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```text
|
||||
src/syncvito/
|
||||
├── app.py Anwendungsstart und Einzelinstanzschutz
|
||||
├── main_window.py Hauptfenster, Tray und UI-Zustand
|
||||
├── dialogs.py Aufgaben- und Unterauswahl-Dialoge
|
||||
├── coordinator.py Hintergrundläufe, Zeitplan und Retry
|
||||
├── sync_engine.py Dateisystem-Abgleich
|
||||
├── file_locks.py Windows-Sperrprozess-Erkennung
|
||||
├── realtime.py watchdog-Integration
|
||||
├── updater.py Gitea-Protokoll, Download und Integritätsprüfung
|
||||
├── update_controller.py Hintergrund-Worker für Updates
|
||||
├── update_dialog.py deutscher Versionsdialog
|
||||
├── config_store.py atomare JSON-Konfiguration
|
||||
├── state_store.py bidirektionaler Abgleichzustand
|
||||
├── models.py Domänenmodelle und Validierung
|
||||
├── theme.py Dark-Mode-Designsystem
|
||||
└── icons.py skalierbare Statussymbole
|
||||
```
|
||||
|
||||
## Sicherheitshinweise
|
||||
|
||||
Beim Modus „Löschungen spiegeln“ entfernt SyncVito Dateien auf der Gegenseite, nachdem eine Löschung gegenüber dem letzten erfolgreichen Lauf eindeutig erkannt wurde. Vor produktivem Einsatz empfiehlt sich ein Test mit einem kleinen Ordnerpaar und eine vorhandene Datensicherung. Symbolische Links werden bewusst nicht verfolgt.
|
||||
Reference in new issue
Block a user