2012-02-22 20 views
6

Uso Mercurial per la versione che controlla il mio codice sorgente. Ma alcune persone preferiscono altri sistemi di controllo delle versioni (come git, Bazaar, SVN, CVS).repository di codice sorgente multipli

Mi piacerebbe sapere, è possibile archiviare un repository su più sistemi contemporaneamente, in modo che le persone possano utilizzare qualsiasi repository che desiderano?

+2

Le persone che vogliono possono facilmente tirare dal repo, poi fare 'darcs init' o' init' git o 'import' svn nella loro copia locale, se lo desiderano. Difficilmente puoi soddisfare le preferenze di tutti sul lato server, e mantenere i tuoi repository master in sincronismo è fastidioso e richiede molte risorse. – tripleee

risposta

4

GitHub ha sviluppato l'estensione hg-git per Mercurial. Questa estensione ti permette di clonare da repository git usando Mercurial, e poi di tornare indietro. Quindi se non ti dispiace avere un repository git centrale, allora sarebbe certamente possibile accedervi usando sia git che mercurial.

Anche se un'altra risposta ha evidenziato che la maggior parte degli strumenti VCS che hai citato sono abbastanza simili all'uso, quindi è discutibile se valga la pena di mettere nello sforzo di permettere alle persone di usare quello che vogliono, rispetto allo sforzo minimo coinvolto nell'apprendimento di un nuovo sistema.

3

Non so su Mercurial ma con AccuRev è possibile mantenere il codice sorgente in AccuRev e Git. Il plugin Kando si occupa della replica da AccuRev a Git e viceversa. Per ulteriori dettagli, consulta http://www.accurev.com/kando

2

Non facilmente: dovresti tenere ognuno di essi in sincrono con l'altro, tramite una moltitudine di script di hook ed eventi. È possibile, ad esempio, effettuare il checkout da subversion, fare un hg init in quella cartella e lavorare temporaneamente usando mercurial, e poi eventualmente tornare a subversion quando si è soddisfatti (assicurandosi di non aggiungere e commit e file .hg) . Inoltre, a seconda del numero di sviluppatori, è possibile entrare in tutti i tipi di problemi con i conflitti derivanti dall'unione se due sviluppatori si affidano allo stesso file con diversi sistemi di controllo versione.

Poiché Subversion (e CVS) sono sistemi di controllo della versione centralizzati, e git, bazaar e mercurial sono tutti distribuiti, tenerli sincronizzati richiederebbe una copia master per ciascuno.

Gli strumenti VCS citati sono tutti abbastanza simili sulla riga di comando (anche se CVS in realtà non dovrebbe essere più utilizzato), quindi la curva di apprendimento per gli altri utenti non è particolarmente ripida.

4

E 'possibile memorizzare un repository in sistemi multipli in una sola volta

Penso la risposta è no, come un repository ha un formato specifico legato alla domanda.

La cosa migliore da fare per autorizzato altro sviluppatore di utilizzare l'applicazione client che si adatta alle loro esigenze, se è compatibile con il processo di lavoro.

Esempio: si dispone di un repository SVN esistente e un altro repository Git. Come sviluppatore, vorrei utilizzare solo BZR. Posso usare il plugin bzr-svn o bzr-git per diramazione da SVN o Git, effettuare il commit localmente con BZR (e beneficiare delle funzionalità BZR), e quindi riportare il risultato in SVN o Git.

1

Dipende se gli strumenti di conversione sono facili da scegliere e utilizzare ad es. git: git-svn è ufficialmente supportato, è costruire nella versione per Windows e facile da installare in Debian/Ubuntu con deb confeziona

hg:
https://www.mercurial-scm.org/wiki/WorkingWithSubversion
https://www.mercurial-scm.org/wiki/RepositoryConversion#Subversion con molti tipi di convertitori da scegliere da, e molti di loro richiede una certa configurazione

bzr:
bzr-svn è integrato nella versione di Windows ed è supportato ufficialmente
dettagli qui: http://wiki.bazaar.canonical.com/ForeignBranches/Subversion