[svn] Subversion History (전체 텍스트) 검색

모든 히스토리를 포함하여 서브 버전 저장소의 전체 텍스트 검색을 수행하는 방법이 있습니까?

예를 들어, 어딘가에 사용한 기능을 작성했지만 필요하지 않았으므로 파일을 svn rm’d했지만 이제 다른 용도로 사용하려면 다시 찾아야합니다. svn 로그는 아마도 “제거 된 미사용 물건”과 같은 것을 말하고, 그런 체크인이 많이 있습니다.

편집 2016-04-15 : 여기에 “전체 텍스트 검색”이라는 용어가 요구하는 것은 파일 이름 및 / 또는 커밋 메시지가 아닌 커밋 기록의 실제 차이점검색하는 것 입니다. 필자는 위의 문구가 그 점을 잘 반영하지 않기 때문에 이것을 지적하고 있습니다. 그의 예제에서 그는 파일 이름 및 / 또는 커밋 메시지 만 찾고있을 수 있기 때문입니다. 따라서 많은 svn log답변과 의견.



답변

git svn clone <svn url>
git log -G<some regex>


답변

svn logApache Subversion 1.8 에서는 새로운 --search옵션을 지원 합니다 . 따라서 타사 도구 및 스크립트를 사용하지 않고도 Subversion 저장소 기록 로그 메시지를 검색 할 수 있습니다.

svn log --search 작성자, 날짜, 로그 메시지 텍스트 및 변경된 경로 목록에서 검색합니다.

참조 SVNBook | svn log명령 줄 참조 .


답변

Windows를 실행하는 경우 SvnQuery를 살펴 보십시오 . 로컬 또는 원격 리포지토리의 전체 텍스트 인덱스를 유지 관리합니다. 저장소에 커밋 된 모든 문서는 색인화됩니다. 간단한 웹 인터페이스에서 Google과 유사한 쿼리를 수행 할 수 있습니다.


답변

작은 쉘 스크립트를 사용하고 있지만 단일 파일에서만 작동합니다. 물론 더 많은 파일을 포함하기 위해 이것을 찾기와 결합 할 수 있습니다.

#!/bin/bash
for REV in `svn log $1 | grep ^r[0-9] | awk '{print $1}'`; do
  svn cat $1 -r $REV | grep -q $2
  if [ $? -eq 0 ]; then
    echo "$REV"
  fi
done

정말로 모든 것을 검색하려면 svnadmin dump명령을 사용 하고 grep하십시오.


답변

내가 찾은 가장 좋은 방법은 적은 것입니다.

svn log –verbose | 적게

출력이 적 으면 /VIM과 같이 검색 할 수 있습니다 .

편집하다:

저자에 따르면, 그는 메시지와 파일 이름 이상의 것을 검색하려고합니다. 어떤 경우에는 다음과 같이 빈민가를 해킹해야합니다.

svn diff -r0:HEAD | less

당신은 또한 당신을 대신 grep하여 다른 것을 대신 할 수도 있습니다. 이를 저장소의 서브 디렉토리에서 사용 svn log하려면 해당 디렉토리가 존재하는 첫 번째 개정판을 식별하고 대신 해당 개정판을 사용해야합니다 0.


답변

나는 비슷한 것을 찾고있다. 내가 찾은 최고는 OpenGrok 입니다. 아직 구현하지 않았지만 유망한 것으로 들립니다.


답변

svn log -v [repository] > somefile.log

diff의 경우 --diff옵션을 사용할 수 있습니다

svn log -v --diff [repository] > somefile.log

그런 다음 vim 또는 nano 또는 원하는 것을 사용하고 원하는 것을 검색하십시오. 꽤 빨리 찾을 수 있습니다.

멋진 스크립트 나 자동화 된 것이 아닙니다. 그러나 작동합니다.