문제

방금 SVN을 사용하기 시작했는데 소스 제어에 필요하지 않은 캐시 디렉터리가 있습니다.SVN을 사용하여 전체 디렉터리/폴더를 어떻게 무시할 수 있습니까?

나는 사용하고있다 버전 그리고 TextMate OS X 및 명령줄에서.

도움이 되었습니까?

해결책

설정 svn:ignore 상위 디렉토리의 속성:

svn propset svn:ignore dirname .

무시할 항목이 여러 개인 경우 속성 값에서 줄 바꿈으로 구분하세요.이 경우 외부 편집기를 사용하여 속성 값을 편집하는 것이 더 쉽습니다.

svn propedit svn:ignore .

다른 팁

다음은 디렉터리 구조의 예입니다.

\project
    \source
    \cache
    \other

언제 project 캐시 디렉토리가 추가되지 않고 그대로 나타나는 것을 볼 수 있습니다.

> svn st
M  source
?  cache

무시 속성을 설정하려면 다음을 수행하십시오.

svn propset svn:캐시 무시 .

어디 svn:ignore 은 설정 중인 속성의 이름입니다. cache 부동산의 가치이고, . 이 속성을 설정하는 디렉터리입니다.이는 다음의 상위 디렉토리여야 합니다. cache 속성이 필요한 디렉터리입니다.

어떤 속성이 설정되어 있는지 확인하려면 다음을 수행하세요.

> svn proplist
Properties on '.':
  svn:ignore

의 가치를 보려면 svn:ignore:

> svn propget svn:ignore
cache

이전에 설정한 속성을 삭제하려면:

svn propdel svn:ignore

언급해야 할 중요한 사항:

명령줄에서는 사용할 수 없습니다.

svn add *

명령줄이 확장되므로 무시된 파일도 추가됩니다. * 따라서 svn add 모든 파일이 추가되기를 원한다고 믿습니다.그러므로 이것을 대신 사용하십시오:

svn add --force .

이 작업을 수행하는 데 시간이 걸렸으므로 파일이 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 가져오기 그리고 svn 공동 파일, 우리가 보통 처음으로 하는 일.

모든 런타임 캐시, 첨부 파일 폴더는 버전 제어 대상이 됩니다.그러니까, 전에 svn ps svn:무시, 저장소에서 삭제해야 합니다.

위의 SVN 버전 1.5에서는 다음을 사용할 수 있습니다. svn del --keep-local your_folder그러나 이전 버전의 경우 내 솔루션은 다음과 같습니다.

  1. svn 내보내기 폴더의 깨끗한 복사본(포함되지 않음) .svn 숨겨진 폴더)
  2. svn 델 로컬 및 저장소,
  3. svn ci
  4. 폴더를 다시 복사하세요.
  5. 하다 svn 세인트 폴더가 '?'로 플래그가 지정되어 있는지 확인하세요.
  6. 이제 우리는 할 수 있다 svn ps 솔루션에 따르면

무시할 폴더가 두 개 이상 필요한 경우

  • 한 디렉토리에는 다음과 같이 설정해야 하는 두 개의 폴더가 있습니다. svn:ignore
  • 하나를 설정하면 다른 하나는 제거됩니다.
  • 그렇다면 우리에게 필요한 것이 무엇인지 궁금합니다. svn pe

svn pe 텍스트 파일을 편집해야 하며 필요한 경우 다음을 사용하여 텍스트 편집기를 설정하는 데 이 명령을 사용할 수 있습니다. vi:

export SVN_EDITOR=vi
  1. "o"를 사용하면 새 줄을 열 수 있습니다
  2. 무시하려는 모든 폴더 이름을 입력하십시오.
  3. 편집 모드에서 벗어나려면 'esc' 키를 누르세요.
  4. ":wq"를 입력한 후 누르세요. 입력하다 저장하고 종료하려면

파일은 다음과 같습니다.

runtime
cache
attachments
assets

먼저 제거하세요..

귀하의 디렉터리인 경우 foo 이미 버전 관리를 받고 있는 경우 먼저 다음을 사용하여 제거하세요.

svn rm --keep-local foo

...그런 다음 무시하세요.

svn propset svn:ignore foo .

