때로는 개발 중이고 커밋하기로 결정하고 프로젝트에 몇 개의 파일을 만든 것을 잊어 버립니다. 그런 다음 며칠 후 친구가 Subversion에서 빌드를 가져오고 일부 파일이 누락 된 것 같다고 불평합니다. 아 젠장, 그 파일을 추가하는 걸 잊었 어!
Subversion에서 버전 제어를받지 않는 파일 목록을 어떻게 얻을 수 있습니까? 그래서 모든 것을 저장소에 추가했는지 확신 할 수 있습니까?
답변:
다음 svn status
명령을 사용하십시오 .
svn status | grep ^?
버전이 지정되지 않은 파일은? 줄의 시작 부분에.
저장소에 추가해서는 안되는 특정 파일 (예 : 생성 된 바이너리)이 항상있는 경우 .NET Framework svn:ignore
를 사용할 때 이러한 파일이 계속 표시되지 않도록 포함하는 디렉토리에 속성을 설정해야합니다 svn status
.
svn st | grep ^? | awk '{print $2} | xargs svn add
먼저 버전없는 파일을 찾고, awk는 행의 두 번째 항목 (예 : 파일 경로) 만 인쇄하고 xargs는이 경로를 svn의 인수로 만듭니다. 더하다.
svn st | grep ^? | awk '{print $2}' | xargs svn add
Windows에서 실행중인 경우 PowerShell을 사용하여 Greg Hewgill 의 답변 과 유사한 작업을 수행 할 수 있습니다.
(svn stat) -match '^\?'
이것은 버전이없고 무시 된 모든 파일을 찾아서 삭제할 수 있도록 매우 쉽게 확장 할 수 있습니다.
(svn stat "--no-ignore") -match '^[I?]' -replace '^.\s+','' | rm
누군가에게 도움이 되었기를 바랍니다!
() -math
부르나요?
이 명령을 사용하여 버전이 지정되지 않은 파일의 모든 경로를 나열 할 수 있습니다.
svn status | awk '/^?/ {print $2}'
첫 번째 부분 은를 수행 svn status
하고 출력을 AWK로 리디렉션하여 "첫 번째 문자는 '?'"라는 간단한 필터를 수행 한 다음 "파일 경로 인"두 번째 매개 변수를 인쇄합니다.
svn status
항상 무시 된 파일을 인쇄 하지 않습니다 . 다음을 사용하여 해당 경로를 추가하여 파일 또는 경로를 추가 할 수 있습니다.
svn propset svn:ignore "PATH OR PATERN"
svn status
버전이없는 파일뿐만 아니라 의 모든 결과를 얻는 것 같습니다 . 필터가 정규 표현식이므로 명령이을 svn status | awk '/^\?/ {print $2}'
이스케이프 해야한다고 생각합니다 ?
.