2010-03-16 1 views
5

Ho impegnato un progetto di terze parti nel mio repository svn. Ora ho una nuova versione di quel progetto e mi piacerebbe sostituirla nel mio repository.Unisci struttura di directory non controllata nel repository SVN

Il progetto è abbastanza grande (1,2 GB) e la nuova versione ha nuovi file/directory e anche file/directory cancellati.

La soluzione banale è

svn rm project 
mv /path/to/new/project . 
svn add project 
svn ci 

Tuttavia, ho sciolto la storia per tutto. Inoltre, il server svn non sarà in grado di utilizzare la compressione delta (Sì, lo spazio del server non ha importanza).

Un altro modo è semplicemente sovrascrivere tutti i file nella directory di lavoro e quindi eseguirne il commit. Tuttavia, i file eliminati rimangono nel repository. svn add --force * anche "dimenticato" per aggiungere alcuni file.

Quali sono le altre possibilità di impegnare la nuova versione? Si tratta di un caso d'uso insolito, quindi non esiste un supporto integrato per questo? (Con tortoisesvn avevo pasticciare con i .svn cartelle, Tortoise offre per eliminare i file/cartelle mancante nella finestra di impegnarsi, ma la versione a riga di comando si rifiuta di impegnarsi se incontra i file/cartelle non eliminate utilizzando svn rm)

Extra 1: Come evitare modifiche ai miei repository da sovrascrivere? (C'è solo pochi, in modo da ri-applicazione è accettabile per il momento)

Extra 2: ho sostituito tutti i collegamenti simbolici con le copie della destinazione (Per sbarazzarsi di special status changed errori). Come evitare questo?

Extra 3: Come gestire file/directory rinominati? Dato che ho appena ricevuto la nuova versione senza cronologia delle modifiche, è impossibile determinarle automaticamente. svn mv prima di impegnarsi?

risposta

5

Lo strumento fs2svn, parte di svn2svn, fornisce le basi di ciò che stai cercando. Inizia con this post.

+0

Grazie! Tuttavia, nel frattempo sono passato a 'git' che permette questo tipo di aggiornamento (' git -A') – Meinersbur

+0

Lo svn2svn è specifico per Windows (l'OP sta chiedendo uno strumento su unix). –

1

Si potrebbe provare il metodo che la sovversione consiglia di unire nel codice fornitore tramite un ramo del fornitore e l'unione del tronco. Hanno anche uno strumento, svn_load_dirs.pl, per aiutare con aggiunte, rimozioni e spostamenti nella versione upstream.

dettagli sono disponibili all'indirizzo: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html