Domanda

Così ho il mio repository subversion memorizzati su qualche nuvola (ad esempio code.google.com), ma a causa di vari motivi ho bisogno di fare il mio codice non pubblico.

ho deciso che avevo bisogno di scaricare l'intero archivio e migrare al mio server svn.

Così sono andato sull'utilizzo:

svnsync init DEST SRC
svnsync sync DEST

E ci sono voluti circa 0,5 secondi per ogni revisione del pronti contro termine!

Per fortuna il mio repo aveva solo come 200 revisioni ... così un paio di minuti di attesa. Ma per quanto riguarda i progetti maturi che hanno 200.000 o 2.000.000 di revisioni!

... 2E6 * 0.5 / 60/60/24 ~ circa 11 giorni!


C'è qualcosa più veloce di "svnsync" per scaricare il pronti contro termine da una nuvola?

È stato utile?

Soluzione

Beh, ovviamente è possibile eseguire il backup da soli sul server e poi zip e scaricarlo. Oppure si potrebbe semplicemente non scaricare tutta la storia.

Ma qual è il punto della questione? È un po 'accademica, come il problema è risolto.

Altri suggerimenti

Ho questo stesso problema nella mia collezione di repository che hanno centinaia di migliaia di revisioni. Ecco come ottenere intorno ad esso:

  1. Creare repository vuota sul mirror.
  2. Creare un file di dump gziped del mio repository. (Il mio sistema di backup già fa questo) (nota: questo passaggio ha preso durante la notte per inviare il mio repository gigante in continente)
  3. SCP (o la vostra tecnica di copia file remoto preferito), il file di dump al server mirror.
  4. repository di carico, avendo cura di specificare --force-uuid.
  5. Impostare le revprops sulla revisione 0. Ho appena preso un repository vuoto normalmente configurato e guardò la sua rev 0.

Ora siete pronti per eseguire svnsync sul server master. Questo continuerà da dove la vostra discarica lasciato fuori a.

Nel caso del PO, in cui non si ha accesso alla console al server svn, svnsync (che è essenzialmente svn checkout dal URL 1 combinato con svn commit all'URL 2) è buono come si sta per ottenere.

Ma se si ha accesso al server, ci sono modi più veloci rispetto svnsync. Un buon metodo per costruire uno specchio è l'uso svnadmin hotcopy per rendere la copia iniziale del repository, quindi utilizzare l'opzione svnsync init --allow-non-empty aggiunto in subversion 1.7 per trasformarlo in uno specchio. Questo ti dà anche un backup dei ganci ecc, che svnsync non altrimenti fare.

Si noti che si vuole spostare la directory hooks a hooks-original o qualcosa in modo che non saranno utilizzati dallo specchio --- soprattutto se si dispone di un post-commit hook sul repo originale che chiama svnsync sync!

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