Во-первых, я не согласен, что внешнее зло. Хотя они не идеальны.
В данный момент вы делаете несколько проверок для создания рабочей копии. Если бы вы использовали внешние устройства, это бы делало именно это, но автоматически и последовательно каждый раз.
Если вы указываете свои внешние элементы на теги (и / или определенные ревизии) в целевых проектах, вам нужно только пометить текущий проект для каждого выпуска (так как этот тег будет точно указывать на то, на что вы указывали). В вашем проекте также будет запись о том, когда именно вы изменили внешние ссылки, чтобы использовать новую версию определенной библиотеки.
Внешние факторы не являются панацеей - и, как показывает сообщение, могут быть проблемы. Я уверен, что есть что-то лучше, чем внешние, но я еще не нашел (даже концептуально). Разумеется, используемая вами структура может дать много информации и контроля в процессе разработки, использование внешних элементов может добавить к этому. Однако проблемы, которые у него были, не были фундаментальными проблемами коррупции - чистое получение решило бы все, и это довольно редко (вы действительно не можете создать новую ветвь библиотеки в своем репо?).
Точки для рассмотрения - использование рекурсивных внешних элементов. Я не продаю ни «да», ни «нет» и склоняюсь к прагматичному подходу.
Подумайте об использовании поршня, как предполагает статья, я не видел его в действии, поэтому не могу прокомментировать, он может лучше выполнять ту же работу, что и внешние.