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와 같은 많은 파일들은 파일 히스토리를 나열 할뿐만 아니라 각 개정판의 차이점을 볼 수 있습니다.
