[svn] SVN에서 파일의 모든 기록 변경 사항을 보는 방법

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.


답변

이상한 이름의 “blame”명령이이를 수행합니다. Tortoise를 사용하는 경우 “개정 본에서”대화 상자가 표시되고 그 다음에 개정 번호를 나타내는 행 단위 표시기와 함께 파일이 나열됩니다.

개정 정보를 마우스 오른쪽 버튼으로 클릭하면 체크인에 포함 된 다른 파일과 함께 전체 체크인 정보를 제공하는 “로그 표시”대화 상자가 나타납니다.


답변

내가 아는 한 svn 명령이 내장되어 있지 않습니다. 모든 diff를 빌드하기 위해 여러 명령을 실행하려면 스크립트를 작성해야합니다. 옵션 인 경우 GUI svn 클라이언트를 사용하는 것이 더 간단한 방법입니다. 파괴적인 플러그인 Eclipse와 같은 많은 파일들은 파일 히스토리를 나열 할뿐만 아니라 각 개정판의 차이점을 볼 수 있습니다.