2013-09-20 3 views
3

Я в особой уникальной ситуации использую Mercurial. Моя группа разрабатывает различные аппаратные архитектуры, на которых запущена встроенная Linux; в результате мы делаем большую часть нашей разработки кода на настольных Linux и ПК и делаем сборки на наших серверах, работающих на различных аппаратных архитектурах.Mercurial и изменение разрешений UNIX-файла от клиента Windows

Существует сценарий, когда кто-то, использующий Windows, должен вытолкнуть все свои изменения на сервер mercurial. Тем не менее, сервер и все наши машины сборки запускают Linux и ожидают определенных (UNIX) разрешений файлов для определенных типов файлов.

Мой вопрос в том, возможно ли это, и есть ли средство для изменения разрешений UNIX-файлов с ПК или есть способ в Mercurial для настройки каких-либо правил разрешения файлов при добавлении файлов и изменении настроек?

Обратите внимание, что большинство пользователей ПК используют графический интерфейс TortoiseHG или интерфейс командной строки hg.

Спасибо!

ответ

5

Mercurial может отслеживать только две вещи для файла: исполняемое состояние и состояние символической ссылки. Это означает, что вы не можете хранить более сложные разрешения (например, групповые разрешения).

В Windows Mercurial не будет пытаться читать или записывать исполняемые и символические биты. Таким образом, новые файлы будут отображаться как неисполняемые в Unix (режим 644) и как обычные файлы. Используйте hg manifest -v, чтобы просмотреть разрешения, преобразованные обратно в соглашение Unix, но помните, что Mercurial действительно хранит только два бита на файл.

Невозможно управлять хранимыми битами в Windows. Для установки битов не существует системы правил, но для реализации такой системы может быть написано расширение.

Если вам нужны более специализированные разрешения для ваших файлов, то вам нужно будет установить их после hg update на ваших машинах сборки. Для этого можно использовать крючок, или вы можете написать расширение. Я не думаю, что есть existing extension, который делает это, но расширения, которые сохраняют и восстанавливают время модификации проверенных файлов, должны быть хорошей отправной точкой.

+1

Да, мне было интересно, как разрешения были разрешены людьми, создающими файлы в Windows vs Linux. Я обнаружил, что, когда на серверах Linux попали толкаемые файлы, сама ОС давала разрешения по умолчанию и, как вы сказали, отслеживается только исполняемое состояние. Я посмотрю на крючки и расширения. Благодаря! – akagixxer

+0

@akagixxer: Правильно, Mercurial создает новые файлы в рабочей копии, используя обычный вызов 'open (path, 'w')', а затем до 'umask' удаляет такие вещи, как разрешения на запись для группы и других (или не с разрешительной 'umask'). –

Смежные вопросы