2012-03-05 3 views
5

일부 확실하지 않은 (그러나 유효한) 이유로 파일이 우리 저장소에서 버전이 변경되었는지 확인해야합니다. 파일이 svn-repo에 존재했는지 어떻게 알 수 있습니까?

는 난 단지 제거 된 항목을 파싱 한 후 포함 된 디렉토리의 로그를 얻고의 로터리 방식으로 발견 :

svn log -v a/b/|grep " D .*a/b/c.xml" 

그것은 작동을하지만, "부정"다소 취약 느낀다.

+0

svn log -q -v | grep filename | wc -l –

답변

4

귀하의 질문에 따라 개의 파일을 암시 적으로 귀하의 요청으로 한정하고 있습니다 (단순한 디렉토리 검색에서 삭제되지 않는 것으로 추정되므로). Lazy Badger의 의견은 정확성을 잃지 않고 자격을 제거하고 명령을 단순화하는 데 가치가 있습니다. 나는 모든 것을 단순화하는 데 찬성하지만 모든 문제를 감안할 때 약간의 추가 비용으로 더 많은 해결책을 얻는 것을 고려하고 싶다.

그래서 제안 된 솔루션을 시작 :

svn log -v a/b/ | grep " D .*a/b/c.xml" 

내가 먼저 -q 옵션을 추가, 출력이 줄어 듭니다 그냥 어쨌든 폐기됩니다

svn log -v -q a/b/ | grep " D .*a/b/c.xml" 

그리고 내가 원하는 것 단지 인지 알기 위해서과 같은 파일이 삭제되었지만, (즉, 어떤 개정판)이 삭제되었을 때 도 삭제되었습니다. 당신은 또한 암시 적으로 유닉스/리눅스 환경을 자격이 있기 때문에, 여기에 (이 blog entry에서 적응) AWK와 솔루션입니다 :

–v 매개 변수를 사용하는 경우 때문에 svn log 출력 형식의 작동
svn log -q -v a/b/ | awk ' 
    /^r[0-9]* \|/ { REVISION=$1; } 
    /D/ { print REVISION": "$0; } 
' | grep " D .*a/b/c.xml" 

: 그것은 그 리비전에있는 모든 파일 다음에 리비전을보고합니다. 여기서 파일 Page.cs이 개정 10506에서 삭제되었음을 나타내는 예이다 :

r10506 | msorens | 2011-02-14 12:58:56 -0800 (Mon, 14 Feb 2011) | 1 line 
Changed paths: 
    A /Projects/Test/Common 
    A /Projects/Test/Common/Setup.cs 
    A /Projects/Test/Common/Utility.cs 
    D /Projects/Test/Page.cs 

(이하 'D 삭제 된 모든 파일이 표시된 후 상단 행에서 버전 번호를 추출하고,이 형식으로 해석 출력 위에 AWK 명령 "라인). 당신의 작업의 루트에 로그 창을 열어 ---

$(switch -Regex (svn log -q -v a/b) { 
    '^(r[0-9]*) \|' { $rev = $Matches[1] } 
    '^ D\s+(.*)' { "{0,-6} {1}" -f $rev, $Matches[1] } 
}) | Select-String "a/b/c.xml" 

그러나 TortoiseSVN을 가진 쉬운 방법이 있습니다 : Windows의 경우, PowerShell은 스위치 문을 사용하여 동일한 전력 및 AWK로 사용의 용이성을 제공합니다 검색 상자에 파일 이름을 복사하고 입력하십시오. 수정 목록은 사용자가 입력 한 내용을 즉시 필터링합니다. 둘 이상의 출력 행이 표시되면 최신 (맨 위) 개정은 항상 파일이 삭제 된 개정입니다. @Michael Sorens의 대답

0

덕분에, 내 경우에는이 작업

내가 폴더 여기 ./assets/gfx

에서 제거 곳 파일 bash 쉘에 대한 코드입니다 확인할 필요가있어 각 라인은 명령 행 'mysearchstr'당신이 입력 설정이 일단 한 줄에

mysearchstr=assets/gfx/ 
svn log -v $mysearchstr | awk '/^r[0-9]* \|/ { REVISION=$1; }/D/ { print REVISION": "$0; }' | grep menu 

그냥 내가이 솔루션을 구성하는 방법을 공유하기를 원해요 쉘로 VAR의 집합입니다.그것은 원래의 답을 다시 보여줍니다.하지만 어쩌면 누군가에게 간결한 코드 블록을 쉽게 복사 할 수있게하고, 실제 솔루션 대답 (누군가 구현하지만)이 실제로 정확하다는 것을 되풀이합니다.

관련 문제