在svn中生成文件更改的历史记录

时间:2011-04-11 13:56:38

标签: svn tortoisesvn

是否可以生成一个文件,其中包括对某个文件所做的所有更改的摘要(什么,何时,由谁)?曾经在VSS中有这样的选项(我认为它被称为“历史”),它非常适合返回并跟踪谁做出了一定的改变以及何时发生。

是的,我正在使用tortoisesvn

提前谢谢

5 个答案:

答案 0 :(得分:15)

右键单击资源管理器中的文件,然后“TortoiseSVN”,“显示日志”。

取消选中“隐藏不相关的已更改路径” 取消选中“停止复制/重命名” 选中“包含合并的修订” 点击“全部显示”

现在,在顶部窗格中显示包含用户名,日期和日志的修订列表。单击您感兴趣的修订版,您可以在第二个窗格中看到完整的日志。第三个窗格显示所选修订中已更改的每个文件。双击此窗格中的文件,您可以看到该文件中所做的更改。

如前所述,Tortoise具有“责备”功能,通常非常有见地,但它只能显示每行源的最新编辑。如果有人删除了行,你根本看不到他们的变化。

修改

如果您愿意使用命令行工具和bash,此问题之前已得到解答:How can I view all historical changes to a file in SVN

在Windows PC上,获取bash和命令行SVN的最佳方法是安装Cygwin。

答案 1 :(得分:12)

以下是How can I view all historical changes to a file in SVN中的bendin bash脚本的批处理文件翻译:

@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,但有several

答案 2 :(得分:2)

正如@pajton所提到的,你可以使用svn log <filename>documentation提供了详细信息/限制。

答案 3 :(得分:2)

您可能会发现svn blame <filename>更有用,因为它会告诉您文件的特定修订版本/ /什么/何时。

答案 4 :(得分:0)

我想补充一点,最近版本的陆龟还包括命令行工具,你只需要在安装时选择它们