我知道我可以 svn diff -r a:b repo
查看两个指定修订版本之间的更改.我想要的是每个修改文件的差异.这样的命令可用吗?
它没有内置命令,所以我通常只做这样的事情:
#!/bin/bash # history_of_file # # Outputs the full history of a given file as a sequence of # logentry/diff pairs. The first revision of the file is emitted as # full text since there's not previous version to compare it to. function history_of_file() { url=$1 # current url of file svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -n | { # first revision as full text echo read r svn log -r$r $url@HEAD svn cat -r$r $url@HEAD echo # remaining revisions as differences to previous revision while read r do echo svn log -r$r $url@HEAD svn diff -c$r $url@HEAD echo done } }
然后,你可以用:
history_of_file $1
与您描述的略有不同,但我认为这可能是您实际需要的:
svn blame filename
它将打印文件,每行以前一次更改它的提交的时间和作者为前缀.
如果要查看包含代码更改的文件的完整历史记录:
svn log --diff [path_to_file] > log.txt
您可以使用git-svn
将存储库导入Git存储库,然后使用git log -p filename
.这显示了文件的每个日志条目,后跟相应的diff.
从...开始
svn log -q file | grep '^r' | cut -f1 -d' '
这将为您提供文件更改的修订列表,然后您可以使用该列表重复调用脚本svn diff
.
奇怪命名的"责备"命令就是这样做的.如果你使用Tortoise,它会给你一个"from revision"对话框,然后是一个文件列表,其中包含一行一行的修订版号和作者旁边的作者.
如果右键单击修订信息,则可以打开一个"显示日志"对话框,其中提供完整的签入信息以及签入的其他文件.