Упс, простите за форматирование в предыдущем ответе. Вот оно снова, отформатировано!
Итак, вот два сценария, с которыми столкнется большинство людей:
А) Использование суб-репозиториев в полностью локальной ситуации.
По сути, это решение Райана.
Я предполагаю, что только разработчики, работающие соло, будут в этой лодке.
cd /home/moi/hgrepos
hg init lib
cd lib
echo foo > lib.txt
hg ci -A -m Init
cd /home/moi/hgrepos
hg init main
cd main
echo foo > main.txt
echo lib = ../lib > .hgsub
hg clone ../lib
hg add .hgsub main.txt
hg ci -m Init
cd /home/moi/hgrepos
hg clone main main-clone
cd main-clone/lib
echo "Modified while on main trunk" >>lib.txt
hg commit -m "Modified lib.txt, while on main trunk"
hg push
cd /home/moi/hgrepos/lib
hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
cat lib.txt
foo
Modified while on main trunk
----------------------------------------------- ------------------
B) Использование под-репозиториев поверх ssh.
Я думаю, что большинство разработчиков, работающих в командах, будут в этой лодке.
1) Настроить lib
cd /home/moi/hgrepos
hg init lib
cd lib
echo foo > lib.txt
hg ci -A -m Init
2) Настройка основного
cd /home/moi/hgrepos
hg init main
cd main
echo foo > main.txt
echo lib=ssh://moi@www.moi.com/hgrepos/lib > .hgsub
hg clone ssh://moi@www.moi.com/hgrepos/lib lib
hg add .hgsub main.txt
hg ci -m Init
3) Клонировать lib в hgtest dir
cd /home/moi/hgtest
hg clone ssh://moi@www.moi.com/hgrepos/lib lib
4) Клонирование главного в hgtest dir
cd /home/moi/hgtest
hg clone ssh://moi@www.moi.com/hgrepos/main main
5) Изменить lib.txt, находясь в основной магистрали
cd /home/moi/hgtest/main/lib
echo "Modified while on main trunk" >>lib.txt
hg commit -m "Modified lib.txt, while on main trunk"
hg push
6) Убедитесь, что lib.txt изменился в репозитории lib
cd /home/moi/hgtest/lib
hg pull
hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
cat lib.txt
foo
Modified while on main trunk