Разрешения Windows для каталога: Mercurial - hg merge - "abort: доступ запрещен" - PullRequest
4 голосов
/ 14 октября 2011

Справочная информация: это работает на Windows 2008 Server.

https://www.mercurial -scm.org / wiki / Workflows # Feature_separation_through_named_branches

Я - Mercurialновичок, и я пытаюсь следовать приведенному выше совету, где говорится: «Объединяйте настройки по умолчанию с вашей функцией как можно чаще» - и я уже делал это несколько раз ранее сегодня, уже с другими файлами.

Однако это новейшее изменение просто не будет сливаться.

Когда я выполняю 'hg merge default', я получаю ошибку "abort: Access is denied".Поискав в поиске, я вижу, что некоторые люди сообщали, что у них действительно были проблемы с разрешениями для рассматриваемых файлов.Там нет ничего особенного в разрешениях для рассматриваемого файла, по крайней мере, не то, что я вижу.Я тренируюсь в Linux, а не в Windows, так что, по сути, я не совсем понимаю права доступа к файлам Windows.Cygwin утверждает, что рассматриваемый файл - 644 (то есть я могу записать в файл), то есть тот же набор разрешений, что и любой другой файл, который ранее был успешно затронут процессом слияния hg в прошлом.

Я посмотрел на команду attrib для DOS, и рядом с этим файлом также не отображается флаг «только для чтения».

Если это вопрос не по Mercurial, чем по немувопрос о разрешениях Windows, я тоже рад изменить теги.

Я предполагаю, что эта ошибка "abort: Access is denied" относится к файлу в наборе изменений, который необходимо объединить,а не к одному из .hg / files, но это очень загадочное сообщение об ошибке - в нем не говорится, к какому файлу возникла проблема с доступом (и в наборе изменений есть только один единственный файл, который был изменен - ​​я специально попыталсячтобы быть ОЧЕНЬ простым с этим тестом).

ОБНОВЛЕНИЕ:

Сделал «откат hg» и попробовал тот же тест команд в том же порядке, оставляя файлыоткрыть, только с совершенно другим файлом (lib / blort.html вместо blah / foo.html).

«hg merge» работал просто отлично.

Так что, вероятно, есть что-то особенно странноеразрешения для конкретного файла, с которого я начал (foo.html), или каталога, который является его родительским.

Другое правка

Определенно что-то не так в родительском каталоге, так как у меня была та же проблема с другим файлом в каталоге, но проблема не проявляется нигде в структуре каталога, только в этом одном каталоге.

Только что проверил разрешения для lib / vs. blah / иони оба выглядят одинаково в Cygwin, но это лишь смутное приближение списков ACL для Windows.Когда вы проверяете их, щелкая правой кнопкой мыши по каждому каталогу и просматривая вкладки «Свойства», они снова кажутся одинаковыми для обоих каталогов, но я думаю, что суть проблемы в том, что я действительно не совсем понимаю ACL.

Есть ли какой-нибудь инструмент командной строки DOS, такой как 'attrib', только более мощный, который, подобно 'ls' в linux, дал бы мне больше информации, чем путаница с галочками, которые я получаю в 'Свойствах'?

Надеюсь, окончательное редактирование

Как определить разрешения Windows

«iCacls», кажется, является правильным инструментом для работы, иКажется, что это решило проблему, но я хотел бы продублировать это перед принятием / закрытием.

РЕЗЮМЕ

  1. В случае сомнений используйте--debug в ваших командах Mercurial.Сейчас это немного "дух", но спасибо @ lazy-badger за указание на это.

  2. Вы можете исправить свои права на Server 2008 с помощью команды, подобной icacls path /grant domain\user:(OI)(CI)F (см.например, http://www.petri.co.il/forums/showthread.php?t=23207),, но обязательно сделайте это из расширенного окна CMD («Запуск от имени администратора»). Опять «да» для людей из Windows, не так очевидно для Linux-пользователя (вместо этого я стал искать в DOS некоторые DOSэквивалентно sudo).

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Вы можете получить ошибку «Отказано в доступе» в Windows, если файл открыт другой программе.Вы можете попробовать закрыть программы, в которых могут быть открыты какие-либо файлы в этом дереве, или перезагрузить компьютер (что, конечно, закроет все программы).

2 голосов
/ 14 октября 2011

Просто отметьте, что «Отказано в доступе» при слиянии может иметь два разных корня: упомянутое @emil и неправильное или несуществующее право пользователя, под которым были запущены учетные данные hg, создавать временные файлы в $ TEMP папка

...