SVN 체크 아웃 무시 폴더


98

svn checkout에서 폴더를 무시할 수 있습니까? 빌드 서버에서 체크 아웃 할 때 DOCs 폴더를 무시해야합니다.

편집 : 외부 무시는 옵션이 아닙니다. 필요한 외부 기능이 있습니다.



이것이 귀하의 질문에 대답합니까? SVN으로 디렉토리를 무시하려면 어떻게합니까?
Gautier

답변:


104

체크 아웃시 폴더를 직접 무시할 수는 없지만 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

참고 : 일부 1.5 버전에 버그가있어이를 방지했습니다svn: Shallowing of working copy depths is not yet supported
gcb

79

예, 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- 자세한 내용은 디렉터리 제외 를 참조하세요.


2
내 작업과 관련이없는 거대한 폴더를 체크 아웃하지 않아도 되었기 때문에 찬성했습니다.
dohpaz42

1
svn 정리 와 함께 12GiB를 절약했습니다.
JonnyJD

1
이것은 여전히 ​​초기에 모든 것을 체크 아웃하지 않습니까?
Huangism

9

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에서도 작동합니다.


6

이것은 TortoiseSVN 클라이언트 1.7.1에 있습니다 (일부 이전 버전에서도 사용 가능할 수 있음).

  • SVN 체크 아웃-> 저장소 URL 선택

  • "체크 아웃 항목"(체크 아웃 깊이 아래)을 클릭하고 필요한 폴더 만 선택하십시오!


4

문서 폴더를 외부 저장소에 넣은 다음 svn checkout --ignore-externals.


이것이 이전 작업에서 미리 빌드 된 일부 구성 요소를 건너 뛰기 위해 수행 한 작업입니다.
Mark Bessey

2
무슨 external repository뜻 인지 모르겠습니다 . 설명 할 수 있습니까?
빅터

4

예, Subversion 1.5 에는 이러한 종류의 작업을 정확히 수행 할 수있는 Sparse 체크 아웃 이라는 기능 이 있습니다.


2
그것을 읽었을 때 희소 체크 아웃은 체크 아웃의 깊이를 제한하는 것처럼 보입니다. 특정 폴더 하나를 무시할 수 없습니다.
John Millikin

물론, --depth 즉시로 상위 폴더의 깊이를 제한하는 것과 같은 약간의 추가 작업을 수행 한 다음 무시하려는 폴더를 제외한 다른 모든 폴더를 확인해야 할 수 있습니다. 요점은 필요한 경우 도구가 있다는 것입니다.
Greg Hewgill

SparseCheckouts에 대한 언급에 감사 드리며 확실히 흥미롭지 만이 답변은 원래 질문을 다루지 않습니다. 물론, 한 번에 하나의 파일을 체크 아웃 할 수 있습니다. 그러면 내가 원하는 특정 파일의 로컬 사본이 생성 될 것입니다.하지만 각각을 개별적으로 수행해야하는 것은 당연한 일입니다. 이 질문의 작성자는 x 폴더의 깊이가 아닌 특정 폴더를 무시하고 컴퓨터가 작업을 수행하도록 허용하는 것에 대해 묻고 있다고 생각합니다. 권장하는 동일한 작업을 수동으로 수행 할 수 있습니다.
barrypicker 2012

1.6+ 버전은 폴더를 무시할 수있는 추가 기능을 제공하고 작업 복사본에 포함 / 제외 할 항목에 대한 일반적인 제어 기능을 제공합니다 (v1.5는 여기에서 매우 제한됨) svnbook.red-bean.com/en/1.7/svn. advanced.sparsedirs.html
FruitBreak 2015 년

3

회귀 테스트를 제외하고 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 디렉토리를 건너 뛰는 것이 좋습니다.


이것이 무슨 언어 지?
Pup 2014 년

이들은 유닉스 쉘 명령입니다 (스크립트 파일로 저장하고 실행할 수도 있습니다)
mrlem

2

나는 최근에 같은 작업을 해결했습니다. 아이디어는 저장소 아래의 폴더 / 파일 목록을 즉시 가져와 필요한 항목을 제외한 다음 나머지 폴더를 확인하고 즉시 파일을 업데이트하는 것입니다. 해결책은 다음과 같습니다.

    # 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을 변경하고 패턴을 제외하십시오. 명령을 실행하십시오.

감사,


1
개발자에게 6 년이란 무엇입니까? 마지막 줄에는 $ ubrpath가 있습니다. 그 세트는 어디입니까?
D-Klotz

1
@ D-Klotz, 감사합니다. 대신 $ rpath 여야합니다. 그러면 저장소 경로로 설정됩니다. <br/> 1 년 늦게 죄송합니다
bv.

1

아니요, 무시는 파일 추가 전용입니다.
스파 스 체크 아웃을 사용할 수 있습니다 (svn 1.5를 사용하는 경우).


1

다른 사람들이 언급했듯이 svn : externals 속성을 사용한 다음 체크 아웃 할 때 --ignore-externals 옵션을 사용할 수 있습니다. 그러나 한 가지 주목할 점은 svn : externals가 반드시 다른 저장소를 참조 할 필요 가 없다는 것입니다. 동일한 저장소의 다른 폴더에 대한 참조 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.