Сброс разрешений группы при обновлении Mercurial - PullRequest
2 голосов
/ 28 июня 2010

Я настроил свой репозиторий hg в соответствии с документами, описанными здесь: MultipleCommitters .

Однако, когда я выполняю «hg update -C», чтобы воссоздать рабочую копию локально, права доступа к файлу изменились так, что это в конечном итоге вызывает ошибки при нажатии, когда другие разработчики пытаются зафиксировать изменения. Предположительно, при правильной настройке hg update сохранит права доступа к файлам. Тем не менее, похоже, что это не так:

-rwxrwxr-x 1 root mercurial 2948 2010-06-24 15:27 .hg/store/data/src/public/index.php.i

против. (фактический исходный файл, после удаления рабочей копии и повторного создания с помощью «hg update -C»)

-rw-r--r-- 1 root mercurial 820 2010-06-28 12:07 src/public/index.php

Как можно настроить mercurial таким образом, чтобы при создании пользователями новых файлов или изменении существующих файлов группа и ее разрешения сохранялись?


UPDATE

2010.06.28

Вот пример ошибок, которые я вижу:

remote: resolving manifests
remote: getting src/configs/application.ini
remote: abort: Permission denied: /hg/repo/path/src/configs/application.ini
remote: warning: changegroup hook exited with status 255
remote: calling hook changegroup.notify: hgext.notify.hook

Ответы [ 2 ]

2 голосов
/ 03 января 2011

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

chmod + s `find.-type d`

Это решит проблему, с которой столкнулся ОП.

1 голос
/ 29 июня 2010

Какой именно метод вы использовали?Опишите подробнее, каковы ваши настройки.

Да, Mercurial запоминает права доступа к файлам при коммите.Когда вы делаете hg update -C, он воссоздает файлы с разрешениями, которые были установлены при последней фиксации.

Похоже, ваше сообщение об ошибке говорит о том, что файлы репозитория на сервере репозитория имеют неправильные права доступа / владельца, поэтому вы не можете их изменятьс нажатием hg.Это может быть потому, что кто-то зафиксировал и отправил файлы как другой пользователь сервера репозитория.

Я бы рекомендовал общий метод ssh (https://www.mercurial -scm.org / wiki / SharedSSH ): вы установилисоздать отдельную учетную запись пользователя для управления репозиторием, добавить открытые ssh-ключи разработчика (вы должны ограничить их использование только с mercurial в определенных репозиториях), а затем использовать ssh://hguser@server/path/to/repository в качестве URL.

Кстати: по умолчанию mercurial не делаетне запускать какие-либо перехваты, если пользователь, который делал push / pull, отсутствует в списке доверенных.См. Доверенный раздел в man hgrc.

BTW2: не запускайте обычное программное обеспечение в качестве пользователя root.используйте для этого обычный аккаунт.

...