Я пишу программу на Java, которая передает данные в функцию git fast-import
.В настоящее время я знаю, что все мои операции форматирования выполняются и соответствуют https://git -scm.com / docs / git-fast-import # _signals Однако моя проблема заключается в отправке окончательной команды kill: SIGUSR1
.
С помощью этой команды type fast-import.script | git fast-import
я могу начать работать прямо сейчас.Тот факт, что это работает, говорит мне о моем форматировании, и это правильно.Но я знаю, что есть способ непрерывного запуска git fast-import
и подачи команд на его стандартный ввод, но самая последняя команда должна быть SIGUSR1
Без отправки SIGUSR1
быстрого импортаутилита не знает до конца.Я пробовал несколько вещей:
1- Уничтожение процесса с помощью обычных команд API-процессов Java, таких как
fastImportProcess.destroyForcibly();
2- Использование библиотеки Java WinProcess ( Maven ), чтобы найти pid и убить его.
WinProcess wp = new WinProcess(fastImportProcess);
wp.killRecursively();
Это тоже не сработало.И я попробовал сочетания вещей, связанных с Java Process API, WinProcess API и т. Д. Хотя я могу заставить WinProcess принудительно завершить работу утилиты быстрого импорта, она фактически не создает мои коммиты.
3- И наконец, бесконечно исследуйте, что такое SIGUSR1
, и все, что я могу придумать, это SIGUSR
, своего рода определяемый пользователем сигнал. C - что такое SIGUSR1 синтаксически Не слишком полезно.
Я не думаю, что эта проблема сама по себе связана с Java, она действительно о том, как использовать git fast-import
.Я замечаю, когда я запускаю быстрый импорт в CLI, когда я нажимаю ctrl-c
, коммиты выполняются.Но я не знаю точно, как это сделать на Java.