2010-06-10 6 views
2

Subversion 로그에있는 모든 커밋 메시지를 가져 와서 하나의 텍스트 파일로 연결하고 싶습니다. Windows의 svn 명령 줄을 사용하는 것이 좋습니다. - R1 메시지
- R1 메시지
-Subversion의 모든 커밋 메시지를 메타 데이터없이 하나의 텍스트 파일로 연결하는 방법은 무엇입니까?

R1 메시지

내가하고 싶은 것은 무엇인가와 같은 :

각 커밋 메시지를

이 형식은

- R1 메시지
- r1 메시지
- r2 메시지
- r2 메시지
- R3 메시지
[...]
- R1000 메시지

업데이트 내가 위가 분명했다 생각했지만, 제가 로그에 싶지 않아하는 정보의 유형

:

r2130 | 사용자 | 2010-03-19 10:36:13 -0400 (Fri, 19 3 월 2010) | 1 줄

메타 데이터가 없으므로 커밋 메시지 만 보내면됩니다. Windows 명령 줄에서

답변

6

svn log 명령의 --xml 매개 변수를 사용할 수 있습니다.이 매개 변수는 출력 형식을 xml로 설정하고 필요한 스크립팅 언어로 쉽게 구문 분석하여 필요한 텍스트 파일을 생성합니다. 같은 파이썬 뭔가
: 다비드 Gualano 당신이 어떤을 수 출력을 생성하기 위해 --xml 명령을 사용할 수 있습니다 제안으로 다음

from xml.dom.minidom import parse 
xml = parse("log.xml") 
entries = xml.getElementsByTagName("logentry") 
for e in entries: 
    rev = e.getAttribute("revision") 
    msg = e.getElementsByTagName("msg")[0].firstChild.nodeValue 
    print "-r" + rev + " " + msg 
parseLog.py로 저장

, 단순히

svn log --xml > log.xml 
python parseLog.py > revisions.txt 
+0

명령 줄에서만이 작업을 수행하는 쉬운 방법이 없다고 생각합니다. 대부분의 설치 작업에는 파이썬이 있으므로 허용됩니다. 또한 로그의 "rx"는 단순히 로그 메시지를 식별하는 것이지 특별히 메시지의 개정 번호를 원하는 것은 아닙니다. 고마워, 이건 몇 가지 변화와 함께 작동합니다. –

+1

엄청나게 편리합니다. 내 svn 호출에 대한 하위 프로세스를 사용하므로 StringIO에 출력을 덤프하고 seek (0)을 수행 한 다음이를 구문 분석 함수에 전달하여 챔피언처럼 작업했습니다. – pyInTheSky

0

하지 당신은 마우스 오른쪽 단추로 클릭 한 거북이/로그보기를 선택할 수 있습니다 -------

svn log - q > svn.log 
+0

이 메서드는 원하지 않는 메타 데이터를 추가하기 때문에 좀 더 명확하게 질문을 업데이트했습니다. –

+0

답변이 업데이트되었습니다. –

+0

이것은 커밋 메시지를 제거하고 --------- 및 개정 ID 행을 남겨 둡니다. –

0

Withn 거북이 SVN의 라인을 제거하는 방법을 확인하십시오. 모든 로그를 선택하고 파일에 붙여 넣으십시오.

+0

이 메서드는 원치 않는 메타 데이터를 추가하기 때문에 질문을 조금 더 명확하게 업데이트했습니다. –

0

Java 개발자는 SVNKit을 사용하여 원하는 Subversion 추출 프로그램 종류를 정확하게 쓸 수 있습니다.

다른 사람이 대답 했으므로 로그 출력을 수동으로 조작 할 수 있습니다.

1

를 시작 파싱되다. 임의의 xslt 프로세서와 xslt 파일을 사용하여 필요한 출력을 생성하십시오. 예를 들어 svn2cl을 참조하십시오.