Answers:
它没有内置命令,因此我通常只是这样做:
#!/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: '.' is not a working copy svn: Syntax error in revision argument '@HEAD' svn: Syntax error in revision argument '@HEAD'
svn log --diff [path_to_file]
完全像这样!stackoverflow.com/a/24938573/3185510
与您描述的内容略有不同,但是我认为这可能是您实际需要的:
svn blame filename
它将打印文件,每行以时间和最后更改它的提交作者为前缀。
如果您想查看文件的完整历史记录并进行代码更改:
svn log --diff [path_to_file] > log.txt
--diff
因为它已经对该选项进行了测试,而1.7.3则没有测试- subversion/tests/cmdline/log_tests.py
。
--limit <number>
选项。像这样:svn log --diff --limit 5 [path_to_file]
您可以使用git-svn
将存储库导入到Git存储库,然后使用git log -p filename
。这显示了文件的每个日志条目,后跟相应的差异。
git log X..Y -o filename
从...开始
svn log -q file | grep '^r' | cut -f1 -d' '
这将为您提供文件更改的修订列表,然后您可以使用该脚本编写对的重复调用svn diff
。
svn log -q some_file.xxx | grep ^r | awk '{print $1}' | sed -e 's/^r//' | xargs -i svn diff -rHEAD:{} some_file.xxx > ~/file_history.txt
漂亮的小
名为“怪”的命令很奇怪。如果使用Tortoise,它将为您提供“来自修订版”对话框,然后是一个文件列表,其中逐行显示修订版号和作者。
如果右键单击修订信息,则可以打开一个“显示日志”对话框,该对话框提供完整的签入信息以及作为签入一部分的其他文件。
谢谢,本丁 我非常喜欢您的解决方案。
我将其更改为以相反的顺序工作,首先显示了最新更改。这对于保持多年的长期代码很重要。我通常将其添加到更多内容中。
svnhistory elements.py |more
我在排序中添加了-r。我删除了规范。处理“第一记录”。它不会在最后一个条目上出错,因为没有什么可区别的。尽管我与之共处,因为我从没走过那么远。
#!/bin/bash
# history_of_file
#
# Bendin on Stack Overflow: http://stackoverflow.com/questions/282802
# 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.
#
# Dlink
# Made to work in reverse order
function history_of_file() {
url=$1 # current url of file
svn log -q $url | grep -E -e "^r[[:digit:]]+" -o | cut -c2- | sort -nr | {
while read r
do
echo
svn log -r$r $url@HEAD
svn diff -c$r $url@HEAD
echo
done
}
}
history_of_file $1