Программа / скрипт, чтобы "пройти" по истории изменений SVN
В поисках программы или скрипта я могу легко "просмотреть" историю изменений SVN для конкретного файла. Кто-нибудь знает, существует ли это? Могу ли я добиться этого с помощью клиента командной строки для SVN?
Что я хотел бы иметь возможность сделать:
- запросите diff для файла между ревизиями x и x-1 (я использую скрипт, который показывает мне diff в vimdiff, похожий на этот: http://tierseven.net/wiki/index.php?title=Svndiff.sh)
- оставаясь внутри vimdiff, вызовите команду "next" или "prev" и покажите мне diff между x и x-2 или между x-1 и x-2
Я зашуршал бы что-нибудь в bash/sed/awk, но я бы предпочел использовать то, что уже существует.
2 ответа
svn log -q -v filename
и обработка вывода для revlist
svn diff -c M filename
для изменения имени файла в ревизии M
svn log FILENAME_GOES_HERE --limit 20 | grep -P 'r\d+ \|' | sed s/^r// | sed s/\ .*// | xargs -L 1 svn diff DancerAdmin/templates/Common/inputs/ss-dropdown.html -c | less
Вероятно, есть лучший способ сделать это с помощью awk вместо sed, или даже лучший способ сделать это с помощью sed, но это работает.
Выводит последние 20 версий этого файла в less
, Оттуда вы можете искать индекс: (/Index:[Enter]
), а затем использовать n
/N
"страница" вверх и вниз по истории изменений.
Просто чтобы объяснить, что здесь происходит;
svn log
чтобы получить список ревизий, где файл был изменен.grep
для строк с номером ревизии в нем.sed
вычеркнуть всю остальную информацию из строки, оставив только номера ревизий.xargs
(с -L 1) для многократного получения различий для файла из каждой конкретной ревизии и, наконец,...less
сделать его "судоходным"