모든 히스토리를 포함하여 서브 버전 저장소의 전체 텍스트 검색을 수행하는 방법이 있습니까?
예를 들어, 어딘가에 사용한 기능을 작성했지만 필요하지 않았으므로 파일을 svn rm’d했지만 이제 다른 용도로 사용하려면 다시 찾아야합니다. svn 로그는 아마도 “제거 된 미사용 물건”과 같은 것을 말하고, 그런 체크인이 많이 있습니다.
편집 2016-04-15 : 여기에 “전체 텍스트 검색”이라는 용어가 요구하는 것은 파일 이름 및 / 또는 커밋 메시지가 아닌 커밋 기록의 실제 차이점 을 검색하는 것 입니다. 필자는 위의 문구가 그 점을 잘 반영하지 않기 때문에 이것을 지적하고 있습니다. 그의 예제에서 그는 파일 이름 및 / 또는 커밋 메시지 만 찾고있을 수 있기 때문입니다. 따라서 많은 svn log
답변과 의견.
답변
git svn clone <svn url>
git log -G<some regex>
답변
svn log
Apache Subversion 1.8 에서는 새로운 --search
옵션을 지원 합니다 . 따라서 타사 도구 및 스크립트를 사용하지 않고도 Subversion 저장소 기록 로그 메시지를 검색 할 수 있습니다.
svn log --search
작성자, 날짜, 로그 메시지 텍스트 및 변경된 경로 목록에서 검색합니다.
답변
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
.