Go to file
2025-11-12 13:06:10 +01:00
.vscode Initial commit for profile RepoSync 2025-07-07 09:12:52 +02:00
config fix export and import from gitea 2025-07-10 11:42:44 +02:00
doc fix export wiki 2025-07-11 07:33:07 +02:00
export_folder add requ 2025-11-12 13:06:10 +01:00
reposync fix problem into closing application 2025-07-11 08:27:29 +02:00
.gitignore Chore: Stop tracking files based on .gitignore update. 2025-07-07 09:42:44 +02:00
pyproject.toml add requ 2025-11-12 13:06:10 +01:00
README.md fix export wiki 2025-07-11 07:33:07 +02:00
RepoSync.ico Initial project structure created by ProjectInitializerTool 2025-07-07 09:08:01 +02:00
requirements.txt add requ 2025-11-12 13:06:10 +01:00

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:

    git clone https://your-repository-url/RepoSync.git
    cd RepoSync
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Run the application:

    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:

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:

    git clone https://your-repository-url/RepoSync.git
    cd RepoSync
    
  2. Installa le dipendenze:

    pip install -r requirements.txt
    
  3. Avvia l'applicazione:

    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:

Licenza

Questo progetto è rilasciato con licenza MIT.