Domanda

Stiamo migrazione da Subversion a Mercurial e abbiamo incontrato un urto nel processo di conversione SVN-> Hg. In questo momento, il nostro singolo repository SVN detiene il codice per un paio distinti "progetti", e ci piacerebbe dividere loro a parte nel processo di migrazione. Il nostro SVN repo è organizzato come:

.
|-- proj1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- proj2
    |-- branches
    |-- tags
    `-- trunk

e vorremmo fare semplicemente proj1 e proj2 le proprie pronti contro termine Hg. Ci piacerebbe, ovviamente, non hanno storia specifica per proj1 apparire in una registrazione o di proj2. In questo momento, quando hg convert esegue la conversione, appena legge tutti i file abbastanza in silenzio, nemmeno i rami di distinzione da tronchi.

Qual è il processo per il filtraggio per directory e riconoscendo rami SVN in hg convert?

È stato utile?

Soluzione

ho ottenuto lavorando ora, grazie al ConvertExtension wiki pagina !

Ho provato il metodo di Ry4an, ma è venuto con gli aspetti negativi di dover prima convertire il repo SVN in un repo Mercurial intermedia prima di sciogliersi tutto, e che rami, tronco e tag non venivano riconosciuto perché ci sono due progetti ciascuno con le proprie filiali, tronco e tag.

ho scoperto che specificando manualmente i rami, directory tronco e tag ha lavorato molto per la conversione di un progetto da SVN per Mercurial alla volta:

hg \
--config convert.svn.trunk=proj1/trunk \
--config convert.svn.branches=proj1/branches \
--config convert.svn.tags=proj1/tags \
convert --authors authors.txt original-svn-dir hg-proj1

Questo si prenderà cura di riconoscere rami SVN, tag, e tronco e filtro per solo le revisioni proj1 allo stesso tempo. Poi, ho appena ripetuto per proj2.

Altri suggerimenti

Un altro modo per risolverlo sarebbe quello di utilizzare svnadmin dump e svndumpfilter di dividere il repo svn in un nuovo repository svn per progetto, come descritto nella documentazione svn. repository Splitting filtrando storia repository

Questo è fatto facilmente utilizzando l'estensione 'convertito', come hai suggerito. Ecco la procedura:

  1. fare un hg convert SVNREPO all-in-one-mercurial-repo da SVN per Mercurial con tutto
  2. fare più comandi hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo - uno per ogni progetto

Queste filemaps hanno in sé le linee come:

exclude proj1
rename proj2 .

Questo sarebbe il la FileMap utilizzato quando si estraggono solo progetto di due di pronti contro termine dal repo Mercurial all-in-one. Potrebbe essere necessario elencare ogni singolo file in quelle mappe, ma penso che le directory sono a posto.

C'è un'altra domanda qui su SO in cui ho risposto più o meno la stessa cosa e incollato in un esempio completo, ma che dovrebbe essere sufficiente per farti andare.

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