Я строю автоматический сценарий предварительной фиксации based in the Carlos Buenos Vinos tutorial, но проблема BIG: я работаю в компании, использующей Windows в компьютерах-разработчиках (знаю, что знаю, и я не могу ничего не делайте по этому поводу).EGREP и AWK эквивалентная команда в Windows
Сценарий имеет следующий метод:
private function extractCommitedFiles()
{
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
$against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
if ($rc == 0) {
$against = 'HEAD';
}
// unix/linux
// exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
// windows
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
return $output;
}
Итак ... Кто-нибудь есть идея для эквивалентной команды в линии сильфона?
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
я должен иметь следующий результат, если я запускаю эту команду в UNIX/Bash:
core/web/favicon.ico
core/web/htaccess.txt
core/web/index.html
core/web/slim.php
core/web/swagger/css/print.css
core/web/swagger/css/reset.css
core/web/swagger/css/screen.css
core/web/swagger/css/style.css
core/web/swagger/css/typography.css
core/web/swagger/fonts/DroidSans-Bold.ttf
Но использование EXEC (»... без AWK и задать расширенные команды я имеющая следующие результаты:
A core/web/htaccess.txt
A core/web/index.html
A core/web/slim.php
A core/web/swagger/css/print.css
A core/web/swagger/css/reset.css
A core/web/swagger/css/screen.css
A core/web/swagger/css/style.css
A core/web/swagger/css/typography.css
A core/web/swagger/fonts/DroidSans-Bold.ttf
Спасибо у ребят
я мог. Но я пытаюсь автоматизировать задачу, потому что у нас есть другие разработчики, и идея - это версия скрипта, который выполнит эту работу без каких-либо дополнительных ручных задач. Я сближаюсь с командой ** git ls-files -m **, но нет опции -a для добавленных файлов :( –
Команда egrep позволяет только этим линиям через это начинаться с A или M. Команда awk просто печатает «второй столбец», который является именем файла. Таким образом, вы получаете файлы, добавленные или измененные. –
Неплохо будет изменить свою собственную программу для выполнения этой части - пропустить строки, которые не начинаются с 'A' или' M' , пропустите первое поле и пробелы после него и извлеките имя файла из остальной части строки (сценарий Awk будет работать некорректно для любых имен файлов с пробелами в их именах.) – tripleee