Программа / скрипт для «прогулки» по истории изменений SVN

491
klokop

Ища программу или сценарий, я могу использовать его, чтобы легко «просмотреть» историю изменений 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, но я бы предпочел использовать то, что уже существует.

0

2 ответа на вопрос

1
Lazy Badger

svn log -q -v filename и обработка вывода для revlist

svn diff -c M filename для изменений в имени файла в ревизии M

0
Asmor
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: ( /Index:[Enter]), а затем использовать n/ Nдля «перелистывания» вверх и вниз по истории изменений.

Просто чтобы объяснить, что здесь происходит;

  1. svn log чтобы получить список ревизий, где файл был изменен.
  2. grep для строк с номером ревизии в нем.
  3. sed убрать всю остальную информацию из строки, оставив только номера ревизий.
  4. xargs (с -L 1) для многократного получения различий для файла из каждой конкретной ревизии и, наконец, ...
  5. less сделать его "судоходным"

Похожие вопросы