SVN에서 버전이없는 모든 파일 목록을 얻으려면 어떻게해야합니까?


80

때로는 개발 중이고 커밋하기로 결정하고 프로젝트에 몇 개의 파일을 만든 것을 잊어 버립니다. 그런 다음 며칠 후 친구가 Subversion에서 빌드를 가져오고 일부 파일이 누락 된 것 같다고 불평합니다. 아 젠장, 그 파일을 추가하는 걸 잊었 어!

Subversion에서 버전 제어를받지 않는 파일 목록을 어떻게 얻을 수 있습니까? 그래서 모든 것을 저장소에 추가했는지 확신 할 수 있습니까?

답변:


107

다음 svn status명령을 사용하십시오 .

svn status | grep ^?

버전이 지정되지 않은 파일은? 줄의 시작 부분에.

저장소에 추가해서는 안되는 특정 파일 (예 : 생성 된 바이너리)이 항상있는 경우 .NET Framework svn:ignore를 사용할 때 이러한 파일이 계속 표시되지 않도록 포함하는 디렉토리에 속성을 설정해야합니다 svn status.


4
개인적으로 저는 항상 "svn ci"앞에 "svn diff"를 사용하지만 가끔 느리기 때문에 항상 "svn diff"앞에 "svn stat"를 추가하는 것을 잊지 않기 때문에 편리합니다. :)
ephemient

11
추가하고 싶은 버전이없는 파일이 많으면 다음과 같이하십시오 : svn st | grep ^? | awk '{print $2} | xargs svn add 먼저 버전없는 파일을 찾고, awk는 행의 두 번째 항목 (예 : 파일 경로) 만 인쇄하고 xargs는이 경로를 svn의 인수로 만듭니다. 더하다.
duality_

7
awk 명령 끝에 작은 따옴표가 없습니다. 명령은 다음과 같아야합니다.svn st | grep ^? | awk '{print $2}' | xargs svn add
jplandrain 2014 년

46

일부 파일이 ignore상태에 추가 된 경우 svn status. 너는 필요할거야:

svn status --no-ignore

1
내 설정에서 기본적으로 svn 상태에서 무시되는 것처럼 보이는 바이너리 파일에도 유용합니다. 이 작업을 수행하는 일부 설정을 알지 못하지만 --no-ignore를 사용하면이 시나리오에서 도움이되었습니다.
앤디 웨인 스테인

선택한 답변이 제 경우 (리눅스 환경의 바이너리 파일의 경우)에서 작동하지 않았기 때문에 수락 된 답변이어야합니다.
Asqan

15

Windows에서 실행중인 경우 PowerShell을 사용하여 Greg Hewgill 의 답변 과 유사한 작업을 수행 할 수 있습니다.

(svn stat) -match '^\?'

이것은 버전이없고 무시 된 모든 파일을 찾아서 삭제할 수 있도록 매우 쉽게 확장 할 수 있습니다.

(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm

누군가에게 도움이 되었기를 바랍니다!


1
어떻게 () -math부르나요?
Pavel Petrov


1

이 명령을 사용하여 버전이 지정되지 않은 파일의 모든 경로를 나열 할 수 있습니다.

svn status | awk '/^?/ {print $2}'

첫 번째 부분 은를 수행 svn status하고 출력을 AWK로 리디렉션하여 "첫 번째 문자는 '?'"라는 간단한 필터를 수행 한 다음 "파일 경로 인"두 번째 매개 변수를 인쇄합니다.

svn status항상 무시 된 파일을 인쇄 하지 않습니다 . 다음을 사용하여 해당 경로를 추가하여 파일 또는 경로를 추가 할 수 있습니다.

svn propset svn:ignore "PATH OR PATERN"

이것은 svn status버전이없는 파일뿐만 아니라 의 모든 결과를 얻는 것 같습니다 . 필터가 정규 표현식이므로 명령이을 svn status | awk '/^\?/ {print $2}'이스케이프 해야한다고 생각합니다 ?.
KymikoLoco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.