svn diff -r a:b repo
을 사용하면 지정된 두 개정판 사이의 변경 사항을 볼 수 있습니다. 내가 원하는 것은 파일을 변경 한 모든 개정판에 대한 diff입니다. 그러한 명령이 사용 가능합니까?SVN의 파일에 대한 모든 내역 변경 사항을 보려면 어떻게해야합니까?
답변
있다 전혀 그것에 대한 명령 내장, 그래서 대개 같은 것을 할 : 당신이 설명한 것과
history_of_file $1
"브레이킹 된 블록으로 파이핑"하는 것은 결코 전에 본 적이 없습니다. 산뜻한. 이 스크립트의 –
[일괄 파일 버전] (http://stackoverflow.com/questions/5622367/generate-history-of-changes-on-a-file-in-svn/5721533#5721533) fwiw. – ladenedge
이것을 .bashrc 파일에 추가했습니다. 내가 시작할 때 나는'svn : '을 얻는다.' svn : 개정 인수 '@HEAD'에 구문 오류가 있습니다. svn : 수정 인수 '@ HEAD'의 구문 오류입니다. – Francisc0
을 사용하여 저장소를 Git 저장소로 가져온 다음 git log -p filename
을 사용할 수 있습니다. 이것은 파일에 대한 각 로그 항목과 그에 상응하는 diff를 표시합니다.
git 설치, git 저장소 생성, git 명령 사용? 질문에 태그가 추가되어 Subversion에 대해 질문했습니다. –
git-svn을 사용하여 Subversion 클라이언트로 git을 사용합니다. 이것은 Subversion 저장소에 대해 log + diff 작업을 수행하는 방법입니다. Git은 리포지토리를보기위한 훌륭한 툴을 가지고있다. –
위의 누군가는 (좋은) SVN에없는 기능을 제공하기 위해 멋진 스크립트 작성에 축하를 보냅니다. 당신이 푸시하지 않으면 git이 지역적이라는 것을 알 수 있습니다.이 툴링을 호출 할 수 있으며, 모든 것에 대해 화를 낼 필요가 없습니다. –
내가 아는 한이 작업을 수행하기 위해 svn 명령이 내장되어 있지 않습니다. 모든 diff를 빌드하기 위해 여러 명령을 실행하는 스크립트를 작성해야합니다. 더 간단한 접근 방법은 옵션 인 경우 GUI svn 클라이언트를 사용하는 것입니다. 이클립스 용 파괴 형 플러그인과 같은 많은 이들이 파일의 히스토리를 나열 할뿐만 아니라 각 리비전의 diff를 볼 수도 있습니다. 당신이 다음 svn diff
에 스크립트 호출을 반복하는 데 사용할 수있는 파일이 변경 버전의 목록을 얻을 것이다
svn log -q file | grep '^r' | cut -f1 -d' '
와
시작.
또는 ... 계속! ''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는 커팅과 동일) – Kasapo
약간 다른 : 당신은 그것을 호출 할 수 있습니다, 그리고
#!/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 [email protected]
svn cat -r$r [email protected]
echo
# remaining revisions as differences to previous revision
while read r
do
echo
svn log -r$r [email protected]
svn diff -c$r [email protected]
echo
done
}
}
을 하지만 실제로 필요한 것 같아요 :
svn blame filename
파일을 각 줄 미리 인쇄 할 것입니다 마지막으로 변경 한 커밋의 시간과 저자에 의해 수정되었습니다.
와우 멋진데! 몇 년 동안 SVN을 사용하고 있었고 이것에 대해 전혀 알지 못했습니다. O –
타임 스탬프를 보려면 verbose/-v 옵션이 필요합니다 (기본 빌드 인 svn 1.7.9). –
내 교수가 svn에 초기 비난 플러그인을 썼습니다. 나는 이것을 아직도보아야 만했다. 그는이 임무를 완전히 채우고 있습니다. : P –
이상한 이름의 "blame"명령이이 작업을 수행합니다. Tortoise를 사용하면 "개정 본"대화 상자가 표시되고 개정 번호 옆에 작성자와 작성자가 한 줄씩 나란히 표시됩니다.
수정 정보를 마우스 오른쪽 버튼으로 클릭하면 체크인 정보의 일부인 다른 파일과 함께 전체 체크인 정보를 제공하는 "로그 표시"대화 상자를 불러올 수 있습니다.
그게 전부지만, 현재의 파일의 역사적인 기여뿐만 아니라, 파일의 전체 역사는 OP가 찾고 있었는데, 매우 유용합니다. 이 전체 기록은 특정 코드가 제거되거나 변경된 이유와시기를 다시 조사 할 때 유용합니다. –
반대로, 이름은 꽤 맞습니다. 그것은 특정 (엉터리/버그/이해할 수없는) 코드 덩어리를 누구에게 책임이 있는지 알려줍니다. –
명령의 분명한 이름이 "비난"보다는 "신용"이라면 좋지 않겠습니까? :) – Nick
감사합니다. Bendin. 나는 당신의 해결책을 아주 좋아합니다.
역순으로 작동하도록 변경하여 가장 최근의 변경 사항을 먼저 보여줍니다. 몇 년에 걸쳐 유지 관리되는 오랫동안 유지되는 코드에서 중요합니다. 나는 보통 그것을 더 많이 파이프한다.
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 [email protected]
svn diff -c$r [email protected]
echo
done
}
}
history_of_file $1
당신이 코드 변경을 가진 파일의 전체 역사를 보려면 : 그것은이 이상한 이름에 숨겨진
svn log --diff [path_to_file] > log.txt
--diff 옵션이 추가되었을 때 나는 모르지만 svn 1.8.10에서 작동하므로 bash 스크립트가 필요하지 않습니다. –
svn 1.7.4는 이후'--diff' 옵션을 도입했습니다. 옵션에는 테스트가 있지만 1.7.3에는 'Subversion/tests/cmdline/log_tests.py'가 없습니다. – valid
작은 메모 : 기록의 길이에 따라 log.txt 파일이 완전히 렌더링되기까지 꽤 오래 걸릴 수 있습니다 (즉시 읽을 수 있지만). –
- 1. 보류중인 모든 변경 사항을 VSTS 소스 제어 탐색기에서 보려면 어떻게해야합니까?
- 2. svn의 파일에 대한 변경 내역을 생성합니다.
- 3. 엔티티 세트와 커밋되지 않은 변경 사항을 보려면 어떻게해야합니까?
- 4. 변경 허드슨 변경 내역
- 5. vim에서 텍스트 블록에 대한 모든 변경 사항을 취소하려면 어떻게해야합니까?
- 6. 배열의 모든 항목을 보려면 어떻게해야합니까?
- 7. SVN을 사용하여 파일에 변경 내역 저장
- 8. 위키 백과의 기사에 대한 전체 변경 내역을 보려면 어떻게해야합니까?
- 9. 거북이 svn의 변경 사항을 되돌릴 때 허위 "속성"수정
- 10. svn의 잠금을 해제하려면 어떻게해야합니까?
- 11. MSWord2007이 .dotm 파일에 대한 변경 사항을 수락하지 않는 이유는 무엇입니까?
- 12. .NET Framework 4.0의 변경 내역
- 13. 변경 사항을 보려면 Webrick을 다시 시작해야 할 수도있는 특정시기가 맞습니까?
- 14. jQuery Ajax 응답의 모든 결과를 보려면 어떻게해야합니까?
- 15. 오차드 테마의 모든 영역을 보려면 어떻게해야합니까?
- 16. solr이 색인을 생성하는 모든 데이터를 보려면 어떻게해야합니까?
- 17. 데이터 뷰어에서 모든 행을 보려면 어떻게해야합니까?
- 18. YouTube 채널의 모든 동영상을 보려면 어떻게해야합니까?
- 19. Emacs에서 열려있는 모든 파일의 변경 사항을 확인하려면 어떻게해야합니까?
- 20. PHPDoc 함수 변경 내역 (@change?)
- 21. jQuery가 양식의 명명 된 입력에 대한 모든 변경 사항을 캡처합니다.
- 22. 분기에 대한 모든 변경 사항을 취소하는 방법은 무엇입니까?
- 23. 핵심 데이터 : 특정 유형의 엔티티에 대한 모든 변경 사항을 관찰하십시오.
- 24. Visual Studio : asax 및 aspx 파일의 모든 오류를 보려면 어떻게해야합니까?
- 25. PERFORCE (PV4)에서 병합 된 다른 분기에 대한 의견을 포함하여 파일의 모든 체크인 주석을 보려면 어떻게해야합니까?
- 26. MySQL 데이터베이스 변경 내역 (하나 만드는 방법)
- 27. 웹 애플리케이션에서 동시 변경 사항을 처리하려면 어떻게해야합니까?
- 28. 리모컨의 모든 변경 사항을 어떻게 수락합니까?
- 29. .Net Winform App에 대한 변경 내역 및 버전
- 30. NSMutableDictionary 변경 사항을 관찰하십시오.
을 명령을 "비난". – goosemanjack
나는 그것을 시도 할 때까지 @goosemanjack이 농담하고 있다고 생각했다. –