116 lines
6.0 KiB
Markdown
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. |