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

1

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

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

0
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 чтобы "пролистывать" историю изменений.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .