Как получить маркированный список коммитов SVN пользователя за определенный день (ежедневный рабочий журнал)

svn log -r '{YYYY-MM-DD}:{YYYY-MM-DD}' | sed -n '1p; 2,/^-/d; /USERNAME/,/^-/p' | grep -E -v '^(r[0-9]|---|$)' | sed 's/^/* /g'


Команда svn log позволяет получить список коммитов в репозитории SVN. Она принимает различные аргументы, одним из которых является -r, который указывает диапазон ревизий. В данном случае мы указываем диапазон дат в формате {YYYY-MM-DD}:{YYYY-MM-DD}.

Результат команды svn log передается в следующую команду sed, которая работает с выводом предыдущей команды. Она применяет некоторые фильтры с использованием регулярных выражений.

Команда sed -n '1p; 2,/^-/d; /USERNAME/,/^-/p' выполняет следующий функции:
1p — выводит первую строку (заголовок)
2,/^-/d — удаляет строки от второй до первой строки, начинающейся с символа -
/USERNAME/,/^-/p — выводит строки, начиная с строки, содержащей USERNAME, и до первой строки, начинающейся с -

Результат команды sed передается в команду grep, которая использует регулярное выражение -E -v '^(r[0-9]|---|$)' для фильтрации вывода. Он исключает строки, которые начинаются с r и за которыми следует число, строки, которые начинаются с ---, и пустые строки.

И, наконец, результирующий вывод передается в последнюю команду sed, которая добавляет знак * в начало каждой строки.

Альтернативой данной команде может быть использование более продвинутых инструментов, таких как Python или Perl, чтобы получить более гибкие фильтры и форматирование вывода.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *