2010-11-03 5 views
2

У меня есть оккупированный ртутный репозиторий, на который пользовательские, пользовательские и пользовательские права имеют права нажимать. UserA может с радостью нажать/вытащить и т. Д., Но после нажатия UserC ... UserA начинает получать следующую ошибку:Нажатие пользователем в меркурийный репозиторий вызывает ошибку http 500 для других пользователей

abort: HTTP Ошибка 500: .hg \ store \ data/_web/_mvc._sitemap.i: Доступ запрещен

Единственное «исправление» для этого - это nuke и перезапустить удаленный репозиторий.

Есть ли у кого-нибудь опыт в этом вопросе?

Обновление: Репозиторий находится на диске на сервере, где находится IIS. Пользователи подключаются локально. Настройка очень правильна для вики-версии Mercurial.

+0

Предоставьте более подробную информацию о сервере mercurial. Как это было настроено. Как пользователи к нему обращаются ... – pyfunc

+0

Я обновил вопрос для ясности. – Webjedi

+1

Это проблема разрешений, когда C толкает файлы, которые он добавляет, не имеет необходимых прав, это означает, что веб-сервер не может получить к ним доступ. – tonfa

ответ

2

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

Существует несколько общих способов избежать этого: - все это задача администратора сервера, а не толкающая работа пользователя. Либо:

  • изменение прав доступа, так что все новые файлы будут автоматически добавлены с правами, которые позволяют все сотрудники доступ на чтение/запись
  • сделать все использовать только интерфейс HTTP для толкания/потянув так что все чтения/записи выполняются тот же пользователь (IIS)

В земле Unix первый легко использовать, используя «липкий групповой бит» и «umask». На окнах, вероятно, есть еще более простой способ, который работает только в половине случаев. ;)

+0

Каждый пользовался интерфейсом HTTP так, что это было странно и почему это, казалось, не работало хорошо. То, что я сделал и, похоже, работает, - это изменение владельца .hg и подпапок в группе Users на сервере. Спасибо, тонна ... поклялась бы, что через HTTP и один пользователь IIS был бы в порядке, но, видимо, нет. – Webjedi

+0

Это тупое воспоминание, но я думаю, что Mercurial использует разрешения самого каталога .hg/store как разрешения для любых новых файлов, которые он создает (ANDed с обратным к umask on * nix), поэтому, если .hg/store был первоначально создан без дружественных к группе людей, которые могли бы изменить ситуацию. Это может объяснить вам, что вы исправляете вложенные папки .hg. Во всяком случае, рад, что хорошо пойти за тобой сейчас. –