# 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.