SXXXXXXX_RepoSync/README.md
VALLONGOL dacc220eeb fix export wiki
add instruction for import wiki
update readme and manual
2025-07-11 07:33:07 +02:00

116 lines
6.0 KiB
Markdown

# RepoSync: Offline Repository Synchronization
RepoSync is a desktop application designed to synchronize Git repositories and their wikis between two servers that do not have a direct network connection. It's the perfect tool for developers and system administrators working in air-gapped environments, secure corporate networks, or any situation where a repository needs to be mirrored offline.
The process is managed through a portable "bundle folder," which acts as an intermediary to transfer the repository data.
## Core Features
- **Export to Bundles**: Connect to a source server (e.g., a Gitea instance) and export selected repositories and their wikis into a self-contained bundle folder.
- **Import from Bundles**: Connect to a destination server and import the content from the bundle folder, creating or updating repositories and wikis.
- **Intelligent Sync Status**: RepoSync automatically compares the local bundles with the remote server to show the status of each repository (e.g., `Synchronized`, `Needs Export`, `Ready to Import`, `Diverged`).
- **Profile Management**: Easily save and manage connection profiles (URL, access token) for multiple servers.
- **Graphical User Interface**: An intuitive GUI built with Tkinter makes the entire process simple and visual.
- **Wiki Support**: Full support for synchronizing the wiki associated with each repository, including a guided process for first-time imports.
## How It Works
The workflow is based on a simple, three-step offline process:
**Source Environment** -> **[RepoSync EXPORT]** -> **Bundle Folder (Portable)** -> **[RepoSync IMPORT]** -> **Destination Environment**
1. **Export**: On a machine with access to the source server, you use RepoSync to export repositories into a local folder. This folder contains Git bundle files (`.bundle`) and a `manifest.json` file that tracks the synchronization state.
2. **Transfer**: You manually move the bundle folder to a machine that has access to the destination server (e.g., using a USB drive).
3. **Import**: You use RepoSync on the second machine to read the bundle folder and push the updates to the destination server.
## Getting Started
1. **Clone the repository**:
```sh
git clone https://your-repository-url/RepoSync.git
cd RepoSync
```
2. **Install dependencies**:
```sh
pip install -r requirements.txt
```
3. **Run the application**:
```sh
python -m RepoSync
```
4. **First Configuration**:
- The first time you run the app, select a location for your "Bundle Folder".
- Go to `File -> Configure Profiles...` to add the connection details for your source and destination servers.
## User Manual
For detailed instructions, use cases, and troubleshooting, please refer to the user manual:
- [English User Manual](./MANUAL_EN.md)
- [Italian User Manual](./MANUAL_IT.md)
## License
This project is licensed under the MIT License.
# RepoSync: Sincronizzazione Offline di Repository
RepoSync è un'applicazione desktop progettata per sincronizzare repository Git e le relative wiki tra due server che non dispongono di una connessione di rete diretta. È lo strumento perfetto per sviluppatori e amministratori di sistema che lavorano in ambienti "air-gapped" (isolati dalla rete), reti aziendali sicure o qualsiasi situazione in cui un repository debba essere replicato offline.
Il processo è gestito attraverso una "cartella bundle" portatile, che funge da intermediario per trasferire i dati dei repository.
## Funzionalità Principali
- **Esportazione in Bundle**: Connettiti a un server di origine (es. un'istanza Gitea) ed esporta i repository selezionati e le loro wiki in una cartella bundle auto-contenuta.
- **Importazione da Bundle**: Connettiti a un server di destinazione e importa il contenuto dalla cartella bundle, creando o aggiornando repository e wiki.
- **Stato di Sincronizzazione Intelligente**: RepoSync confronta automaticamente i bundle locali con il server remoto per mostrare lo stato di ogni repository (es. `Sincronizzato`, `Da Esportare`, `Pronto per l'Importazione`, `Divergente`).
- **Gestione Profili**: Salva e gestisci facilmente i profili di connessione (URL, token di accesso) per più server.
- **Interfaccia Grafica**: Una GUI intuitiva costruita con Tkinter rende l'intero processo semplice e visivo.
- **Supporto Wiki**: Pieno supporto per la sincronizzazione delle wiki associate a ogni repository, incluso un processo guidato per la prima importazione.
## Come Funziona
Il flusso di lavoro si basa su un semplice processo offline in tre passaggi:
**Ambiente Sorgente** -> **[RepoSync ESPORTA]** -> **Cartella Bundle (Portatile)** -> **[RepoSync IMPORTA]** -> **Ambiente Destinazione**
1. **Esporta**: Su una macchina con accesso al server di origine, usi RepoSync per esportare i repository in una cartella locale. Questa cartella contiene file bundle di Git (`.bundle`) e un file `manifest.json` che tiene traccia dello stato di sincronizzazione.
2. **Trasferisci**: Sposti manualmente la cartella bundle su una macchina che ha accesso al server di destinazione (es. tramite una chiavetta USB).
3. **Importa**: Usi RepoSync sulla seconda macchina per leggere la cartella bundle e inviare (push) gli aggiornamenti al server di destinazione.
## Come Iniziare
1. **Clona il repository**:
```sh
git clone https://your-repository-url/RepoSync.git
cd RepoSync
```
2. **Installa le dipendenze**:
```sh
pip install -r requirements.txt
```
3. **Avvia l'applicazione**:
```sh
python -m RepoSync
```
4. **Prima Configurazione**:
- Al primo avvio, seleziona una posizione per la tua "Cartella Bundle".
- Vai su `File -> Configura Profili...` per aggiungere i dettagli di connessione per i tuoi server di origine e destinazione.
## Manuale Utente
Per istruzioni dettagliate, casi d'uso e risoluzione dei problemi, consulta il manuale utente:
- [Manuale Utente in Inglese](./MANUAL_EN.md)
- [Manuale Utente in Italiano](./MANUAL_IT.md)
## Licenza
Questo progetto è rilasciato con licenza MIT.