...그리고 둘 이상의 디렉토리를 무시하려는 경우(예: build/ temp/ 그리고 *.tmp 파일), 두 단계로 수행할 수 있습니다(첫 번째 단계 무시 및 무시 속성 편집(여기서 다른 답변 참조). 또는 다음과 같이 작성할 수 있습니다.

svn propset svn:ignore "build
temp
*.tmp" .

명령줄에서.

특정 SVN 클라이언트를 사용하는 경우 거북이SVN, 커밋 시 항목을 마우스 오른쪽 버튼으로 클릭하고 "무시 목록에 추가"를 선택할 수 있는 옵션이 있습니다.

여러 항목을 무시하는 명령은 약간 까다로우며 백슬래시가 필요합니다.

svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .

이 명령은 이름이 지정된 모든 항목을 무시합니다. cache, tmp, null, 그리고 and_so_on 현재 디렉토리에 있습니다.

중첩된 디렉터리를 무시하는 데 문제가 있었습니다.무시하고 싶은 최상위 디렉토리는 'svn status'로 표시되지 않지만 모든 하위 디렉토리는 표시됩니다.이것은 아마도 다른 사람들에게는 자명할 것입니다. 그러나 저는 이것을 공유하고 싶다고 생각했습니다:

예:

/트렁크

/트렁크/캐시

/트렁크/캐시/하위 디렉터리1

/트렁크/캐시/하위 디렉터리2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

"감사합니다" svn은 파일을 무시하는 끔찍하고 가짜이며 어려운 방법입니다.

그래서 대본을 썼어요 svn-모두 무시:

#!/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-무시.내 생각에 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'를 무시하라고 지시합니다.

여러 무시를 위한 Bash oneliner:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"

프로젝트 디렉터리 이름이 /Project이고 캐시 디렉터리 이름이 /Project/Cache인 경우 /Project에서 Subversion 속성을 설정해야 합니다.속성 이름은 "svn:ignore"이어야 하고 속성 값은 "Cache"여야 합니다.

인용하다 이것 속성에 대한 자세한 내용은 Subversion 매뉴얼의 페이지를 참조하세요.

Jason의 대답이 그 효과를 발휘할 것입니다.그러나 SVN을 설정하는 대신 : 무시하십시오. 캐시 디렉토리에는 "캐시"를 부모의 캐시 디렉토리가 항상 존재하지 않는 경우 디렉토리의 svn:ignore 속성.나는 여러 개의 "일회용" 폴더에 대해 이 작업을 수행합니다.

SVN이 무시할 디렉토리를 유지하려면:

  1. 이렇게 하면 저장소에서 파일이 삭제되지만 디렉터리는 SVN 제어하에 유지됩니다.

svn delete --keep-local 경로/directory_to_keep/*

  1. 그런 다음 디렉터리(및 모든 콘텐츠)를 무시하도록 설정합니다.

svn propset svn:"*" 경로/directory_to_keep 무시

TortoiseSVN과 같은 SVN용 프런트엔드나 일종의 IDE 통합을 사용하는 경우 커밋/추가 작업과 동일한 메뉴에 무시 옵션도 있어야 합니다.

svn:ignore 설정 재산.대부분의 UI svn 도구에는 이 작업을 수행하는 방법과 링크의 명령줄 설명이 있습니다.

버전을 사용하고 있으므로 실제로는 정말 쉽습니다.

  • 체크아웃한 사본 찾아보기
  • 무시할 디렉터리를 클릭하세요.
  • 오른쪽의 "무시" 상자에서 편집을 클릭하세요.
  • 모든 파일을 무시하려면 *.*를 입력하세요(또는 jpg 파일만 무시하려면 *.jpg 등).

후행 슬래시도 살펴보세요.나는 그것을 포함하여 그것을 발견했다 images/* 내 무시 설정 파일에서 무시하지 않았습니다. ./images/.내가 달렸을 때 svn status -u 아직도 보여줬어 ? images.그래서 방금 무시 설정을 다음으로 변경했습니다. images, 슬래시가 없습니다.상태 확인을 실행하여 문제가 해결되었습니다.

다음으로 해결됨 다음 방법으로:

먼저 폴더를 프로젝트에 동기화합니다.

팀 -> 동기화

다음 보기인 팀 보기에서는 SVN 서버에 커밋할 수 있는 모든 리소스를 볼 수 있습니다.

따라서 무시하려는 리소스의 리소스 폴더를 선택한 다음 다음을 사용하여 무시할 수 있습니다.

팀 -> 추가 svn:ignore.

그런 다음 확인 창에서 첫 번째 옵션을 선택하십시오."이름으로 무시".

예를 들어 대상 폴더와 해당 .class 리소스를 무시하려면 동기화를 수행하고 동기화 보기에서 대상 폴더를 선택합니다.그런 다음 선택하겠습니다.

팀->추가

에게 svn:ignore 그런 다음 확인 창에서 첫 번째 옵션을 확인하겠습니다.

이 간단한 활동을 수행하는 방법을 찾는 데 많은 시간을 허비한 후에 적절한 설명을 찾는 것이 어렵지 않아 게시하기로 결정했습니다.

먼저 샘플 구조를 보자

$ SVN ST?프로젝트/트렁크/대상?프로젝트/트렁크/myfile.x

1 - 먼저 편집기를 구성, mycase vim 내보내기 svn_editor = vim.

2 – "svn propedit svn:ignore project/trunk/"는 새 파일을 열고 파일과 하위 디렉터리를 추가할 수 있습니다. 이 경우 "target"을 입력하고 파일을 저장하고 닫으면 작동합니다.

$ SVN ST?프로젝트/트렁크/myfile.x

감사해요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top