Domanda

La mia azienda è passata inconsapevolmente da cv a sovversione e ora tutti desideriamo di avere di nuovo i cv. So che ci sono strumenti per migrare la cronologia e le modifiche da cvs a svn e non c'è equivalente per fare il contrario. Qualche suggerimento o idea su come farlo?

È stato utile?

Soluzione

Inizialmente l'ho aggiunto come commento alla risposta di qualcun altro, ma poi mi sono reso conto che era una specie di risposta. Ho già fatto questo tipo di transizioni in precedenza, dove non esisteva alcun modo per convertire da un sistema SCM a un altro.

Non è scienza missilistica scrivere uno script che prende l'elenco dei commit dal tuo repository SVN e li scorre uno alla volta, unendoli in un repository CVS appena creato. Ottenere tutti i rami e i tag esattamente corretti potrebbe essere un po 'più di lavoro, ma se vuoi semplicemente salvare la cronologia delle revisioni per alcuni rami, dovrebbe essere abbastanza facile.

Sono anche dell'opinione che non otterrai nulla tornando a CVS, ma se vuoi farlo, probabilmente scriverai il tuo script. L'esportazione " svn " comando sarà senza dubbio utile in questa impresa.

Altri suggerimenti

Quindi cosa succede a SVN che alla tua azienda non piace così tanto e CVS fa meglio? I progettisti di SVN hanno fatto di tutto per rendere l'esperienza SVN abbastanza simile a CVS. Se si utilizza il client Tortoise come front-end, l'esperienza è molto simile. SVN ti dà impegni atomici, che pur non essendo all'altezza dello standard di Perforce è miglia davanti a CVS.

Devo simpatizzare con la tua condizione. Ho aggiornato il nostro team di sviluppo e amp; Team IT da CVS a SVN. Ho avuto gli script Python giusti per aggiornare tutta la cronologia delle versioni e usiamo SVN felicemente da quasi 4 anni. Circa tre mesi fa il capo del team IT ha deciso di "aggiornare" tutti i suoi progetti da SVN per indovinare cosa? Esatto, il sollevatore pesante dei sistemi di controllo della versione: SourceSafe!

Definirei sicuramente SVN o guarderei anche alcuni dei più recenti sistemi distribuiti come Mercurial. Con questi sistemi non esiste un server centrale. Si affidano alla capacità di ramificare & amp; fondersi su dozzine o centinaia di colleghi. Definisci la tua topologia, quindi ad esempio, specificheresti un peer particolare come quello che esegue build giornaliere.

Non credo che esistano gli strumenti per andare nella direzione opposta, perché non c'è molta richiesta per questo.

Se proprio devi farlo, non dovrebbe essere molto difficile scrivere una sceneggiatura che ripercorra la storia del repository SVN, ottenendo ogni revisione e impegnandola in CVS.

A proposito, sono sinceramente interessato a sapere quali problemi hai con SVN.

SVN non è eccezionale. SVN è meglio di CVS. Se vuoi cambiare il checkout Mercurial, GIT, Bazaar.

Un aspetto di git non è stato discusso quando è stato portato alla tua attenzione in tutte queste altre risposte: git fornisce un'emulazione del server cvs, in modo che tu possa migrare su git (svn to git è facile e ben supportato) e successivamente utilizzare un'interfaccia server cvs per accedere al repository in modo centralizzato. Nessuno deve sapere che usi git in background e non devi affrontare problemi di backup distribuito.

Non un aggiornamento. Non farlo.

Seriamente, perché preferiresti CVS a SVN? CVS è letteralmente un giocattolo che finge di consentire alle squadre di lavorare senza una comunicazione esplicita. È davvero terribile.

Se hai bisogno di qualcosa di diverso da SVN per qualsiasi motivo, guarda altri sistemi di controllo della versione. Ce ne sono molti e sono quasi tutti migliori di CVS (in effetti, solo Visual Source Safe è altrettanto scadente).

Le tue opzioni sono probabilmente limitate in modo realistico. Ricorda che lo sviluppo attivo di CVS si è interrotto qualche tempo fa, quindi probabilmente non ci sono strumenti per te dagli sviluppatori CVS. E poiché uno dei principali obiettivi di svn era quello di essere un CVS migliore, probabilmente quegli sviluppatori non si sarebbero aspettati che nessuno si muovesse indietro.

Ma se non ti piace la sovversione, perché non dare un'occhiata ai più moderni sistemi distribuiti (git, mercurial ecc)?

quando tutto ciò che hai è un martello, tutto sembra un chiodo.

la migliore scommessa è imparare svn che renderà più ben informato.

Accetto con il caporale permaloso.

SVN è migliore di CVS, perché è stato progettato per essere - è più o meno la stessa cosa, con alcune semplificazioni e nuove funzionalità.

Con Svn puoi spostare / rinominare un file senza perdere la sua cronologia; ottieni commit più sicuri (i commit sono operazioni atomiche) e revisioni globali.

Ad ogni modo, prova a conoscerlo meglio prima di tornare al CVS e, ancora meglio, prova a capire davvero le tue esigenze come squadra per un repository.

PS: penso che il caporale stesse parlando di Mercurial

svn doveva essere migliore di cvs ma in alcune aree che non funzionava bene. Gli altri strumenti distribuiti sono molto più veloci (svn è lento come l'inferno, a volte anche cvs può essere più veloce), hanno funzionalità molto più utili di svn, si stanno sviluppando rapidamente (mentre vedere qualsiasi nuova funzione in svn richiede ANNI). D'altra parte svn è abbastanza facile da imparare e centralizzato (questo è importante per alcune persone).

Il team svn è focalizzato sulla propria agenda, è molto difficile ottenere supporto dagli sviluppatori (rispetto ad altri progetti open source), alcune segnalazioni di bug esistono da molto tempo senza alcun interesse da parte degli sviluppatori.

Sono deluso da come appare il progetto svn e da come è stato sviluppato ma, forse, questo cambierà in futuro.

gli unici 2 svantaggi della sovversione che posso pensare agli utenti che provengono da CVS sono

  • la velocità dei checkout su http (s)
  • la mancanza di modulalie

il primo può essere risolto usando svn (+ ssh) che è il formato più comparabile poiché CVS usa anche il proprio protocollo. il secondo è un po 'più complicato, ma può essere emulato da svn: externals (che hanno i loro cattivi effetti collaterali) Se hai riscontrato altri inconvenienti, sono tutto orecchio ..

Basta prestare attenzione a un punto: Bazzar, Mercurial ecc. (che sono stati consigliati da alcune persone qui) sono tutti sistemi di controllo della versione distribuiti. Ho trovato quasi impossibile gestire grandi gruppi di programmatori che lavorano sullo stesso codice sorgente usando questo tipo di strumenti. Nella mia azienda usiamo SVN e sta facendo un ottimo lavoro.

Non ho idea del perché tu voglia farlo, ma passando da SVN - > GIT - > CVS potrebbe funzionare

Dovresti correre ..

git svn clone http://thesvnserver ourrepo

Quindi utilizzare la seguente guida per esportare di nuovo in CVS (non del tutto sicuro che funzionerà):

http://issaris.blogspot.com /2005/11/cvs-to-git-and-back.html

git cvsexportcommit 4a20cbafdf25a141b31a8333284a332d1a4d6072

C'è anche git cvsserver

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