Mam kilka quasi-powiązanych projektów, które chcę kontrolować wersji. W SVN bym je ustawić jak wiele katalogów w ramach jednego projektuUkład repozytorium Mercurial dla wielu gałęzi
/scripts #updates in sync with project1 & project2
/project1 #requires database
/project2 #requires database
/database
Naturalnie inne układy SVN są możliwe dla tego przykładu zabawek, ale ten układ ma zalety:
- mogę kopiować pliki między oddziałami zachowując historię
- mogę sprawdzić tylko część projektów, np
svn co repo/project2; svn co repo/database
. Pozwala to zaoszczędzić znaczną ilość miejsca na przechowywanie &, jeśli projekt1 jest duży. - Łatwe zarządzanie repozytorium, ponieważ dostęp użytkownika jest zdefiniowana raz dla wszystkich projektów
ten paradygmat nie mapuje dobrze Mercurial od you can't clone a single directory of a mercurial repo. Moje pytanie brzmi: jaki jest najczęstszy sposób przechowywania dużych, ściśle powiązanych projektów w środowisku rtęciowym?
Moje pomysły:
- wielu repozytoriów - traci historię plików, które przemieszczają się między projektami
- Forests - wydaje zablokowanych, i nie jestem pewien, jak to rozszerzenie jest stabilny
- nazwanych gałęzie z większości niezwiązane treści
- SubRepos - Niestety, używam Ubuntu 9.04, który wysyła tylko hg 1.1.2. W przeciwnym razie mogłoby to wyglądać na dobrą opcję:
Wow, dzięki za wymienione kroki oddziału. To zbyt brzydkie do rozważenia. Zajmę się tylko utratą historii - i tak był to dość rzadki przypadek. W rzeczywistości większym problemem niż scalanie zmian między projektami jest synchronizacja zależności. To znaczy. project1 @ r50 potrzebuje bazy danych @ r50. Można to zrobić za pomocą svn, choć wymaga to nieco bardziej skomplikowanego zamówienia, niż podałem powyżej. – Quantum7
Synchronizacja zależności jest dokładnie tym, do czego służą SubRepos i Forests. – Omnifarious
W celu dalszego opracowania, uważam SubRepos i Lasy za implementację svn: externals for Mercurial i Mercurial mindtu, że meta-dane powinny być przechowywane jawnie w plikach, a nie domyślnie dołączone do nich i zarządzane specjalnymi poleceniami VCS. – Omnifarious