Какой SCM поддерживает символические ссылки в Windows и Linux? - PullRequest
5 голосов
/ 30 января 2010

Я обнаружил, что Subversion не поддерживает символические ссылки под Windows .

Мне интересно, знает ли кто-нибудь инструмент SCM, способный работать с символическими ссылками как в Windows, так и в Linux?

В инструментах SCM в настоящее время отсутствует поддержка символических ссылок в Windows:

  • прозрачный чехол
  • 1012 * Subversion *
  • Mercurial
  • неволей

Ответы [ 2 ]

3 голосов
/ 31 октября 2010

Большинство SCM сосредоточены на хранении нормализованных данных (представьте, что ваш SCM - это база данных). Это означает, что они хранят исходные файлы и создают сценарии вместо хранения исполняемых файлов, полученных из них. Люди могут хранить и то и другое, но это приводит к ненужному дублированию.

Аналогично, символические ссылки являются ссылками на другие файлы и представляют проблему, аналогичную нормализации данных.

Кроме того, об указателях вообще трудно рассуждать. Добавление поддержки указателей (символических ссылок) в SCM означает, что определенные операции должны будут проверять, куда указывают символические ссылки, и действовать соответствующим образом. Это усложняет слияние, добавление / обновление символических ссылок сложно, потому что вам нужно выяснить, куда оно указывает (в репо и вне репо, две символические ссылки на один файл и т. Д.).

По этим причинам большинство VCS / SCM не позволяют вам управлять символическими ссылками. Большинство SCM имеют поддержку пользовательских хуков. Использование пользовательских хуков или других сценариев для управления символическими ссылками является лучшим подходом, потому что это означает, что SCM не должен рассуждать о них (он их не знает), и вы обойдете стороной проблему нормализации данных, которую они создают.

Итак, в заключение вам лучше всего написать сценарии, которые управляют вашими символическими ссылками, а затем вызывать их в подходящее время (клонирование / извлечение, обновление / принятие и т. Д.).

2 голосов
/ 03 ноября 2010

Git сама обрабатывает символические ссылки (символические ссылки) изначально; Я имею в виду, что Git хранит информацию о том, что файл является символической ссылкой в ​​репозитории.

Я думаю, что Git для Windows (msysGit) может представлять символические ссылки в рабочем каталоге на NTFS. Существует также переменная конфигурации core.symlinks, которая, если false заставляет Git проверять символические ссылки, извлекаются как небольшие простые файлы, содержащие текст ссылки. Git проверит и при необходимости установит «core.symlinks» в false при создании хранилища (git clone или git init).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...