当前位置:  开发笔记 > 编程语言 > 正文

如何查看SVN中文件的所有历史更改

如何解决《如何查看SVN中文件的所有历史更改》经验,为你挑选了6个好方法。

我知道我可以 svn diff -r a:b repo 查看两个指定修订版本之间的更改.我想要的是每个修改文件的差异.这样的命令可用吗?



1> bendin..:

它没有内置命令,所以我通常只做这样的事情:

#!/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 log --diff [path_to_file]`就像这样!http://stackoverflow.com/a/24938573/3185510
[脚本文件版本](http://stackoverflow.com/questions/5622367/generate-history-of-changes-on-a-file-in-svn/5721533#5721533)此脚本fwiw.

2> ngn..:

与您描述的略有不同,但我认为这可能是您实际需要的:

svn blame filename

它将打印文件,每行以前一次更改它的提交的时间和作者为前缀.


哇这真棒!多年来一直在使用SVN而且从来不知道这个:O
您可能需要使用verbose/-v选项来查看时间戳(我使用svn 1.7.9的默认构建).

3> emilie zawad..:

如果要查看包含代码更改的文件的完整历史记录:

svn log --diff [path_to_file] > log.txt


我不知道什么时候添加了--diff选项但它适用于svn 1.8.10,所以不需要bash脚本

4> Greg Hewgill..:

您可以使用git-svn将存储库导入Git存储库,然后使用git log -p filename.这显示了文件的每个日志条目,后跟相应的diff.


安装git,创建一个git存储库,使用git命令?问题被标记并询问Subversion.
我使用git作为使用git-svn的Subversion客户端.这就是我对Subversion存储库执行log + diff操作的方法.Git有一些非常好的存储库查看工具,它不是一个古怪的想法.
以上某人(正确地)祝贺写了一个好的脚本 - 提供SVN中没有的功能.看到git是本地的,除非你推动,你可以称之为工具,不需要对事情感到烦恼.

5> 小智..:

从...开始

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``很好的小一行(awk和cut一样)

6> goosemanjack..:

奇怪命名的"责备"命令就是这样做的.如果你使用Tortoise,它会给你一个"from revision"对话框,然后是一个文件列表,其中包含一行一行的修订版号和作者旁边的作者.

如果右键单击修订信息,则可以打开一个"显示日志"对话框,其中提供完整的签入信息以及签入的其他文件.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有