2010-08-23 5 views
1

Subversion 저장소에서 일련의 커밋 작업을 제거해야하는 특정 상황이 있습니다. 실수 (/ trunk/tags/branches)의 전체 내용에 태그를 추가하고 실수로 제거하면 제거됩니다. 나는 svndumpfilter를 사용하여 문제가되는 노드를 제거하지만, 나중에 다른 노드에서 잘못된 태그 이름을 다시 사용하여 경로 기반 제외가 다른 문제를 일으킬 수 있습니다. 12GB 인 덤프 파일을 수동으로 편집해야합니다. 나는 다음과 같은 형식으로 덤프에 표시 내가 편집해야 15 개 연속 버전의 시리즈가 : 나는 짓을했는지 테스트를sed/awk 또는 다른 도구를 사용하여 12GB Subversion 덤프 파일의 검색 및 교체를 돕는 방법

Revision-number: 60338 
Prop-content-length: 143 
Content-length: 143 

K 7 
svn:log 
V 41 
Tagging test prior to creating xx branch 
K 10 
svn:author 
V 7 
userx 
K 8 
svn:date 
V 27 
2009-05-27T15:01:31.812916Z 
PROPS-END 

Node-path: test/tags/XX_8_0_FINAL 
Node-kind: dir 
Node-action: add 
Node-copyfrom-rev: 60337 
Node-copyfrom-path: test 

기반을, 나는 내가로 변경 위의 절을 필요로 알고 다음과 같습니다 :

Revision-number: 60338 
Prop-content-length: 112 
Content-length: 112 

K 7 
svn:log 
V 38 
This is an empty revision for padding. 
K 8 
svn:date 
V 27 
2009-05-27T15:01:31.812916Z 
PROPS-END 

동일한 교체가 필요한 14 개 개정이 있습니다. VIM에서 파일을 수동으로 편집하는 것은 심각하게 비실용적입니다. 덤프 파일은 2 진 및 ASCII 텍스트가 혼합되어 있습니다. 누구나 나를 도울 수있는 awk/sed 마법이 있다면 정말 감사 할 것입니다.

답변

1

나는 다음과 같은 단계를 사용하여 결국 :

cat dump.file | grep -C 250 "Revision-number: xxxxx" 

이것은이 "나쁜"커밋 나에게 노드 - 작업의 파일의 정확한 줄 번호를 주었다. 다음 은 그때마다 (행 번호에 의해) 노드 동작의 범위를 제거하기 위해 사용 나오지 커밋

sed -e "123,456d" -e "234,456d" 

이 꽤 빠른 것을 알았다. 호기심이 많은 사람들을 위해, 나는 이것을 완전히 제거해야하는 이유는 저장소 스캐너 (Atlassian Fisheye)가 나쁜 커밋을 색인하는 데 며칠이 걸리기 때문입니다. 나는이 문제를 해결해야만하는 제외 규칙을 사용하고 있었지만 Fisheye의 다음 릴리스에서 수정 될 예정인 제외 규칙이있는 버그를 발견했습니다. 참조 : http://jira.atlassian.com/browse/FE-2752

0

이러한 커밋에는 기밀 자료가 포함되어 있거나이를 제거하는 이유가 무엇입니까? 저장소에서 태그/분기를 제거하게하면 어떨까요? 편집 : 당신이 태그/브랜치를 이미 제거했다는 것을 감독 ...

2

큰 경고 : sed와 awk는 순수한 텍스트 파일에서 작동하도록 설계되었습니다. 파일이 바이너리와 아스키의 혼합 파일이라면 다음과 같이 작동 할 것이라고 확신하지 못합니다 (개인적으로는 Perl을 사용할 것입니다).

나는 "Revision-number : 60338"이 당신의 방아쇠로 사용하기를 원한다고 가정한다 (천국이 바이너리에서 발생한다면 도움이된다). 수정 된 섹션 ("... 이것은 비어있는 개정입니다 ...")을 newsection이라는 별도의 파일에 넣으십시오. 그 다음 :

sed -e '/^Revision-number: 60338$/r newsection' -e '/^Revision-number: 60338$/,/^Node-copyfrom-path: test$/d' bigfilename 
1

어때 대략 SvnDumpTool? 점진적으로 덤프 된 편집 된 부분과 초기 "좋은"부분을 조인 할 수 있습니다.

관련 문제