Создание git diff --stat показать полный путь к файлу
на git diff --stat
некоторые файлы перечислены с полным путем из базы репозитория, но некоторые файлы перечислены как:
.../short/path/to/filename.
то есть путь начинается с ...
и показан только короткий путь.
Я бы git diff
чтобы перечислить полный путь к файлу для всех файлов, чтобы он был легко обработан скриптом. Есть ли способ я могу сделать git diff
чтобы всегда показывать полный путь
4 ответа:
The
git diff
команда принимает необязательные значения для--stat
:--stat[=<width>[,<name-width>[,<count>]]] Generate a diffstat. You can override the default output width for 80-column terminal by --stat=<width>. The width of the filename part can be controlled by giving another width to it separated by a comma. By giving a third parameter <count>, you can limit the output to the first <count> lines, followed by ... if there are more. These parameters can also be set individually with --stat-width=<width>, --stat-name-width=<name-width> and --stat-count=<count>.
(для сценариев вы можете использовать
git diff-tree
непосредственно, так как это скорее команда "сантехника", хотя я подозреваю, что вы будете в порядке в любом случае. Обратите внимание, что вам нужен тот же дополнительный текст--stat
при использованииgit diff-tree
. Существенная разница между использованиемgit diff
"фарфоровый" передний конец, иgit diff-tree
командная сантехника, заключается в том, чтоgit diff
ищет ваши настроенные параметры для таких параметров, какdiff.renames
чтобы решить, следует ли переименовать обнаружение. Ну, это, плюс передний конецgit diff
будет делать эквивалентgit diff-index
если вы сравниваете фиксацию с индексом, например. Другими словами,git diff
читает свой конфиг и автоматически вызывает правильную сантехнику.)
для пользователей Bash, вы можете использовать
$COLUMNS
переменной для автоматического заполнения доступной ширины терминала:git diff --stat=$COLUMNS
очень длинные имена путей все еще могут быть усечены; в этом случае вы можете уменьшить ширину части +++/--- с помощью
--stat-graph-width
, например, это ограничивает его до 1/5 ширины терминала:git show --stat=$COLUMNS --stat-graph-width=$(($COLUMNS/5))
для более общего решения вы можете использовать вывод
tput cols
для определения ширины терминала.
для обработки скриптов, возможно, лучше использовать один из следующих вариантов:
# list just the file names git diff --name-only path/to/modified/file path/to/renamed/file # list the names and change statuses: git diff --name-status M path/to/modified/file R100 path/to/existing/file path/to/renamed/file # list a diffstat-like output (+ed lines, -ed lines, file name): git diff --numstat 1 0 path/to/modified/file 0 0 path/to/{existing => renamed}/file
каждый из них становится более удобным для надежной обработки сценариев в сочетании с
-z
опция, которая используетNUL
в качестве признаков конца поля.
Я обнаружил, что поведение diff --stat изменилось где - то вокруг git 1.7.10, где ранее он сокращал пути к файлам до фиксированной ширины по умолчанию-теперь он отображает столько, сколько позволит ваше окно терминала. Если вы столкнулись с этой проблемой, убедитесь, что вы обновить до 1.8.0 или выше.