Сбой Mercurial: "Системе не удается найти указанный файл", но он не указан

Я не могу зафиксировать ни одного файла Mercurial. Вот разные варианты команды:

Вариант с --traceback

C:\Users\543829657\workspace\dev.appl.ib.cbl>hg commit --traceback "--message=Ad
ded a task Xml2Java for creation request/response files" --user "Petr Gangnus <petr.gangnus@moneta.cz>" -- application/build.gradle
transaction abort!
rollback completed
Traceback (most recent call last):
  File "mercurial\dispatch.pyo", line 160, in _runcatch
  File "mercurial\dispatch.pyo", line 885, in _dispatch
  File "mercurial\dispatch.pyo", line 646, in runcommand
  File "mercurial\extensions.pyo", line 168, in closure
  File "hgext\color.pyo", line 521, in colorcmd
  File "mercurial\dispatch.pyo", line 976, in _runcommand
  File "mercurial\dispatch.pyo", line 947, in checkargs
  File "mercurial\dispatch.pyo", line 882, in <lambda>
  File "mercurial\util.pyo", line 716, in check
  File "mercurial\commands.pyo", line 1546, in commit
  File "mercurial\cmdutil.pyo", line 2456, in commit
  File "mercurial\commands.pyo", line 1540, in commitfunc
  File "mercurial\localrepo.pyo", line 64, in wrapper
  File "mercurial\localrepo.pyo", line 1508, in commit
  File "mercurial\localrepo.pyo", line 64, in wrapper
  File "mercurial\localrepo.pyo", line 1596, in commitctx
  File "mercurial\extensions.pyo", line 168, in closure
  File "c:/Users/543829657/workspace/mercurial-tools/commitsigs.py", line 357, in add
  File "c:/Users/543829657/workspace/mercurial-tools/commitsigs.py", line 168, in opensslsign
  File "subprocess.pyo", line 710, in __init__
  File "subprocess.pyo", line 958, in _execute_child
WindowsError: [Error 2] The system cannot find the file specified
abort: The system cannot find the file specified

Вариант с --debug

C:\Users\543829657\workspace\dev.appl.ib.cbl>hg commit --debug "--message=
Added a task Xml2Java for creation request/response files" --user "Petr Gangnus <petr.gangnus@moneta.cz>"
 -- application/build.gradle
calling hook precommit.checkfiles: hghook_precommit_checkfiles.fixup_hook
checkfiles: removing tabs and/or trailing whitespace in changed files...
checkfiles: opts:
checkfiles: checked extensions:
checkfiles: ignored extensions: .sln .suo .vcproj .csproj .ui
checkfiles: ignored files:
checkfiles: check diffs only: False
checkfiles: use spaces: True
checkfiles: tab size: 4
checkfiles: considering files:
  application/build.gradle
checkfiles: application/build.gradle ok
committing files:
application/build.gradle
committing manifest
committing changelog
transaction abort!
rollback completed
abort: The system cannot find the file specified

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

У меня есть подозрение, что, хотя ошибка в варианте "--debug" появляется после фиксации журнала изменений, это может быть что-то с этим? Я не вижу ни одного файла с именем changelog в проекте, и есть три, содержащие это слово, и все они явно старые - клонированы из репозитория.

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

Редактор Mercurial: "abort: система не может найти указанный файл" - фиксация завершается неудачно в том же месте того же сценария, но... Сам стек отличается, и там происходит только фиксация без сообщения. У меня есть сообщение. А автор пытается использовать альтернативный редактор по умолчанию и не может - это его проблема, абсолютно отличная от моей. Я не изменил редактор. У меня нет проблем с редактором. Я установил hg, клонировал проект, изменил один файл и хочу его зафиксировать - вот и все.

TortoiseHg не может зафиксировать -"Система не может найти указанный файл" - здесь заголовок сообщения об ошибке не "abort:", а "abort: Adding: "

Сбой обновления gradle для Android Studio (система не может найти указанный файл) - здесь фиксация вызывается из Android Studio, и указанный файл IS

"abort: система не может найти указанный файл" в Mercurial - сообщения почти одинаковые, только отсутствующий файл IS указан в Mercurial. И стек отличается. И в моем случае я могу обновить, тогда как тот автор не мог.

В других случаях на SO с этим сообщением об ошибке не Mercurial вызывает ошибку.

Я посмотрел много похожих случаев на разных сайтах и ​​не нашел такой же проблемы. Всегда что-то важное было другим.

@Leon предположил интересную версию ниже - что причина неправильно установлена ​​openssl/gnupg. Я проверил установку OpenSSL, побежал HG help commitsigs - и, прочитав результат, заметил такое интересное свойство, как forcesign,

If the parametr is specified with a value of 1, the commit process will be
aborted and rolled back if the changeset cannot be signed for whatever reason
(bad setup, expired certificate and so on. The default is that the commit
will still be successful, but not signed.

Да, это выглядит многообещающе.... Но даже установка этого свойства в 0 ничего не изменила в этой ситуации.

1 ответ

Решение

commitsigs.py Записи в вашей трассировке стека предполагают, что проблема связана с расширением Commitsigs. Проверь это

  • у тебя есть gnupg или же openssl установлен в вашей системе
  • у вас есть действующий ключ GPG (в случае gnupg) или сертификат X509 (в случае openssl)
  • и Commitsigs правильно настроен (запустить hg help commitsigs для деталей). В частности, путь к gnupg или же openssl должно быть правильно указано, в противном случае вы можете столкнуться с описанной проблемой, даже если commitsigs.forcesign режим отключен.
Другие вопросы по тегам