Файл потерял разрешение IIS_IUSRS после операции SVN Tortoise - PullRequest
16 голосов
/ 20 января 2012

Я недавно переключил свою машину для разработки с Windows XP на Windows 7, и после этого переключения у меня возникают проблемы с правами доступа к файлам при выполнении операций с Tortoise SVN.

Пример: у меня два веб-сайта ASP.NETустановить на моем местном IIS.Beta и Devlo.Beta - это проверка из ветви, над которой я работаю, Devlo - это проверка из магистрали.
Я внес некоторые изменения на веб-сайте Beta и зарегистрировался.
Затем ясделал merge для реинтеграции ветки в грузовике на сайте Devlo, но при тестировании я получил эту ошибку:

Parser Error   
Description: An error occurred during the parsing of a resource required to 
service this request. Please review the following specific parse error details 
and modify your source file appropriately.  

Parser Error Message: Access to the path 'C:\[...]' is denied.

После исследования я обнаружил, что каждый файл, который был измененЧерепаха SVN merge утратила права доступа к файлам (чтение, чтение и выполнение) для пользователей IUSE и IIS_IUSRS .

Я мог бы вернуть их вручную, но это происходит каждый раз, когда я выполняю такую ​​операцию.Есть ли способ сохранить эти разрешения без изменений с помощью операции SVN?


Обновление
До слияния файл наследовал, это разрешение из родительской папки (имеетдолжен сделать.)
Before Merge

Но не после объединения:

After Merge

Исходный файл (вбета-папка) наследуется это разрешение от родительской папки.Почему TortoiseSVN (явно?) Блокирует наследование разрешений?

Ответы [ 4 ]

12 голосов
/ 09 марта 2012

У меня была такая же проблема, и я решил ее с помощью этого SO ответа: https://stackoverflow.com/a/8993163/361831

В ответе упоминается, что обновленные файлы копируются в каталог .svn / tmp, расположенный на верхнем уровне вашей рабочей копии (по состоянию на tortoiseSVN 1.7). Этот каталог верхнего уровня не имел разрешений IIS, поэтому я думаю, что они не наследуются во время копирования. Поэтому я просто установил разрешения IIS для этого каталога верхнего уровня и установил наследование, и это устранило проблему.

4 голосов
/ 09 мая 2012

Когда Subversion обновляет файл, он сначала создает временную версию в .svn / tmp /.Затем он перемещает файл в нужное место.(Это позволяет избежать сбоев)

В 1.6 это было сделано для каждого каталога отдельно, но в 1.7 в каталоге верхнего уровня вашей рабочей копии есть только .svn.

Если как-торазрешения файловой системы для этого каталога .svn ограничены, возможно, что ограничения скопированы с файлом при его перемещении на место.(Subversion не меняет сами разрешения в Windows)

ОТВЕТ: Найдите каталог .svn для этого проекта и исправьте разрешения с разрешениями, необходимыми вашему проекту.

0 голосов
/ 06 февраля 2012

У меня была одинаковая проблема на обеих моих 64-битных машинах Win7. Я бы проверял код одного, переходил к другому, делал обновление SVN Tortoise и должен был сбросить разрешения для папки, чтобы позволить разрешениям родительской папки распространяться вниз.

Я наконец-то нашел эту статью, попробовал ее, и через две недели она, похоже, задерживается.

  • Откройте редактор реестра (нажмите Пуск> Выполнить, введите regedit, затем нажмите ENTER).

  • Найдите следующий раздел реестра:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer,

  • Выбрав ключ, в меню «Правка» выберите «Добавить значение», а затем добавьте следующее значение реестра:

  • Имя значения: ForceCopyAclwithFile

  • Тип данных: DWORD

  • Значение данных: 1

  • Выход из редактора реестра.

http://kb.globalscape.com/KnowledgebaseArticle10473.aspx

0 голосов
/ 20 января 2012

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

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

См. Также: Явные и унаследованные разрешения

Каждое существующее разрешение может быть назначено одним из двух способов: явно или по наследству.По этой причине разрешения называются явными разрешениями и унаследованными разрешениями.

  • Явными разрешениями являются разрешения, которые устанавливаются по умолчанию при создании объекта или действием пользователя.
  • Унаследованные разрешения - это разрешения, которые предоставляются объекту, поскольку он является дочерним по отношению к родительскому объекту.

Подобно способу управления правами для групп пользователей, разрешения лучше всего подходят для контейнеров объектов.Объекты в контейнере наследуют все разрешения доступа в этом контейнере.

См. Также: TortoiseSVN - Удаление, перемещение и переименование

После переименования иходы выполняются как удаление с последующим добавлением ...

...