svn checkout에서 폴더를 무시할 수 있습니까? 빌드 서버에서 체크 아웃 할 때 DOCs 폴더를 무시해야합니다.
편집 : 외부 무시는 옵션이 아닙니다. 필요한 외부 기능이 있습니다.
svn checkout에서 폴더를 무시할 수 있습니까? 빌드 서버에서 체크 아웃 할 때 DOCs 폴더를 무시해야합니다.
편집 : 외부 무시는 옵션이 아닙니다. 필요한 외부 기능이 있습니다.
답변:
체크 아웃시 폴더를 직접 무시할 수는 없지만 svn 1.5에서는 스파 스 체크 아웃을 사용할 수 있습니다. 예를 들면 :
$ svn co http://subversion/project/trunk my_checkout --depth immediates
이것은 프로젝트 트렁크의 파일과 디렉토리를 'my_checkout'으로 확인하지만 해당 디렉토리로 재귀하지는 않습니다. 예 :
$ cd my_checkout && ls
bar/ baz foo xyzzy/
그런 다음 'bar'의 내용을 가져 오려면 :
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
예, SVN 1.6을 사용할 수 있습니다. 먼저 체크 아웃 한 다음 제외 할 폴더를 표시 한 다음 원하지 않는 폴더를 삭제해야합니다.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
지금부터 작업 복사본에 대한 업데이트는 문서 폴더를 다시 채우지 않습니다.
참조 http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ 및 http://subversion.apache.org/docs/release-notes/1.6.html#sparse- 자세한 내용은 디렉터리 제외 를 참조하세요.
톰
1.5 이전 버전에서는 최상위 폴더 만 체크 아웃 한 다음 선택적으로 업데이트하면 그때부터 업데이트시 체크 아웃 한 내용에만 영향을 미친다는 사실을 발견했습니다. 즉.
svn co -N foo
cd foo
svn up -N bar
svn up
-N 플래그는 조작을 비재 귀적으로 만듭니다. 위의 내용은 foo 수준에서 다른 항목을 확인하지 않습니다. 폴더가 있다고 말하면 lala
최종 svn up은 해당 폴더를 체크 아웃하지 않지만 업데이트 bar
됩니다.
하지만 나중에 svn up lala
체크 아웃에 추가 할 수 있습니다 .
아마도 이것은 1.5에서도 작동합니다.
문서 폴더를 외부 저장소에 넣은 다음 svn checkout --ignore-externals
.
external repository
뜻 인지 모르겠습니다 . 설명 할 수 있습니까?
예, Subversion 1.5 에는 이러한 종류의 작업을 정확히 수행 할 수있는 Sparse 체크 아웃 이라는 기능 이 있습니다.
회귀 테스트를 제외하고 WebKit 소스를 확인하는 방법을 찾는이 질문을 찾았습니다. 나는 다음과 같이 끝났다.
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
--depth immediates
cd WebKit
find . \
-maxdepth 1 -type d \
-not -name '.*' \
-not -name '*Tests' \
-not -name 'Examples' \
-not -name 'Websites' \
| (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
적절하다고 판단되면 제외를 변경할 수 있지만. *는 작업 디렉토리 (이미 최신 상태)와 모든 .svn 디렉토리를 건너 뛰는 것이 좋습니다.
나는 최근에 같은 작업을 해결했습니다. 아이디어는 저장소 아래의 폴더 / 파일 목록을 즉시 가져와 필요한 항목을 제외한 다음 나머지 폴더를 확인하고 즉시 파일을 업데이트하는 것입니다. 해결책은 다음과 같습니다.
# Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
# This files are to be excluded (folders are ending with '/')
# this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
# Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
# Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
# Initial nonrecursive checkout of repository - just empty
# to the current (./) working directory
svn co $rpath ./ --depth empty && \
# Update the files
svn up $files &&\
# Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
소스 작업 디렉토리로 변경하십시오. 명령을 복사하십시오. 풀. 적절한 URL을 변경하고 패턴을 제외하십시오. 명령을 실행하십시오.
감사,