Есть ли система контроля версий с иерархической структурой?
Нужно что-то подобное к Git'у, но с возможностью ведения истории изменений на уровне директорий. В гите это можно решить через сабмодули, но для этого придется создавать отдельные репозитории. Также нужна возможность копирования данных по определенным директориями (в общем не всем разом весь репозиторий, а по мере необходимости). Есть конечно в гите squash, но и в нем не ясно почему нельзя указать инлайново при определенном pull нужный путь (вроде на SO есть ответы с filter, но на 2.22.0 он просто не работает (и то в хэлпе он упоминается только у fetch)
тогда смысл комментировать вопрос, не понимая сути дела?
чтобы как раз и прояснить делали и на основе их предложить решение
Где это сказано?
По тому что в системах контроля версий вообще уже десятки лет не существует подобного функционала - то есть git submodules самое близкое из того что требуется, но тебе это не нравится.
Я пока жду услышать что у тебя какой-то модульный проект или проекты и тебе нужно воспользоваться разными репозиториями для какого-то менеджера пакета (в зависимости от того что ты делаешь)
Виталий Столяров, тут просто большинство разговоров о подобных проектах. Но в таком чистом виде таких систем контроля версий просто н существует просто по причине что самый крупный юнит в системе контроля версий это репозиторий и выше него нулевая видимость. Так что либо несколько репозиториев либо один. Пока деже непонятно что вас не устраивает в нескольких репозиториях и для чего это все
Иван Шумов, при нескольких репозиториях нужно извращаться с написание скриптов для рекурсивного pull'а каждого репозитория, коммита в нужный репозиторий и просмотра логов по нескольким дочерним репозиториям
Виталий Столяров, ага. Вот мы и попались, как говорится. Налицо отсутствие постановки работы по гайдлайнам)
Обычно такая проблема происходит в модульных проектах, когда есть зависимости и нет тестов.
Как это делают в больших компаниях:
- делается множество репозиториев
- каждый репозиторий обязан включать тесты и версионирования через теги
- единый проект собирается исключительно через пакетный обработчик (composer, npm, maven, pip ...) Для языка разработки
- все эти репозитории независимо разрабатываются и общаются исключительно на уровне интерфейсов чтобы не было необходимости лезть в проекте внутрь зависимости и ее дебажить - она работает как черный ящик
Иван Шумов, омгг.. да не идет речь ни о каких софтверных проектах, тем более с тестами. Все файлы содержат тестовую или медиа информацию, а не программные инструкции