Генерация истории изменений файла в SVN

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

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

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

5 ответов

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

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

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

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

Редактировать:

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

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

Вот перевод командного файла bash-скрипта Бендина в разделе Как просмотреть все исторические изменения файла в 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, но их несколько.

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

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

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

Другие вопросы по тегам