Проблема заключалась в том, что папка.hg/wcache принадлежала пользователю root.
Таким образом, задним числом кажется очевидным
Если в сообщении об ошибке упоминается «отказано в доступе», проверьте права доступа к рассматриваемой папке. В этом случае он принадлежал root. Я смог решить с помощью
[.hg]$ sudo chown cgrandits wcache
где cgrandits — мой идентификатор пользователя. Очевидно, мне нужна возможность sudo для исправления этого, но мне нужна возможность sudo для запуска сценариев автоматизации сборки, которые привели меня к этому в первую очередь.
Я попал в эту ситуацию, потому что использую сценарии автоматизации сборки (, которые, по общему признанию, не до конца понимаю ), которые настраивают среду chroot и поэтому должны выполняться от имени пользователя root. Иногда эти скрипты автоматизации сборки выполняют переменные команды. Если папка wcache не существует в момент выполнения скрипта автоматизации сборки с правами root, папка wcache будет создана , но с владельцем как root . Но если папка wcache уже существует, действия hg будут использовать ее как есть . Таким образом, обнаружение этой проблемы зависит от исторического порядка команд hg, заданных непосредственно в командной строке, и выполнения определенных сценариев автоматизации сборки.
Использованиеsed
:
sed 's/^[[:blank:]]*//' file >newfile
Это сопоставит и удалит любую последовательность пробелов (пробелов или табуляции )в начале любой строки в файле с именем file
. Затем он запишет полученные данные в файл newfile
с помощью перенаправления в оболочке.