Se disponi di questa opzione, utilizza uno strumento dedicato invece di utilizzare SCM per questo. Ho scritto su questo su SO , ma l'argomento si riduce all'accoppiamento, in particolare accoppiamento troppo stretto . Lo sviluppo flessibile del software consiste nell'evitare un accoppiamento stretto a meno che non sia realmente necessario e sia i sottoregisti Mercurial che i sottomoduli Git introducono un accoppiamento molto stretto.
Inoltre, i sottorepos / sottomoduli introducono una maggiore complessità nel flusso di lavoro giornaliero. Se le persone hanno già familiarità con SCM, allora questo potrebbe essere accettabile. Ma ho visto molte organizzazioni dove tentano di introdurre i sottoprasi Mercurial e allo stesso tempo - ritengo che sia un errore poiché rende tutto ancora più complicato.
La Mercurial wiki ha una serie di raccomandazioni su come utilizzare i sottospos. Questi includono l'uso di un repository di shell sottile. Ciò evita di accoppiare i componenti insieme. Puoi lavorare in entrambi i subrepo secondo necessità e premere / tirare per aggiornarli. Qualche volta qualcuno (magari un ingegnere di costruzione, magari un server di integrazione continua) testerà le nuove configurazioni dei componenti. Se superano i test, viene eseguito un nuovo commit nel repository shell in modo che le persone abbiano una nuova base da utilizzare per il proprio lavoro.