답변:
내장 명령이 없으므로 일반적으로 다음과 같은 작업을 수행합니다.
#!/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
. 파일에 대한 각 로그 항목과 해당 diff가 표시됩니다.
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
멋진 작은 원 라이너 (awk는 컷과 동일)
이상한 이름의 "blame"명령이이를 수행합니다. 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