2010-03-30 1 views
0

Люди, я использую git-инструменты, такие как git bisect run, которым нужно вызвать команду для сборки и тестирования моего проекта. Моя команда - это nant, которая является программой Windows. Или скрипт build.cmd, который вызывает nant.запустить команду windows из bash с выходом на стандартный выход?

Легко заставить bash вызвать сборку nant для запуска.

Но сложная часть - как получить стандартный вывод, записанный в файл?

Я даже установил Windows PowerShell, чтобы попробовать запустить команду из bash.

Опять же, он работает, но стандартная выходная надпись говорит «разрешение отклонено», когда Я пытаюсь прочитать его во время сборки.

Update:

При запуске NAnt, используется весь путь. Он установлен и работает нормально. Проблема заключается в том, как получить стандартный вывод при запуске из bash.

Если вы бежите из окна с приглашением «> build.out» в конце строки, вы получите стандартную версию. Но то же самое никогда не работает при bash. Он просто говорит, что build.out заблокирован, разрешения запрещены.

Update:

Используя тройник, как предложено ниже, также не решает проблему. В этом случае файл все равно сообщает «доступ запрещен» с любыми попытками прочитать его во время сборки. Но также, программа tee никогда ничего не пишет для стандартного вывода.

+0

erm ... bash - оболочка unix (esc) ... если вы не установите «nant» в окна, вы можете запустить его команду. Вам также нужно либо зарегистрировать nant, чтобы вы могли его вызвать из любого места, либо переместиться в каталог, где он есть, а затем вызвать команду. – thecoshman

+0

Спасибо, я сделал обновление, чтобы ответить на ваши вопросы. Nant установлен, и мы используем полный путь для nant. Проблема связана с тем, как получить стандартный вывод в файл и хвост -f в файле. – Wayne

ответ

0

Хорошо, наконец, разрешил это. Оказывается, скрипт nant build использовал функцию git, чтобы удалить все проигнорированные файлы для очистки. Это удаление файла build.out может вызвать эти странные проблемы. Теперь процесс записывает файл build.out в родительский каталог, чтобы он не удалялся, и теперь все работает плавно, как ожидалось.

1

(Если я понять Ваш вопрос правильно ...)

Вы, вероятно, можно использовать команду «Tee» разделить вывод как файл и стандартный вывод. Строка echo I am building something | tee build.out будет печатать вывод на консоли и сохранять его в файле с именем «build.out».

Команда tee обычно доступна в Cygwin, а также, по-видимому, в оболочке Bash, установленной msysgit (где я только что протестировал ее). Вот еще good reference page для более подробной информации.

+0

Спасибо, что ответили. Использование тройника, как описано, имеет ту же проблему и дополнительную проблему. Это файловые файлы, которые дают ошибки «доступ запрещен», если вы пытаетесь открыть его с помощью любого редактора или хвоста, меньше, голова, кошка и т. Д. Кроме того, странно, программа tee ничего не пишет для выхода stdandard. Это тихо. Но размер файла растет. Просто просто невозможно «контролировать», что происходит. – Wayne