Отображение общего количества измененных слов в отслеживаемом файле git относительно определенной даты - PullRequest
0 голосов
/ 11 мая 2018

Вопрос: Как в git видит разницу между текущим состоянием файла и самым последним коммитом до определенной отметки времени (т. Е. Вчера в 14:00)?Я особенно заинтересован в том, чтобы получить общее количество измененных слов (похоже на общее количество измененных строк +/-).

Вариант использования. Вариант использования, который мне нужен, позволяетотследить, насколько я продвинулся в работе над датой.В письменном виде единицами прогресса обычно являются «слова изменены», а не «строки изменены» (другие посты на линиях покрытия StackOverflow изменены, но слова не изменены).

Пример. Итакнапример, если я добавил 200 слов в файл file.txt и удалил 100 слов со вчерашнего дня в 14:00, я бы хотел, чтобы результатом этой команды было что-то вроде «+ 200 / -100».

1 Ответ

0 голосов
/ 12 мая 2018

Git не отслеживает слова, только строки. Вы по-прежнему можете получить разницу в количестве слов в файле между двумя коммитами, немного потрудившись, но не существует простого способа (насколько я знаю) получить количество слов, добавленных и удаленных.

Если вы хотите сравнить количество слов в файле как вчера, так и сейчас, вы можете использовать следующий скрипт Bash (передайте имя файла в качестве первого аргумента):

if [[ -z "$1" ]]; then
    echo "pass a file to compare"
    exit 1
fi
orig_branch="$(git symbolic-ref --short -q HEAD)"
if [[ -z "$orig_branch" ]]; then  # detached HEAD
    orig_branch="$(git rev-parse HEAD)"
fi
words_now=$(wc -w "$1" | cut -d' ' -f1)
git checkout '@{yesterday}'
words_then=$(wc -w "$1" | cut -d' ' -f1)
printf '%+d\n' $((words_now - words_then))  # prints something like "+10" or "-42"
git checkout "$orig_branch"

NB. Если ваш рабочий каталог загрязнен, вы можете столкнуться с проблемами. Вероятно, будет хорошей идеей заранее git stash save внести изменения, а затем git stash pop.

Чтобы получить добавленный / удаленный счетчик, как Git даст вам для строк, я думаю, вы, вероятно, могли бы разбить файл, который вы сравниваете , на одно слово в строке, а затем развести два файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...