How can I view all historical changes to a file in SVN

后端 未结 9 1990
闹比i
闹比i 2020-12-02 04:08

I know that I can svn diff -r a:b repo to view the changes between the two specified revisions. What I\'d like is a diff for every revision that changed the

9条回答
  •  悲&欢浪女
    2020-12-02 04:28

    There's no built-in command for it, so I usually just do something like this:

    #!/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
        }
    }
    

    Then, you can call it with:

    history_of_file $1
    

提交回复
热议问题