Domanda

Ho una situazione che sto cercando di far fronte con coinvolgimento server SVN della mia azienda. Manteniamo tutti i nostro codice importante in un server di locked-down (che chiameremo questo server "dev"). Ci sono alcuni file che devono essere modificati dagli utenti esterni alla rete aziendale, quindi abbiamo un altro server SVN (il server "globale"), che è accessibile all'esterno del firewall e contiene le copie di tali directory che contengono i file necessari esternamente. Se è importante, la struttura delle cartelle del server globale è un sottoinsieme del server dev (vale a dire che è solo un paio di selezionare i file / directory, ma tutti hanno gli stessi percorsi relativi, ecc). Ho incluso una breve spiegazione di perché che stiamo cercando di fare questo, alla fine del post, se si desidera leggere, ma credetemi, deve essere fatto su due server separati.

A prima vista, sembra svnsync ideale per questo lavoro, ma ha lo sfortunato problema di richiedere che essa sia l'unica cosa che la modifica del repository di destinazione. Ovviamente, questo non funzionerà dato che il nostro repository dev è molto utilizzato.

Mi sembra che ci sono due soluzioni, e nessuno dei due è una buona soluzione. Sto sperando che qualcuno possa aiutarmi a tweak uno di questi, o meglio ancora fornire un'alternativa.

  1. La mia prima idea è quella di utilizzare gli esterni nel server dev, ma questo ha alcuni problemi. In particolare, una esterna seguirà la revisione testa (non vogliamo per impostarlo su una revisione specifica come che sconfiggere il punto), e quindi se abbiamo tirare su versioni precedenti del repo dev, le definizioni esterne saranno ancora puntare alla testa del pronti contro termine globale, anziché a quello che il repo globale sembrava all'età della nostra vecchia revisione -. quindi non saremo in grado di ricreare le vecchie versioni, semplicemente controllando una vecchia versione
  2. L'altra soluzione è quella di avere un job cron periodicamente esportare l'ultima revisione (s) dal repo globale e sovrapporre i file modificati su una copia di lavoro dalla repo dev, quindi applicare le modifiche. Probabilmente questo overlay-e-commit passo sarebbe stato fatto utilizzando lo script svn_load_dirs.pl che viene fornito con SVN. Questo sarebbe idealmente essere fatto come un post-commit hook sul repo globale, ma ancora una volta per motivi di firewall, il server globale non può accedere al server dev, quindi deve essere eseguita da una macchina all'interno del firewall (probabilmente la macchina server dev stessa) . Questo approccio ha gli svantaggi di: server dev può essere aggiornato da finché l'intervallo sul lavoro cron, e se qualcuno commette accidentalmente una modifica al server dev, il loro cambiamento otterrà calpestato. (Per inciso, se qualcuno può venire con un metodo di sincronizzazione bi-direzionale, sarebbe fantastico!)

Al momento sto appoggiato verso l'opzione 2, perché è sembra di farmi il più vicino a quello che mi serve il più possibile, ma è ancora una cattiva opzione abbastanza. E 'anche in sostanza quello che stiamo facendo attualmente, con un essere umano invece di un job cron. Le mie scuse per il lungo post. La ringrazio molto per tutto l'aiuto che potete fornire.

Spiegazione del perché: Abbiamo bisogno di questi file condivisi di esistere nella gerarchia di directory del server dev, perché sono una parte necessaria del nostro software, costruisce così, test, ecc deve averli. Non posso esporre il server dev attraverso il firewall - ho cercato di convincere i poteri forti e hanno fallito. Ho detto molto chiaramente ai decisori che avere due server separati per questo non è come SVN è destinato ad essere utilizzato e che ci sarà probabilmente problemi. Per contribuire a mitigare alcuni dei problemi che abbiamo previsto, solo il server globale sarà scrivibile. copia del server dev dei file sarà concettualmente sola lettura (modificato solo quando le modifiche vengono sincronizzate dal server globale), ma non credo che io possa effettivamente valere che solo lettura politica con controlli di accesso SVN perché alcuni dei file in che la struttura di directory non stanno andando a esistere nel repository globale, e giovedìs bisogno di essere modificabile in dev, quindi non posso fare ciecamente la cosa sola lettura. Impostazione di sola lettura su una base per-file sembra impossibile da mantenere, in quanto vi sono centinaia e vengono spesso aggiunti ed eliminati.

È stato utile?

Soluzione

Si potrebbe provare a impostare un proxy write-through, in modo che tutte le scritture sul repository pubblico vengono inoltrati automaticamente al server privato.

Non ho mai fatto questo, ma qui 's po' di documentazione su questo argomento.

Altri suggerimenti

Invece di complicarsi qui sul controllo del codice sorgente potrebbe essere la pena thnking sul dividendo i due pronti contro termine (rimuovendo il codice che vive in globale dal dev) e poi avere la build di dev build di consumare globale. Dal momento che la tua gente interne saranno in grado di impegnarsi per entrambi, e che hanno lo stesso codice di vivere in entrambi è sempre goign ad essere difficile.

Non ha menzionato il lingue utensili coinvolti ... quindi è difficile sapere come questo sta andando per adattarsi. Pensate un accumulo sulla pubblicazione globale l'artefatto (s) e quindi l'accumulo di risolvere globale che la dipendenza.

Una cosa che non ha menzionato in alternativa 2, si sta andando a perdere traccia di controllo come l'utente che si impegna a globale non sarà l'utente che si sovrappone e si impegna a dev.

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