Программное обеспечение, с которым я работаю, организует свои файлы в различных средах под экземплярами. Вызывая среды 'Env-A', 'Env-B' для данного экземпляра, структура каталога тогда:
Instance
- Env-A
- src
- Env-B
- src
Эти среды похожи на ветки в системе контроля версий, и я пытаюсь управлять ими как таковой с помощью Git.
Важно отметить, что исходные файлы можно редактировать только из программного обеспечения; дополнительная ценность использования VCS состоит в том, чтобы иметь возможность сравнивать среды и вести только историю. В частности, было бы невозможно заполнить src
в Env-B
из Git.
То, чего я пытался добиться, - это иметь один репозиторий для каждого экземпляра с рабочими деревьями, соответствующими средам.
Чего я не понимаю, так это как добавить рабочее дерево в хранилище, используя существующий путь.
Я изначально создал хранилище с помощью:
git --work-tree=/Instance/Env-A/src --git-dir=/src/instance.git init
Когда я пытаюсь добавить рабочее дерево в этот репозиторий, используя:
cd /src/instance.git
git worktree add /Instance/Env-B/src Env-B
Я получаю сообщение об ошибке fatal: '/Instance/Env-B/src' already exists
, которое, как я понимаю, ожидается, поскольку Git хочет продублировать извлеченные файлы (то есть содержимое /Instance/Env-A/src
) по указанному пути.
Я подумал о двух следующих способах получить похожий результат:
- создайте новое рабочее дерево по другому пути, позволяя Git скопировать файлы, а затем замените этот путь символической ссылкой на
/Instance/Env-B/src
;
- создать один репозиторий для каждой среды, а затем перетащить их в другой репозиторий как разные ветви.
Я еще не пробовал эти идеи, поскольку у меня есть ощущение, что вариант, который я искал до сих пор, был бы чище.
Таким образом, вопрос сводится к тому, возможно ли добавить рабочее дерево в репозиторий, используя существующий путь (содержащий файлы, похожие на извлеченные файлы, но не полностью совпадающие с ними)?