In der Tat wird über Subrepositories geschrieben, sie seien der letzte Ausweg. Ich glaube aber das liegt daran, daß die Leute nicht mit geteilten Codebibliotheken arbeiten, ich sehe nämlich nicht, wie das anders zu lösen wäre.
Diese "feature of last resort" Keule kommt halt aus einer Ecke, in der Delphi mit seiner 1-Exe Philosophie gänzlich unbekannt ist. Abhängigkeiten zwischen Modulen werden dort über Tools wie NuGet gelöst und die Module lassen sich auch in der Regel unabhängig voneinander erstellen. Der klassische Delphi-Programmierer möchte allerdings die gesamten Sourcen für ein Release in einem definierten Zustand haben, das Ganze dann auch noch in projekt-relativen Pfaden und dafür sind die Mercurial Subrepos einfach das Mittel der Wahl. Ich arbeite nun schon viele Jahre damit und nach einer kurzen Umgewöhnung direkt nach dem Umstieg von Subversion mit seinen Externals funktioniert das einfach tadellos. Mittlerweile ist die Performance beim Push mit Subrepos auch viel besser als noch zu Anfang, so daß deswegen auch keine speziellen Tricks mehr angewandt werden müssen. Selbst wenn man mal versehentlich (oder absichtlich) in der Projektkopie des Subrepos rumwerkelt, lässt sich das dank der genialen Merge-Eigenschaften in Mercurial in der Regel problemlos wieder gerade rücken.