Ну, вот, допустим, у меня есть репозиторий (псевдовывод):
$ hg branches
0.x x:502665f0749f
1.x x:502665f0749f
client0-productname32 x:502665f0749f
client2-productname41 x:502665f0749f
client6-productname66 x:502665f0749f
client9-productname99 x:502665f0749f
Допустим, в бранчах 0.x и 1.x есть не очень похожее ПО (буду называть его библиотекой), которое было чем-то одним сначала, но потом начало развиваться совершенно разными путями, сохраняя лишь некоторый общий код, который так же время от времени требуется синхронизировать.
Все остальные бранчи только и делают, что берут свежие срезы библиотеки из 0.x или 1.x, потом библиотека может дописываться в бранче типа clientx-productnamex, и ее требуется мержить с веткой 0.x или 1.x. Каждый бранч clientx-productnamex содержит код библиотеки и немного своих файлов, использующих api библиотеки.
И как это сделать? Или я не должен этого хотеть? Просто когда я удаляю файл в одном бранче, он удаляется в другом. Такое поведение мне непонятно. http://mercurial.selenic.com/wiki/NamedBranches читал, признаюсь, не осилил.