Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка при запуске хука в репозитории на сетевом диске #157

Open
yukon39 opened this issue Sep 25, 2020 · 12 comments

Comments

@yukon39
Copy link

yukon39 commented Sep 25, 2020

Если репозиторий находится на сетевом диске, то при коммите возникает ошибка запуска приложения:

ОШИБКА - Получен ненулевой код возврата 1. Выполнение скрипта остановлено!
ОШИБКА - {Модуль C:\Program Files\OneScript\lib\gitrunner\src\ГитРепозиторий.os / Ошибка в строке: 868 / '\\server\data\repo'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.}

Precommit1c - версия 2.3.0
oscript - 1.4.0 x64
git - 2.28 x64

Дополнительный issue по этой теме - git-for-windows/git#2638

Вкратце - теперь при получении каталога репозитория git разрешает все символические имена, включая алиасы сетевых дисков.

@zeratulayuris
Copy link

@yukon39 а можно подробный лог выполнения?

@yukon39
Copy link
Author

yukon39 commented Sep 28, 2020

Конечно:

S:\repo>git commit -m "test"
Start hooks before commit to unpack erf, epf and cfe
ИНФОРМАЦИЯ - precommit1c v2.3.0

ОШИБКА - Получен ненулевой код возврата 1. Выполнение скрипта остановлено!
ОШИБКА - {Модуль C:\Program Files\OneScript\lib\gitrunner\src\ГитРепозиторий.os / Ошибка в строке: 868 / '\\server\data\repo'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.}

@nixel2007
Copy link
Member

nixel2007 commented Sep 28, 2020

добавьте в хук перед прекоммитом

set LOGOS_CONFIG=logger.rootLogger=DEBUG

@Dezmont51
Copy link

В хук что-то не срабатывает

V:\git\tb_tests>git commit -m"g"
Start hooks before commit to unpack erf, epf and cfe
ОТЛАДКА - [o.lib.gitrunner] - РабочийКаталог: \\FS3-MAIN\data\git\tb_tests
ИНФОРМАЦИЯ - [o.a.~files-extractor] - precommit1c v2.3.0

ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-connection-string>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-user>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-pwd>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--v8version>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьПараметрФлаг: ИмяПараметра <--use-designer>
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ПутьВходящихДанных
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ПутьВходящихДанных
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --recursive
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Разбор команды: --git-precommit
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-connection-string
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-user
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-pwd
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --v8version
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --use-designer
ОТЛАДКА - [oscript.lib.cmdline] - Попадаю в РазобратьАргументы
ОТЛАДКА - [oscript.lib.cmdline] - Сбрасываю параметр-флаг: --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Сбрасываю параметр-флаг: --use-designer
ОТЛАДКА - [oscript.lib.cmdline] - Выбран токен: src
ОТЛАДКА - [oscript.lib.cmdline] - Ищу именованный параметр src
ОТЛАДКА - [oscript.lib.cmdline] - Ищу параметр-флаг src
ОТЛАДКА - [oscript.lib.cmdline] - Установлено значение позиционного параметра <ВыходнойКаталог = src>
ОТЛАДКА - [oscript.lib.cmdline] - Выбран токен:
ОТЛАДКА - [oscript.lib.cmdline] - Закончились токены
ОТЛАДКА - [oscript.lib.cmdline] - Трассировка РезультатРазбора:
ОТЛАДКА - [oscript.lib.cmdline] -               --remove-orig-bin-files:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               --use-designer:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               ВыходнойКаталог:src
ОТЛАДКА - [oscript.lib.cmdline] - Трассировка РезультатКоманды.ЗначенияПараметров:
ОТЛАДКА - [oscript.lib.cmdline] -               --remove-orig-bin-files:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               --use-designer:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               ВыходнойКаталог:src
ОТЛАДКА - [o.a.~files-extractor] - ТипЗнч(Аргументы)= Структура
ОТЛАДКА - [o.a.~files-extractor] - Передана команда: --git-precommit
ОТЛАДКА - [o.a.~files-extractor] - --remove-orig-bin-files = Нет
ОТЛАДКА - [o.a.~files-extractor] - --use-designer = Нет
ОТЛАДКА - [o.a.~files-extractor] - ВыходнойКаталог = src
ОТЛАДКА - [o.a.~files-extractor] - Текущий каталог \\FS3-MAIN\data\git\tb_tests
ОТЛАДКА - [o.a.~files-extractor] - Каталог выгрузки src
ОТЛАДКА - [o.a.~files-extractor] - Выполняю проверку настройки core.quotepath
ОТЛАДКА - [o.lib.gitrunner] - Команда git
ОТЛАДКА - [o.lib.gitrunner] - Параметр команды config
ОТЛАДКА - [o.lib.gitrunner] - Параметр команды core.quotepath
ОТЛАДКА - [o.lib.gitrunner] - Рабочий каталог команды \\FS3-MAIN\data\git\tb_tests
ОТЛАДКА - [oscript.lib.commands] - РабочийКаталог: \\FS3-MAIN\data\git\tb_tests
ОТЛАДКА - [oscript.lib.commands] - Строка запуска <git config core.quotepath>
ОТЛАДКА - [oscript.lib.commands] - Полная строка запуска <cmd /c "git config core.quotepath">
ОТЛАДКА - [oscript.lib.commands] - Строка запуска <git config core.quotepath>
ОТЛАДКА - [oscript.lib.commands] - Полная строка запуска <cmd /c "git config core.quotepath">
ОТЛАДКА - [oscript.lib.commands] - Длина вывода 174, количество строк 4
ОТЛАДКА - [oscript.lib.commands] - Код возврата равен 1
ОШИБКА - [o.lib.gitrunner] - Получен ненулевой код возврата 1. Выполнение скрипта остановлено!
ОШИБКА - [o.a.~files-extractor] - {Модуль C:\Program Files\OneScript\lib\gitrunner\src\ГитРепозиторий.os / Ошибка в строке: 868 / "\\FS3-MAIN\data\git\tb_tests"
�������� ���� �� �ᯮ�짮��� �� ����᪥ CMD.EXE � ����⢥ ⥪�饩 �����.
CMD.EXE �� �����ন���� ��� UNC. �� 㬮�砭�� ��࠭� ��⥬��� ����� Windows.}
ОТЛАДКА - [o.a.~files-extractor] - Очищаем временные файлы

