2010-02-10 17 views
6

Ho un progetto principale su cui sto lavorando, che ha diversi moduli/directory. Il progetto principale è associato al repository svn locale. tuttavia, ogni volta che eseguo il commit, desidero inviare alcuni moduli/directory al repository di codici Google. Tuttavia, voglio solo aggiornare dal repository locale. C'è un modo per farlo automaticamente? mio IDE è emacs 23.svn commit su più repository

Grazie

risposta

6

Questo è how the SVN book recommends lo fai. Sembra piuttosto doloroso e fondamentalmente ruota attorno al fatto di avere una copia funzionante per ogni repository e di copiare letteralmente i cambiamenti tra i due (probabilmente potresti farlo anche con le patch SVN).

In alternativa è possibile look into using SVK (che è il livello di distribuzione per SVN, aggiunta di funzionalità Git-ish a SVN) per impostare il repository mirroring or merging su repository esterni. Attenzione, la documentazione per SVK è un po 'disorganizzata. Apparentemente l'aiuto da linea di comando è buono.

4

Ogni copia di lavoro in punti SVN ad un repository. Quello che potresti fare è utilizzare svn switch per cambiare il tuo repository in modo che punti al repository di Google Code, prima di aggiornare e confermare le directory in cui desideri essere memorizzato. Potresti quindi tornare indietro per indirizzare la tua copia di lavoro al tuo repository standard. Ciò, ovviamente, si basa sulla compatibilità delle strutture di directory su entrambi i repository.

1

Se non errato, lo switch SVN non è una soluzione.

L'opzione SVN non collega (o scambia) solo una directory di lavoro da un repository a un altro repository diverso! Effettua anche un aggiornamento silenzioso (o checkout) dal nuovo repository. Quindi, se non sbaglio, eventuali modifiche locali nella directory di lavoro potrebbero andare perse poiché sarebbero state sovrascritte dal nuovo repository.

Sembra che debba avere una copia di lavoro per ciascun repository e copiare letteralmente le modifiche tra la directory di lavoro originale e le altre.

1

Sembra che ci sia una soluzione migliore utilizzando svnsync.

  1. Inizializzazione di un repository mirror per la sincronizzazione dal repository di origine. Questa è la prima svnsync operazione si esegue su un repository aspiranti specchio:

    svnsync initialize MIRROR_URL SOURCE_URL 
    
  2. trasferire tutte le revisioni in sospeso dalla repository di origine al repository specchio:

    svnsync synchronize DEST_URL 
    
  3. Solo per occasioni selezionate o speciali per copiare le revisioni in sospeso come spiegato nel manuale:

    svnsync copy-revprops DEST_URL [REV[:REV2] 
    
Problemi correlati