Domanda

Abbiamo completamente perso il nostro repository e abbiamo 8 sviluppatori con modifiche senza impegno. Si presume che il ripristino dal backup non sia possibile.

Se una persona potesse avere accesso a tutte le copie di lavoro (copia file o condivisione remota) è possibile unire le modifiche nelle nostre copie di lavoro a una copia di lavoro? La copia di lavoro finale potrebbe quindi essere importata in un nuovo repository.

In breve, puoi unire due diverse copie funzionanti senza il server?

modifica: per favore non farmi cacca per non avere backup; quella parte è al di fuori del mio controllo. Si presumeva che fossero sottoposti a backup di notte.

Seguito : questo è ciò che abbiamo fatto:

  1. Iniziato con il più aggiornato copia funzionante di tutti gli sviluppatori.
  2. Importato nel nuovo repository.
  3. Funzionando dalla più recente revisione della copia di lavoro alla più vecchia, copiata SOLO nei file con le modifiche e poi impegnata.
  4. lavare-risciacquare-ripetere 6 volte. (2 sviluppatori non hanno apportato modifiche senza impegno).
  5. ha esportato tutte le vecchie copie funzionanti, le ha zippate e archiviate per conservarle in caso di necessità.
  6. Aggiornato le nostre revisioni nel database di gestione delle versioni al repo ora molto giovane.
È stato utile?

Soluzione

Dato che hai perso il tuo repository (mi dispiace per quello), hai anche perso l'intera cronologia.

Ora tutto ciò che puoi fare è ricominciare da capo.

  1. crea un nuovo repository
  2. crea la struttura delle cartelle
  3. esporta la copia di lavoro del primo utente in una nuova cartella
  4. importa la cartella esportata nel repository
  5. tutti gli altri utenti ora controllano una nuova copia funzionante
  6. tutti gli altri utenti ora "esportano" la loro copia di lavoro originale sulla nuova copia di lavoro

per "esportazione", intendo creare una copia della copia di lavoro, ma senza le cartelle nascoste .svn al suo interno.

Altri suggerimenti

Ciao, problema complicato questo. Ma questo è quello che vorrei fare.

  1. Crea un nuovo repository.
  2. Crea 8 rami e 1 tronco
  3. Importa il lavoro degli sviluppatori sui rami.
    • Sviluppatore 1 sulla filiale 1
    • Sviluppatore 2 sulla filiale 2
    • ecc ecc
  4. Quindi inizia a unire dal ramo 1 al tronco. E quando hai una condizione stabile nel bagagliaio, si continua con il ramo 2 ecc ecc.

E quando hai finito con questo lavoro orribile, insegnare agli sviluppatori il check-in anticipato e spesso ... E come usare i rami ...

/ Johan

Il tuo problema non è che hai perso il server ma il repository stesso. Oltre a ricreare un nuovo repository e ordinare attentamente le varie copie funzionanti per l'importazione, non vedo cosa potresti fare. Buona fortuna.

PS: male per te non avere backup ...

PPS: questo è il tipo di problema che DVCS risolve naturalmente avendo per la maggior parte di loro una copia completa del repository nella sandbox di ogni sviluppatore.

Il modo più semplice sarebbe quello di creare il proprio server, creare un repository di prova, aggiungere un build (più stabile) al suo interno e unire le copie funzionanti una alla volta. Ma sì, hai perso tutta la storia perché hai perso il tuo vecchio repository.

È quindi possibile creare il repository principale da quello di prova.

Proverei a scegliere solo una copia funzionante da cui eseguire un'importazione per il nuovo repository, quindi reimpostare le restanti 7 copie funzionanti in quel nuovo repository utilizzando l'interruttore svn, possibilmente con trasferimento, per fargli credere che sia lo stesso repository ma trasferito. Basta provare a scegliere una copia di lavoro per l'importazione iniziale che non abbia (o meno possibile) modifiche strutturali dal repository perso: ad es. solo modifiche ai file.

Naturalmente, fai tonnellate di backup delle tue copie funzionanti nel caso in cui quanto sopra non funziona :)

Subversion mantiene la versione originale di un file nella copia di lavoro locale. Crea un nuovo repository, crea una copia della copia di lavoro più vecchia, annulla le modifiche sulla COPIA della copia di lavoro, quindi importa quella copia di lavoro nel tuo nuovo repository.

svn import: http://svnbook.red-bean.com/ it / 1.0 / re12.html

Dopo l'importazione, è possibile utilizzare svn switch --relocate per reindirizzare le altre copie funzionanti nel nuovo repository e confermare le modifiche.

svn switch --relocate: http: //svnbook.red-bean .com / it / 1.1 / ch04s05.html

Crea un nuovo repository nella stessa posizione di quello vecchio dalla copia di lavoro più originale (in questo modo acquisisci più cronologia nel nuovo repository).

Se e dove non funziona, inserisci le directory .svn da un checkout del nuovo repository. (Ad esempio, checkout ed elimina tutto tranne le directory .svn)

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