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