방금 SVN을 사용하기 시작했으며 소스 제어에서 필요하지 않은 캐시 디렉토리가 있습니다. SVN을 사용하여 전체 디렉토리 / 폴더를 어떻게 무시할 수 있습니까?
방금 SVN을 사용하기 시작했으며 소스 제어에서 필요하지 않은 캐시 디렉토리가 있습니다. SVN을 사용하여 전체 디렉토리 / 폴더를 어떻게 무시할 수 있습니까?
답변:
svn:ignore
상위 디렉토리 의 특성을 설정하십시오 .
svn propset svn:ignore dirname .
무시할 사항이 여러 개인 경우 속성 값에서 줄 바꿈으로 구분하십시오. 이 경우 외부 편집기를 사용하여 속성 값을 편집하는 것이 더 쉽습니다.
svn propedit svn:ignore .
svn rm --keep-local dirname
먼저. (내 svn 통계 출력은 거대했고 나는 잠시 동안 이것에 머리를 부딪쳤다.)
svn propset svn:ignore -F file.txt .
svn:ignore
하지 않도록 조심하십시오 svn::ignore
. 임의의 속성을 설정할 수 있으므로 후자의 속성은 OK로 설정되며 속성을보고 편집 할 수 있지만 SVN이 나열된 파일을 무시하지는 않습니다.
디렉토리 구조의 예는 다음과 같습니다.
\project
\source
\cache
\other
project
당신이 볼 때 캐시 디렉토리가 추가되지 않고 그대로 표시됩니다.
> svn st
M source
? cache
ignore 속성을 설정하려면
svn propset svn : ignore 캐시.
여기서 svn:ignore
설정하려는 속성의 이름, 속성 cache
의 값 및 .
이 속성을 설정하는 디렉토리입니다. 의 상위 디렉토리 여야합니다cache
특성이 필요한 .
설정 한 속성을 확인하려면
> svn proplist
Properties on '.':
svn:ignore
의 가치를 보려면 svn:ignore
:
> svn propget svn:ignore
cache
이전에 설정 한 속성을 삭제하려면
svn propdel svn:ignore
dirname
. 예를 들어을 입력 svn propset svn:ignore dirname
할 때 (bash) 셸이 dirname을 채우도록 허용하면 뒤에 슬래시가 추가되어 명령이 남게 svn propset svn:ignore dirname/
되어 폴더가 무시되지 않습니다. 적어도 그것은 내 경험이었습니다.
이 작업을 수행하는 데 시간이 걸렸으므로 SVN에 파일이 이미 있으면 파일 svn delete
을 편집 한 다음 svn:ignore
속성 을 편집해야 합니다.
나는 그것이 명백해 보인다는 것을 알고 있지만, 그들이 ?
내 svn status
지역에서 무시할 것이라고 생각했을 때 그들은 내 목록과 같이 계속 나타났습니다 .
svn 명령 줄 도구를 사용하여이 작업을 약간 확장하려면 다음을 입력하십시오.
svn propedit svn:ignore path/to/dir
선택한 텍스트 편집기를 연 다음 '*'를 입력하여 내부의 모든 것을 무시하고 저장 + 종료하십시오.이 디렉토리는 svn의 디렉토리 자체를 포함하지만 내부의 모든 파일은 무시하고 디렉토리를 무시하려면 부모의 경로를 누른 다음 파일에 디렉토리 이름을 입력하십시오. 저장 후 업데이트 ( 'svn up')를 실행 한 다음 적절한 경로를 확인하십시오.
svn:ignore
상위 디렉토리 에서 특성을 설정하십시오 .
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
현재의 모든 값을 덮어 씁니다 svn:ignore
. 다음을 사용하여 값을 편집하십시오.
$ svn pe svn:ignore .
편집기가 열립니다. 한 줄에 하나씩 여러 패턴을 추가 할 수 있습니다.
다음을 사용하여 현재 값을 볼 수 있습니다.
$ svn pg svn:ignore .
GUI를 사용하는 경우이를 수행하기위한 메뉴 옵션이 있어야합니다.
svn ps svn:ignore . 'cachedir'
결과 cachedir is not under version control
. svn ps svn:ignore 'cachedir' .
나를 위해 일하기로 변경
위의 모든 기여에 감사드립니다. 파일을 무시하면서 내 경험에서 얻은 추가 정보를 공유하고 싶습니다.
폴더가 이미 개정 관리중인 경우
svn import 및 svn co 후파일을 , 우리가 일반적으로 처음하는 일.
모든 런타임 캐시, 첨부 파일 폴더는 버전 제어를받습니다. 따라서 svn ps svn : ignore 전에 저장소에서 삭제해야합니다.
SVN 버전 1.5 이상에서는을 사용할 수 svn del --keep-local your_folder
있지만 이전 버전의 경우 내 솔루션은 다음과 같습니다.
.svn
숨겨진 폴더 없이 폴더의 깨끗한 사본을 내 보냅니다 .둘 이상의 폴더를 무시해야 할 때
svn:ignore
svn pe
텍스트 파일을 편집해야하며 vi를 사용하여 텍스트 편집기를 설정해야하는 경우이 명령을 사용할 수 있습니다 .
export SVN_EDITOR=vi
파일은 다음과 같이 간단하게 보입니다.
runtime
cache
attachments
assets
svn propset svn:ignore -F .ignorethesefiles .
파일의 내용을 사용하는을 사용할 수도 있습니다 . 나는 그것을 무시하고 무엇이 무시되는지 알 수 있습니다. 수정하려면 후속 조치 세트가 필요합니다.
특정 SVN 클라이언트 TortoiseSVN을 사용하는 경우 커밋시 항목을 마우스 오른쪽 단추로 클릭하고 "무시 목록에 추가"를 선택할 수 있습니다.
여러 항목을 무시하는 명령은 약간 까다 롭고 백 슬래시가 필요합니다.
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
이 명령은 이름이 무엇이든을 무시합니다 cache
, tmp
, null
, 그리고 and_so_on
현재 디렉토리이다.
svn propset svn:ignore -F .ignorethesefiles .
파일을 사용할 수 있습니다. 그리고 언급했듯이, 당신은 항상 propedit을 가지고 있습니다.
중첩 디렉토리를 무시하는 데 문제가있었습니다. 내가 무시하고 싶었던 최상위 디렉토리는 'svn status'로 표시되지 않지만 모든 하위 디렉토리가 표시되었습니다. 이것은 아마도 다른 사람들에게 자명하지만, 나는 그것을 공유 할 것이라고 생각했습니다.
예:
/트렁크
/ trunk / 캐시
/ trunk / cache / subdir1
/ trunk / cache / subdir2
cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
"고마워" svn은 파일을 무시하고 무시 무시하고 어려운 방법입니다.
그래서 나는 svn-ignore-all 스크립트를 작성했다 :
#!/bin/sh
# svn-ignore-all
# usage:
# 1. run svn status to see what is going on at each step
# 2. add or commit all files that you DO want to have in svn
# 3. remove any random files that you don't want to svn:ignore
# 4. run this script to svn:ignore everything marked '?' in output of `svn status`
svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
d=`dirname "$f"`
b=`basename "$f"`
ignore=`svn propget svn:ignore "$d"`
if [ -n "$ignore" ]; then
ignore="$ignore
"
fi
ignore="$ignore$b"
svn propset svn:ignore "$ignore" "$d"
done
또한 특정 파일 / 경로 이름 목록을 무시하기 위해이 변형 svn-ignore를 사용할 수 있습니다 . svn-ignore-all은 실제로 xargs svn-ignore와 같아야한다고 생각합니다.
#!/bin/sh
# svn-ignore
# usage:
# svn-ignore file/to/ignore ...
for f; do
d=`dirname "$f"`
b=`basename "$f"`
ignore=`svn propget svn:ignore "$d"`
if [ -n "$ignore" ]; then
ignore="$ignore
"
fi
ignore="$ignore$b"
svn propset svn:ignore "$ignore" "$d"
done
한 가지 더 : 나는 많은 임의의 파일로 내 svn 체크 아웃을 오염시키는 경향이 있습니다. 커밋해야 할 때 해당 파일을 'old'하위 디렉토리로 이동하고 svn에게 'old'를 무시하도록 지시합니다.
여러 무시에 대한 배쉬 oneliner :
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
TortoiseSVN과 같은 SVN에 프론트 엔드를 사용하거나 IDE 통합을 사용하는 경우 동일한 메뉴에 커밋 / 추가 작업과 같은 무시 옵션이 있어야합니다.
다음 방법 으로 Eclipse 로 해결되었습니다 .
우선, 폴더를 프로젝트와 동기화하십시오.
팀-> 동기화
다음보기 인 팀보기에서 SVN 서버에 커밋 할 수있는 모든 리소스를 볼 수 있습니다.
따라서 무시하려는 리소스의 리소스 폴더를 선택한 다음 다음을 사용하여 무시할 수 있습니다.
팀 ->에 추가
svn:ignore
.
그런 다음 확인 창에서 첫 번째 옵션 인 "이름으로 무시"를 선택하십시오.
예를 들어, 대상 폴더와 해당 .class 리소스를 무시하려면 동기화하고 동기화보기에서 대상 폴더를 선택합니다. 그 후, 나는 선택할 것이다
팀-> 추가
에 svn:ignore
그리고 나는 확인 창에서 첫 번째 옵션을 확인할 수 있습니다.
이 간단한 활동을 수행하는 방법을 찾기 위해 많은 시간을 잃은 후, 나는 적절한 설명을 찾기가 어렵다는 것을 게시하기로 결정했습니다.
먼저 샘플 구조를 보자
$ svn st? 프로젝트 / 트렁크 / 대상? 프로젝트 / 트렁크 /myfile.x
1 – 먼저 mycase vim export SVN_EDITOR = vim에서 편집기를 구성하십시오.
2 –“svn propedit svn : ignore project / trunk /”는 새 파일을 열고“target”파일 유형으로 파일과 하위 디렉토리를 추가 할 수 있습니다.
$ svn st? 프로젝트 / 트렁크 /myfile.x
감사.