@zeratulayuris
Copy link

@yukon39 попробуйте вручную запустить прекоммит с такой же настройкой лога.

@yukon39
Copy link
Author

yukon39 commented Sep 29, 2020

@zeratulayuris В принципе такой же вывод как и выше:

S:\repo>git commit -m "test"
Start hooks before commit to unpack erf, epf and cfe
ОТЛАДКА - [o.lib.gitrunner] - РабочийКаталог: \\server\data\repo
ИНФОРМАЦИЯ - [o.a.~files-extractor] - precommit1c v2.3.0

ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-connection-string>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-user>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--ib-pwd>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьИменованныйПараметр: ИмяПараметра <--v8version>
ОТЛАДКА - [oscript.lib.cmdline] - ДобавитьПараметрФлаг: ИмяПараметра <--use-designer>
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ПутьВходящихДанных
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ПутьВходящихДанных
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю позиционный параметр ВыходнойКаталог
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --recursive
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю параметр-флаг --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Разбор команды: --git-precommit
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-connection-string
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-user
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --ib-pwd
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --v8version
ОТЛАДКА - [oscript.lib.cmdline] - Добавляю глобальный параметр: --use-designer
ОТЛАДКА - [oscript.lib.cmdline] - Попадаю в РазобратьАргументы
ОТЛАДКА - [oscript.lib.cmdline] - Сбрасываю параметр-флаг: --remove-orig-bin-files
ОТЛАДКА - [oscript.lib.cmdline] - Сбрасываю параметр-флаг: --use-designer
ОТЛАДКА - [oscript.lib.cmdline] - Выбран токен: src
ОТЛАДКА - [oscript.lib.cmdline] - Ищу именованный параметр src
ОТЛАДКА - [oscript.lib.cmdline] - Ищу параметр-флаг src
ОТЛАДКА - [oscript.lib.cmdline] - Установлено значение позиционного параметра <ВыходнойКаталог = src>
ОТЛАДКА - [oscript.lib.cmdline] - Выбран токен:
ОТЛАДКА - [oscript.lib.cmdline] - Закончились токены
ОТЛАДКА - [oscript.lib.cmdline] - Трассировка РезультатРазбора:
ОТЛАДКА - [oscript.lib.cmdline] -               --remove-orig-bin-files:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               --use-designer:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               ВыходнойКаталог:src
ОТЛАДКА - [oscript.lib.cmdline] - Трассировка РезультатКоманды.ЗначенияПараметров:
ОТЛАДКА - [oscript.lib.cmdline] -               --remove-orig-bin-files:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               --use-designer:Нет
ОТЛАДКА - [oscript.lib.cmdline] -               ВыходнойКаталог:src
ОТЛАДКА - [o.a.~files-extractor] - ТипЗнч(Аргументы)= Структура
ОТЛАДКА - [o.a.~files-extractor] - Передана команда: --git-precommit
ОТЛАДКА - [o.a.~files-extractor] - --remove-orig-bin-files = Нет
ОТЛАДКА - [o.a.~files-extractor] - --use-designer = Нет
ОТЛАДКА - [o.a.~files-extractor] - ВыходнойКаталог = src
ОТЛАДКА - [o.a.~files-extractor] - Текущий каталог \\server\data\repo
ОТЛАДКА - [o.a.~files-extractor] - Каталог выгрузки src
ОТЛАДКА - [o.a.~files-extractor] - Выполняю проверку настройки core.quotepath
ОТЛАДКА - [o.lib.gitrunner] - Команда git
ОТЛАДКА - [o.lib.gitrunner] - Параметр команды config
ОТЛАДКА - [o.lib.gitrunner] - Параметр команды core.quotepath
ОТЛАДКА - [o.lib.gitrunner] - Рабочий каталог команды \\server\data\repo
ОТЛАДКА - [oscript.lib.commands] - РабочийКаталог: \\server\data\repo
ОТЛАДКА - [oscript.lib.commands] - Строка запуска <git config core.quotepath>
ОТЛАДКА - [oscript.lib.commands] - Полная строка запуска <cmd /c "git config core.quotepath">
ОТЛАДКА - [oscript.lib.commands] - Строка запуска <git config core.quotepath>
ОТЛАДКА - [oscript.lib.commands] - Полная строка запуска <cmd /c "git config core.quotepath">
ОТЛАДКА - [oscript.lib.commands] - Длина вывода 180, количество строк 4
ОТЛАДКА - [oscript.lib.commands] - Код возврата равен 1
ОШИБКА - [o.lib.gitrunner] - Получен ненулевой код возврата 1. Выполнение скрипта остановлено!
ОШИБКА - [o.a.~files-extractor] - {Модуль C:\Program Files\OneScript\lib\gitrunner\src\ГитРепозиторий.os / Ошибка в строке: 868 / '\\server\data\repo'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.}
ОТЛАДКА - [o.a.~files-extractor] - Очищаем временные файлы

