2013-10-28 6 views
1

Я создаю вещь, обрабатывающую входящие пакеты файлов, но у меня есть довольно серьезная проблема, из-за которой я не могу дезинфицировать входящие данные, пока он не сможет сломать обработку, и он разбивает его таким образом, что просто перезапуск процесса не исправляет его.Неинтерактивный «git clean -fdx»

Мое текущее лучшее решением является git clean -fdx и git checkout . директории проекта, который использует процесс, который работает как шарм, кроме что иногда git clean запрашивает ввод пользователя («не может разъединить файл. Повторить?»), Который вызывает проблема для автоматизации.

Есть ли способ поместить Git в неинтерактивный режим? Мне нужно сделать это из Ruby на машине под Windows.

+0

Почему вы сначала изменяете местную копию? – zerkms

+0

Я не знаю, как это сделать с git в одиночку. Поскольку вы используете ruby, можете написать 'y \ n' с' open3'? – Jokester

+0

Это текущий план, но я надеюсь на лучший способ. – Narfanator

ответ

0

Это обычно происходит из-за других процессов, сохраняющих дескриптор тех файлов, которые «не могут быть сблокированы» (как указано в «Cannot unlink a file in PHP/Windows»).

Это означает, что ваше автоматическое задание должно убедиться, что все запущенные процессы сначала остановлены/убиты, прежде чем обновлять рабочий каталог.

+0

Я также не против хранить файлы, которые нельзя отменить, поскольку они не те, которые нарушают мой процесс, и процесс это их использование уже якобы прекращено в этот момент. Есть ли способ сказать Git просто позволить этим быть, а не как пользователь по файловому принципу? – Narfanator

+0

@Narfanator Не то, что я знаю, так как это скорее ошибка Linux, а не ошибка git. – VonC

+0

Я нахожусь в Windows, хотя я не ожидаю, что это поможет. – Narfanator

0

Отказ от ответственности, я не знаю Ruby.

В соответствии с documentation и за исключением кодирования способа уничтожения всех сервисов, которые все еще работают (что может быть лучшим путем, в зависимости от вашего решения и того, что вам нужно очистить, чтобы проверить его) похоже, мы можем надеяться, что с этой командой можно составить список файлов, которые всегда приводят к приглашению [Y/n].

Итак, когда я вижу следующее:

Неудача файлов 'пакетов/RavenDB.Server.2.5.2851/tools/blahblahblah не удалась.

добавить следующее к моей команде:

git clean -fdx --exclude=/packages/RavenDB.Server.2.5.2851** 

И, кажется, работает.

Смежные вопросы