Расширение Mercurial Acl запрещает извлечение некоторых файлов - PullRequest
1 голос
/ 13 июля 2010

Я новый пользователь Mercurial. Я установил расширение acl, добавив его в мой файл hgrc:

[hooks]
pretxnchangegroup.acl = python:hgext.acl.hook

[acl]
sources = serve pull push

[acl.deny]
** = mercurial

Так что с этим кодом выше я запрещаю доступ ко всем файлам для пользователя "Mercurial". Я успешно протестировал расширение acl, и оно прекрасно работает, когда я пытаюсь протолкнуть в мой центральный репозиторий, в который я поместил код выше. Как и ожидалось, я получаю сообщение о том, что доступ для пользователя "Mercurial" запрещен.

Теперь проблема в том, что когда я начинаю извлекаю из центрального хранилища, у меня нет никаких ограничений, поэтому я могу вытащить что-нибудь без каких-либо ограничений. То, что я хочу, это запретить доступ по запросу для некоторых файлов, как я могу сделать, когда я попробовал push comand. Есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 04 марта 2011

Как отмечалось в комментариях к tghw, звучит так, что вам действительно нужно частичное клонирование по filepath, чтобы человек мог клонировать или удалять только определенные файлы или каталоги, но это невозможно в Mercurial (или git),Это так, потому что каждая ревизия идентифицируется уникальным хешем, который включает, помимо прочего, хеш всех изменений файла.Если у вас нет всех файлов, у вас нет всех изменений и вы не можете проверить хеш.

Если вам действительно нужно скрыть доступ на чтение для некоторых файлов от некоторых людей, которых вы 'Вам нужно будет разделить их на отдельные репозитории.

1 голос
/ 13 июля 2010

Mercurial, в отличие от Subversion, не позволяет управлять отдельными файлами, и на то есть веские причины.Модель DVCS помещает весь репозиторий на машину каждого разработчика, поэтому, даже если вы ограничиваете файлы на push и pull, пользователь все равно может просто hg cat файл получить его содержимое.

Вместо попытки сделать этона стороне клиента я бы вместо этого ломал ваши репо в зависимости от того, кому что нужно и устанавливал разрешения для отдельных репо.См. Мой ответ на стеке Kiln Должен ли я использовать более одного хранилища? .Вы можете установить разрешения через http (s) или SSH, или, если вы используете Kiln, через наш интерфейс разрешений.

0 голосов
/ 04 марта 2011

У меня есть решение:

конвертировать репо в git:

https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Mercurial

...