@EvilBeaver
Copy link

Оно же пишет: UNC paths are not supported - и перекидывает в директорию C:Windows. Нельзя установить CWD в сетевую папку. Это всегда так работало на винде

@yukon39
Copy link
Author

yukon39 commented Sep 29, 2020

@EvilBeaver Мы работаем из каталога S:\repo, а не из сетевой папки.

Причем если в файле .git\hooks\pre-commit указать каталог в явном виде, то все работает:

#!/bin/sh
echo "Start hooks before commit to unpack erf, epf and cfe"
cd S:/repo
oscript -encoding=utf-8 S:/repo/.git/hooks/v8files-extractor.os --git-precommit src

@Dezmont51
Copy link

Если в pre-commit исправить код на такой

#!/bin/sh
echo "Start hooks before commit to unpack erf, epf and cfe"
oscript .git/hooks/test.os
#oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src

test.os
Сообщить(ТекущийКаталог());

И если запустить одну и туже команду но с разными версиями гита

V:\TestManagerExt>git version & git commit -m "1"
git version 2.23.0.windows.1
Start hooks before commit to unpack erf, epf and cfe
V:\TestManagerExt
V:\TestManagerExt>git version & git commit -m "1"
git version 2.28.0.windows.1
Start hooks before commit to unpack erf, epf and cfe
\\tsclient\Obrabot\git\TestManagerExt

@zeratulayuris
Copy link

@Dezmont51 ну мы уже выяснили, что git в новой версии отдаёт пути иначе. Теперь осталось понять, поможет ли установка абсолютных путей. У @yukon39 помогла.

@MikPetrov
Copy link

MikPetrov commented Oct 6, 2020

Тоже попали на эту проблему только при использовании GitHub Desktop:
при коммите через gui выдается ошибка, при коммите через cmd - все проходит.
Причем на другом компе все с точностью наоборот.

Спасибо автору за тему, она навела на мысль проверить git.
Выяснилось, что ошибки нет при git 2.23, а при git 2.25 - есть.
При этом GitHub Desktop использует собственный git (.\resources\app\git).
Т.о. коммит в gui и в cmd - это м.б. разные git!
И соответственно один может работать, а другой - нет.

У меня сработало с минимальными изменениями (только добавить "cd s:\repo")
#!/bin/sh
echo "Start hooks before commit to unpack erf, epf and cfe"
cd S:/repo
oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src

@yukon39
Copy link
Author

yukon39 commented Oct 6, 2020

Может реализовать добавление абсолютного пути в хук как доп.опцию? Типа такого:
precommit1c --install --absolute-path
или
precommit1c --install --absolute-path "S:/repo"

Появится требование, что для такого репозитория перемещение или монтирование с другим именем диска будет требовать переустановки прекоммита.

Т.к. проблема актуальна только для сетевых дисков, то такое требование представляется вполне логичным.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants