Я пытаюсь извлечь список «проектов», которые изменились с момента данного коммита. Для этого я приближаю проект к папке, содержащей измененный файл.

Проблема, которую я имею, заставляет это работать с файлами, у которых есть пробелы в их именах:

$ git diff --name-only TREEISH.. | xargs -n 1 dirname

Я рассмотрел опцию -0 для xargs и опцию -z для diff , но это дает мне:

$ git diff --name-only -z TREEISH.. | xargs -0 dirname
dirname: too many arguments

Что мне не хватает?

1 ответ1

1

Попробуй это:

git diff --name-only -z TREEISH.. | while IFS= read -r n; do dirname "$n"; done 
  • IFS - это разделитель входного поля, необходимый для того, чтобы избежать обрезки начальных / конечных пробелов
  • -r необходим, чтобы избежать обратной косой черты.
  • Кавычки вокруг "$ n" заставляют его иметь дело с пробелами.

Смотрите здесь для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .