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?
Grazie! Tuttavia, nel frattempo sono passato a 'git' che permette questo tipo di aggiornamento (' git -A') – Meinersbur
Lo svn2svn è specifico per Windows (l'OP sta chiedendo uno strumento su unix). –