Ho un numero di progetti quasi correlati che voglio controllare versione. In SVN Io li impostato come più directory all'interno di un unico progettoLayout del repository Mercurial per più rami
/scripts #updates in sync with project1 & project2
/project1 #requires database
/project2 #requires database
/database
Naturalmente altri layout SVN sono possibili per questo esempio giocattolo, ma questo layout ha dei vantaggi:
- posso copiare i file tra i rami preservando la cronologia
- Posso controllare solo un sottoinsieme di progetti, ad esempio
svn co repo/project2; svn co repo/database
. Questa operazione consente di risparmiare una notevole quantità di spazio di archiviazione & se project1 è di grandi dimensioni. - Facilità di gestione repository, dal momento che l'accesso degli utenti è definito una volta per tutti i progetti
Questo paradigma non mappa bene a mercuriali dal you can't clone a single directory of a mercurial repo. Quindi la mia domanda è: qual è il modo più comune per archiviare progetti grandi e strettamente correlati in modo mercuriale?
Le mie idee:
- più repository - perde cronologia dei file che si muovono tra i progetti
- Forests - sembra in fase di stallo, e io non sono sicuro di come stabile questa estensione è
- rami denominati con la maggior parte contenuto non correlato
- SubRepos - Sfortunatamente sto utilizzando Ubuntu 9.04, che spedisce solo hg 1.1.2. Altrimenti questa sembrerebbe una buona opzione
Wow, grazie per i passaggi del ramo con nome. È troppo brutto da considerare. Mi occuperò solo di perdere la storia, comunque era un caso abbastanza raro. In realtà, un problema più grande della fusione delle modifiche tra i progetti è la sincronizzazione delle dipendenze. Cioè project1 @ r50 richiede database @ r50. Questo può essere fatto con svn, anche se richiede un checkout leggermente più complicato di quanto ho detto sopra. – Quantum7
La sincronizzazione delle dipendenze è esattamente ciò che SubRepos e Forests sono per. – Omnifarious
Per approfondire ulteriormente, considero SubRepos e Forests come un'implementazione di svn: externals per Mercurial, e con la mentalità Mercurial che i meta-dati dovrebbero essere archiviati esplicitamente in file piuttosto che collegati implicitamente a loro e gestiti con comandi VCS per scopi speciali. – Omnifarious