최근 SVN 로그 항목은 어떻게 보입니까?


194

타이핑 svn log은 명령 줄에서 엄청나게 길고 쓸모없는 목록을 뱉어냅니다. 왜 이것이 기본값인지 모르겠습니다. 터미널에서 300 개의 항목을 읽거나 읽을 수 있다면 타이핑 svn log --full이나 비슷한 것을 신경 쓰지 않을 것 입니다.

아마도 SVN 사람들은 그 출력을 다른 프로그램에 공급하고 싶다고 생각합니다. 그러나이 경우 터미널 사용자가 아닌 프로그램에 대한 더 자세한 호출을하는 것이 더 합리적입니다.

어쨌든, 지난 5 또는 10 개의 항목과 같은 최근 활동을 어떻게 변경했는지 확인하려면 어떻게해야합니까?


9
예, 실제로 작동해야합니다 git log.
Paul Draper

답변:


262

limit 옵션, 예 :

svn log --limit 4

svn log -l 4

마지막 4 개 항목 만


127

Bert F가 말한 것 외에도 많은 명령 log에는 -r(또는 --revision) 옵션이 있습니다. 다음은이 옵션을 사용하여 수정 범위를 보여주는 몇 가지 실용적인 예입니다.

모든 것을 오름차순으로 나열하려면 :

svn log -r 1:HEAD

내림차순으로 모든 것을 나열하려면 :

svn log -r HEAD:1

현재 체크 아웃 된 개정판의 기준에서 13 번째까지의 순서를 오름차순으로 나열하려면 다음을 수행하십시오.

svn log -r 13:BASE

주어진 날짜 사이에 모든 것을 얻으려면 :

svn log -r {2011-02-02}:{2011-02-03}

위의 모든 표현식을 --limit옵션 과 결합하여 인쇄되는 내용을 세밀하게 제어 할 수 있습니다. 이러한 -r표현식 에 대한 자세한 정보는 Subversion을 사용한 버전 제어svn help log 책의 관련 장을 참조하십시오.


8
- 많은 감사는 설명, @Daniel Dinnyes 위해 나는 종종 OP에서 반대 문제가 있습니다 svn log .(와 마찬가지로 나를 위해 단지 초기 버전을 반환 할 수 있습니다를 svn log --limit 4 .); 하지만 전화하면 svn log -r HEAD:1 .마지막으로 모든 항목이 표시됩니다. 다시 한 번 감사합니다.
sdaau

svn log 현재 경로의 변경 히스토리 만 표시 하므로 더 좋습니다 .
닌자

41

-v자세한 모드 에 사용 하고 싶습니다 .
커밋 ID, 주석 및 영향을받는 모든 파일을 제공합니다.

svn log -v --limit 4

출력 예 :

I added some migrations and deleted a test xml file
------------------------------------------------------------------------
r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed
paths: 
A /trunk/java/App/src/database/support    
A /trunk/java/App/src/database/support/MIGRATE    
A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql
D /trunk/java/App/src/code/test.xml

2
자세한 옵션은 매우 유용합니다
Jason George

개발자 팀이 정말 달콤하다면 svn 주석에 이슈 ID를 넣고 커밋과 관련된 이슈를 쉽게 찾을 수 있습니다.
Jonas Söderström

11

less또는 다른 호출기를 통해 출력을 파이프하십시오 .

svn log | less

1
23k보다 큰 개정판이있는 경우에도 첫 번째 항목을 볼 때까지 (및 자세한 로그를 사용하지 않는 경우) ~ 20 초 동안 대기합니다. 그러나 그것은 훌륭합니다-가장 최근에 보여줍니다. TortoiseSVN의 한 번에 100 개씩 페이징하는 것보다 좋습니다! 더 멀리 가고 싶을 때.
Tomasz Gandor

6

누군가이 오래된 질문을보고있는 경우 마지막 업데이트 이후 변경 사항을 확인하는 편리한 명령입니다.

svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v

LE (Gary에게 의견을 주셔서 감사합니다)
똑같은 것이지만 훨씬 짧고 논리적입니다.

svn log -r BASE:HEAD -v


8
또는svn log -r BASE:HEAD -v
Gary

5

다른 사람들이 말한 것을 추가하기 위해 .bashrc 또는 .bash_aliases 파일에서 별칭을 만들 수도 있습니다.

alias svnlog='svn log -l 30 | less'

또는 당신이 원하는대로 무엇이든


4

이미 svn log인수없이 명령이 실행되었음을 알았 듯이 지정한 URL 또는 명령을 실행하는 작업 사본 폴더와 관련된 모든 로그 메시지가 표시 됩니다 .

항상 svn log결과를 구체화 / 제한 할 수 있습니다 .

  • svn log --limit NUM 처음 NUM 개 개정 만 표시합니다.
  • svn log --revision REV1(:REV2) REV1 개정판 또는 REV1-REV2 범위에 대한 로그 메시지를 표시합니다.
  • svn log --search지정한 검색 패턴과 일치하는 개정판이 표시됩니다 (명령은 Subversion 1.8 이상 클라이언트에서 사용 가능함). 로 검색 할 수 있습니다
    • 개정의 저자 (예 : 커미터 사용자 이름)
    • 개정이 확정 된 날짜,
    • 개정 의견 텍스트 (로그 메시지)
    • 수정 된 경로 목록

4

이 답변은 Subversion 하위 명령 옵션과 관련된 추가 질문에 대한 것입니다. 사용 가능한 모든 하위 명령 (예 : add, log, status ...)에 대해 간단히--help 옵션을 하여 부속 명령에 사용할 수있는 사용 가능한 옵션의 전체 목록과 사용 방법에 대한 예제를 표시 할 수 있습니다. 다음 스 니펫은 svn log --help"examples"섹션 의 명령 출력에서 직접 가져옵니다 .

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v

3

그러나 svn log는 여전히 역순입니다. 즉, 가장 최근의 항목이 먼저 출력되어 터미널 상단에서 스크롤되어 사라졌습니다. 정말하고 싶어마지막 항목 보고 . 즉, 정렬 순서는 시간순이어야합니다. 이 작업을 수행하는 유일한 명령은 보이지만 svn log -r 1:HEAD약 10000 개의 항목이있는 저장소에서는 너무 오래 걸립니다. 나는 이것을 생각해 냈습니다.

마지막 10 개의 하위 버전 항목을 시간순으로 표시하십시오.

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.