2014-06-12 2 views
4

Subversion에서 마지막 N 개의 커밋 파일 목록을 가져올 수 있습니까?Subversion에서 마지막 N 개의 커밋 파일 목록 가져 오기

Subversion 저장소에있는 파일에 대해 이미지 최적화 작업을 실행하고 싶습니다. 전체 파일을 실행하고 싶지 않습니다.

+0

가능한 복제본 [최근 SVN 로그 항목을 보려면 어떻게합니까?] (http://stackoverflow.com/questions/4881129/how-do-you-see-recent-svn-log-entries) –

+0

중복되지 않음 그 질문은 가장 최근의 몇 가지 로그 항목을 요구하기 때문입니다. 이 질문은 로그 항목에 대해서는 상관하지 않으며 해당 로그 항목에서 변경된 파일 만 고려합니다. – Ben

답변

3

마지막 N 개의 커밋을 가져 오려면 --limit 또는 -l 플래그를 svn log에 사용하십시오. 또는 개정 번호 및/또는 날짜별로 로그 항목을 제한 할 수도 있습니다.

파일을 변경하려면 -v (또는 --verbose) 플래그를 사용해야합니다.

로그 텍스트를 표시하지 않으려면 -q (또는 --quiet) 플래그를 사용해야합니다.

svn log --quiet --verbose --revision {2014-05-01}:HEAD 
svn log -q -v -r {2014-05-01}:HEAD 

또는 동일한 정보를 얻을 : 모두 함께 퍼팅

, 당신이 할 수있는 모든 파일 (형식을 구문 분석 쉬운) 2014 년 5 월 초부터 변경 (예를 들어) 얻을 수 있습니다 지난 10 건의 커밋은 언제 발생했는지에 관계없이 다음과 같이 처리됩니다.

svn log --quiet --verbose --limit 10 
svn log -q -v -l 10 
+0

이것은 내가 원하는 것을 거의 내게주었습니다. 고맙습니다. – yshrsmz

+1

"마지막 N 개의 커밋을 가져 오는 방법을 모르겠습니다."- OMFG !!! RTFM'svn help log''-l' 옵션 –

+0

맞습니다! 얼마나 창피한가. 내가 SVN의 명령 행으로 얼마나 자주 떨어지는 지 알 수 있습니다. 나는 그 정보로 게시물을 편집 중입니다! – Ben

1

이 정보를 제공하는 단순한 단일 Subversion 명령은 없습니다.

  • 당신이, 또는 전체 저장소에있는 디렉토리 (프로젝트)의 마지막 몇 개정을 의미합니까 :

    여기에 몇 느슨한 끝있다. 전체 레포에 대해 이야기하고 있다면 최신 개정판을 받아 원하는 번호를 빼낼 수 있습니다. 개별 프로젝트에 대해 말하면 훨씬 더 어려워집니다.

  • 나는 당신이 중복을 포함하지 않는 목록을 원한다.

  • 추가되거나 삭제 된 파일은 어떻게됩니까? 어떻게 계산 하시겠습니까?

이것은 그리 어렵지는 않지만 직접 스크립트를 작성해야합니다. svn log--xml 매개 변수를 사용하고 로그 XML 형식을 반환합니다. 형식은 다음과 같습니다

$ svn log -v --xml $REPO 

<?xml version="1.0" encoding="UTF-8"?> 
<log> 
<logentry 
    revision=...> 
<author>...</author> 
<date>...</date> 
<paths> 
<path 
    .... 
    .... 
    action=".">...name of file...</path> 
<path ... 
</paths> 
<msg>.....</msg> 
</logentry> 
<logentry 
    .... 
    .... 

당신이 XML 자체를 구문 분석하지 않더라도, 당신은 쉽게 필요한 정보를 얻을 수있는 XML 출력을 사용할 수 있습니다. 원하는 수 또는 항목을 얻을 때까지 <logentry 줄의 수를 센다. <path을 사용하여 element, and when you see the closing>, you know that the rest of the line till the의 시작을 파일 이름으로 표시하십시오. 이 파일을 파일 이름으로 키순 해시 변수에 저장하십시오.

Python 또는 Perl의 스크립트는 매우 쉽게 작성되어야합니다.

+0

나는'--xml' 매개 변수에 대해 알지 못했지만 Ben의 대답과 내 문제를 해결할 방법을 찾았습니다. 고맙습니다. – yshrsmz

1

"shell"질문에 태그를 추가 했으므로 Windows에 있지 않을 가능성이 있지만, PowerShell의 한 줄에서 거의 모든 작업을 수행 할 수 있습니다 (" 이 제조법 99 ") :

PS> Get-SvnLog | 
Select -First 99 -ExpandProperty Paths | 
% { ([xml]$_).SelectNodes("//path/text()").Value } | 
Sort -Unique 

당신은 당신이 얻을 수있는 보고서의 20 개 이상의 다른 예를 포함 내 open source bookshelf,에 타 - SvnLog에 대한 API를 볼 수 있습니다. PowerShell "book"을 열고 SvnTools로 이동하십시오. 코드 here을 다운로드하십시오.

관련 문제