Domanda

Sembra un semplice problema:

  • Ho un repository SVN all'interno del nostro firewall.
  • Ho un repository SVN al di fuori del nostro firewall.
  • Ho utenti all'interno e all'esterno del firewall. (nessuna VPN non è un'opzione :( sarebbe troppo facile)
  • le macchine all'interno del firewall possono comunicare con il server SVN esterno. Ma non viceversa.
  • l'SVN esterno è temporaneo: il repository principale sarà sempre all'interno.

Voglio in qualche modo (dall'interno, molto probabilmente) prendere tutte le modifiche in una e applicarle all'altra. E viceversa. Sembra semplice e presumo che GIT possa farlo, ma stiamo usando SVN.

Qualcuno l'ha fatto? Non mi dispiace che sia un processo manuale: ci sono solo un paio di persone esterne e non hanno bisogno di aggiornamenti al momento, due o tre volte al giorno lo farebbero.

Credo che apache.org faccia questo, ma non riesco a trovare documenti su COME lo fanno. Ci sono un paio di prodotti là fuori che lo fanno (beh, uno), ma mi piacerebbe sapere se qualcuno ha un modo carino e pulito per farlo senza di loro. svnsync fa questo, solo in una direzione (master-slave)

Felice di averlo eseguito su Windows, Linux o Mac, dato che li abbiamo tutti. Windows e Mac preferiscono però.

Aiuto! :) :)

[aggiorna] dopo 12 mesi di pasticciare (e non averne bisogno alla fine), la risposta corretta è, secondo me, corretta. Usa git - avere un repository che tira da SVN-A, quindi spingere in un nuovo repository git, quindi spingere da lì a SVN-B. Dovrebbe funzionare :)

È stato utile?

Soluzione

Consiglierei SVK o git-svn .

Entrambi consentono di creare un mirror esterno del repository svn e di consentire agli sviluppatori esterni di eseguire il commit direttamente sul mirror esterno. È quindi possibile estrarre e inviare le modifiche da questo mirror esterno al repository principale interno.

git-svn richiederebbe (penso) agli sviluppatori esterni di usare git. Lo preferisco, ma sarei riluttante a spingerlo sugli altri.

SVK, tuttavia, consente agli sviluppatori esterni di continuare a usare svn. Poiché il repository interno è accessibile solo internamente, un account interno o un utente dovrebbero gestire la sincronizzazione periodica (probabilmente un lavoro cron funzionerebbe).

Ecco un howto esteso sul wiki SVK: UsingSVKAsARepositoryMirroringSystem

Altri suggerimenti

La semplicità è in genere il modo migliore e sembra che tu abbia già una soluzione semplice: usa il repository SVN al di fuori del firewall.

Hai già detto che le macchine all'interno del firewall possono raggiungerlo, e ovviamente le macchine esterne possono raggiungerlo ... quindi sono tutti, quindi quale giustificazione hai per un secondo repository SVN all'interno del firewall? Se è solo un backup, esegui il backup di quello esterno.

Fammi sapere se mi manca una parte dei tuoi requisiti.

Un altro pensiero ... se si hanno istanze SVN sia interne che esterne ... che cosa può impedirle entrambe di fornire lo stesso ID elenco modifiche contemporaneamente, per scopi diversi? Se stai cercando una soluzione decentralizzata, dovresti cercare GIT anziché SVN.

Una delle funzionalità dell'Enterprise Edition di VisualSVN Server è Replication Repository multisito che fa esattamente quello che stai cercando.

La funzionalità si basa sulla tecnologia VisualDVN Distributed File System (VDFS) progettata per consentire la replica trasparente del repository Subversion su siti distribuiti geograficamente. Alcune delle caratteristiche notevoli di VDFS:

  • Tutti i repository Subversion VDFS distribuiti sono scrivibili,
  • VDFS consente la replica trasparente dei dati bidirezionali,
  • VDFS supporta le regole di autorizzazione della replica e meccanismi avanzati di autenticazione come l'autenticazione integrata di Windows (NTLM / Negoziazione) con crittografia SSL / TLS protetta.
  • Tutti i repository VDFS contengono lo stesso set di dati,
  • La replica del repository su WAN con VDFS è fino a x10 più veloce della replica basata su proxy write-through,
  • La configurazione di VDFS viene eseguita tramite un'interfaccia grafica senza passaggi complicati.

Vale la pena notare che VDFS segue il classico modello di replica master-slave che presenta vantaggi significativi rispetto al modello di replica master-master perché è più adatto per replicare i repository Subversion con FSFS back-end di tipo fs. La tecnologia VDFS è molto più affidabile delle soluzioni di replica master-master per SVN.

Interfaccia di configurazione VDFS per repository SVN su più siti Apache

Hmm ... mantenere due repository sincronizzati tra loro non è banale, credo. Implicherebbe sostanzialmente la trasformazione di SVN in Mercurial o Git.

La soluzione più semplice e scalabile è la replica master / slave usando svnsync descritta nel libro Subversion: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

Una cosa che potresti provare è replicare il repository a livello di file. Sto usando FolderShare ( http://www.foldershare.com - funziona su Windows e Mac) per un dispositivo simile scenario, anche se lo sto replicando solo a scopo di backup e non ho provato a connettermi utilizzando SVN alla replica.

http://wandisco.com/subversion/multisite/

  

Sfrutta Subversion MultiSite   Replica unica di WANdisco   tecnologia per la sincronizzazione immediata   Repository di sovversione collegati   una vasta rete (WAN). Utenti a   ogni posizione sperimenta l'area locale   prestazioni di velocità della rete (LAN) per   entrambe le operazioni di lettura e scrittura.   Subversion MultiSite fornisce anche   backup continuo continuo e autorigenerazione   capacità che automatizzano il disastro   recupero, quindi i tempi di fermo sono   praticamente eliminato.

Se stai cercando una spiegazione dettagliata della replica master / slave usando svnsync, segui http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top