Генерация истории изменений файла в SVN - PullRequest
10 голосов
/ 11 апреля 2011

Можно ли создать файл, который включает в себя сводку (что, когда, кем) всех изменений, внесенных в определенный файл? Раньше такая возможность была в VSS (я думаю, она называлась «История»), и это было здорово, если вернуться назад и отследить, кто внес определенное изменение и когда.

Кстати, я использую tortoisesvn

Заранее спасибо

Ответы [ 5 ]

15 голосов
/ 18 апреля 2011

Щелкните правой кнопкой мыши файл в проводнике, затем «TortoiseSVN», «Показать журнал».

Снимите флажок «Скрыть несвязанные измененные пути» Снимите флажок «Стоп при копировании / переименовании» Отметьте «Включить объединенные ревизии» Нажмите «Показать все»

Теперь в верхней панели вы видите список ревизий с именем пользователя, датой и журналом. Нажмите на интересующую вас ревизию, и вы сможете увидеть полный журнал на второй панели. На третьей панели отображаются все файлы, которые были изменены в выбранной ревизии. Дважды щелкните файл на этой панели, и вы увидите изменения, внесенные в этот файл.

Как отмечалось ранее, у Tortoise есть функция «Blame», которая часто очень проницательна, но она может показывать только самые последние изменения в каждой строке источника. И если кто-то удалил строки, вы их вообще не увидите.

Edit:

Если вы хотите перейти к инструменту командной строки и bash, на этот вопрос уже был дан ответ: Как просмотреть все исторические изменения файла в SVN

На ПК с Windows лучший способ получить SVN для bash и командной строки - установить Cygwin.

13 голосов
/ 19 апреля 2011

Ниже приведен перевод командного файла bash-скрипта bendin в Как просмотреть все исторические изменения файла в SVN :

@echo off

set file=%1

if [%file%] == [] (
  echo Usage: "%0 <file>"
  exit /b
)

rem first revision as full text
for /F "tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
  svn log -r %%R %file%
  svn cat -r %%R %file%
  goto :diffs
)

:diffs

rem remaining revisions as differences to previous revision
for /F "skip=2 tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
  echo.
  svn log -r %%R %file%
  svn diff -c %%R %file%
)

Обратите внимание, что для этого пакетного файла требуется командная строкаКлиент SVN (не TortoiseSVN) будет на вашем пути.Я лично использую SilkSVN , но есть несколько .

2 голосов
/ 16 апреля 2011

Вы можете найти svn blame <filename> более полезным, потому что он скажет вам, кто / что / когда для конкретной ревизии файла.

2 голосов
/ 11 апреля 2011

Как уже упоминалось @pajton, вы можете использовать svn log <filename>. документация содержит подробности / ограничения.

0 голосов
/ 12 апреля 2013

Я просто хотел бы добавить, что последние версии черепахи также включают инструменты командной строки, вам просто нужно выбрать их при установке

...