Выполните как отображения спецификаций клиента с Mercurial - PullRequest
3 голосов
/ 11 ноября 2010

Мы недавно перешли из Perforce в Mercurial и нам это нравится!

Одна маленькая проблема: после долгих исследований мы не можем понять, как сопоставить специальный каталог в хранилище с каким-то специальным местом на клиенте. Вот пример нашего репозитория hg:

/foo/source files
/bar/source files
/build
    /macosx/mac make files
    /win/windows make files

В Perforce мы использовали сопоставления спецификаций клиента для сопоставления // depot / build / macosx / ... просто / build / ... на клиенте Mac и // depot / build / win / ... в / build / ... в окне разработчика Windows. Каталоги foo и bar синхронизируются как есть. Makefiles в / foo и / bar предполагают, что наши сборочные make-файлы находятся в / build, и мы хотели бы оставить их как есть. Конечный клиентский набор файлов должен выглядеть следующим образом:

/foo/source files
/bar/source files
/build/client specific make files

Я читал о подпунктах, но это решение, похоже, не зависит от клиента.

Любая идея, как решить эту проблему, будет очень цениться!

Ответы [ 3 ]

3 голосов
/ 11 ноября 2010

Вы не можете проверить только части репозитория с Mercurial.

Вы всегда получаете клон, содержащий все, и рабочий каталог также будет содержать все.

С Mercurial вам следуетстарайтесь иметь 1 репозиторий для 1 проекта, чтобы все, что вы получаете логически, были вместе, и тогда вам не нужно было бы сильно нуждаться лишь в его части.ваш репозиторий Mercurial всегда будет точно соответствовать вашей структуре на диске.

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

Вы не можете сделать это с Mercurial, поскольку у него нет концепции клиента отдельно от депо.

Тем не менее, вы можете использовать символическую ссылку в Mac OS X (ln -s) и соединение на окнах (mklink на Vista и выше, используя инструмент соединения на XP http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx), чтобы решить эту проблему науровень файловой системы.

В качестве альтернативы вы можете использовать переменную в Makefiles для ссылки на каталог сборки (например, $(BUILD)/something.ext вместо build/something.ext).

1 голос
/ 11 ноября 2010

Такое отображение не может быть сделано в Mercurial.Для «узких» клонов есть выдающийся элемент TODO, так что вы можете проверить только подкаталог.И я мог видеть реализацию этой поддержки такого рода функциональности.Но опять же, я знаю, что что-то вроде этого будет считаться слишком «умным» (читай сложным), и будет много откатов к идее.

Между тем, я бы предложилодно из этих двух решений.

  1. Символические ссылки.Поместите символическую ссылку на каталог build в файле .hgignore.Тогда каждый человек может сделать свою собственную символическую ссылку на соответствующий каталог файлов сборки.Это имеет тот недостаток, что не работает на платформе без символических ссылок.
  2. Переменная окружения, которая используется в make-файле верхнего уровня для создания пути к специфичному для платформы make-файлу, который она должна вызывать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...