SVN 저장소에 작업 사본의 모든 버전 화되지 않은 파일을 자동으로 ‘svn add’하는 좋은 방법을 찾고 있습니다.
소스 제어하에 있어야 할 파일을 만들 수있는 라이브 서버가 있습니다. 한 번에 하나씩 추가하고 추가하는 대신 자동으로 추가 할 수있는 짧은 스크립트를 갖고 싶습니다.
내 서버에서 Windows Server 2003을 실행 중이므로 Unix 솔루션이 작동하지 않습니다.
답변
svn add --force * --auto-props --parents --depth infinity -q
좋은 팁! 한 가지 언급 : 내 Eclipse 는 새 파일을 무시 목록에 자동으로 추가합니다. 구성 문제 일 수 있지만 어쨌든 --no-ignore
도움 이되는 옵션이 있습니다.
이 후에 커밋 할 수 있습니다.
svn commit -m 'Adding a file'
답변
답변
작동하는 것은 다음과 같습니다.
c:\work\repo1>svn add . --force
하위 디렉토리의 내용을 추가합니다.
무시 된 파일을 추가하지 않습니다.
추가 된 파일을 나열합니다.
명령의 점은 현재 디렉토리를 나타내며, 현재 디렉토리와 다른 디렉토리를 추가하려는 경우 특정 디렉토리 이름 또는 경로로 바꿀 수 있습니다.
답변
이것은 나를 위해 일했다 :
svn add `svn status . | grep "^?" | awk '{print $2}'`
( 소스 )
Windows의 문제점을 이미 해결 했으므로 이것은 Sam 솔루션 인 UNIX 솔루션입니다. 제목에 키워드 “WINDOWS”가 포함되어 있지 않기 때문에 같은 질문을하는 사람들에게 여전히 유용하다고 생각하면서 여기에 추가했습니다.
참고 (2015 년 2 월) : “bdrx”로 주석을 달면 위 명령을 다음과 같이 단순화 할 수 있습니다.
svn add `svn status . | awk '/^[?]/{print $2}'`
답변
svn add --force .
현재 디렉토리와 모든 버전 하위 디렉토리에 버전없는 파일이 추가됩니다.
답변
이 방법은 공백의 개수 / 조합이있는 파일 이름을 처리해야합니다.
svn status /home/websites/website1 | grep -Z "^?" | sed s/^?// | sed s/[[:space:]]*// | xargs -i svn add \"{}\"
다음은 해당 명령의 기능에 대한 설명입니다.
- 변경된 모든 파일을 나열하십시오.
- 이 목록을 ‘?’가있는 행으로 제한하십시오. 처음에는-즉 새로운 파일.
- ‘?’를 제거하십시오. 줄의 시작 부분에 문자.
- 줄의 시작 부분에서 공백을 제거하십시오.
- 파일 이름을 xargs로 파이프하여 svn add를 여러 번 실행하십시오.
공백이있는 파일 이름을 ‘svn add’로 가져올 수 있도록 xargs에 -i 인수를 사용하십시오. 기본적으로 -i는 {}를 플레이스 홀더로 사용하도록 설정하여 ‘svn에서 사용하는 파일 이름 주위에 “문자를 넣을 수 있습니다. 더하다’.
이 방법의 장점은 공백이있는 파일 이름을 처리해야한다는 것입니다.