문제

Subversion에서 파일을 어떻게 무시합니까?

또한 버전 관리 대상이 아닌 파일을 어떻게 찾나요?

도움이 되었습니까?

해결책

(이 답변은 SVN 1.8 및 1.9의 동작과 일치하도록 업데이트되었습니다)

질문이 2개 있습니다:

파일을 무시로 표시:

"무시된 파일"이란 파일이 "버전이 지정되지 않은" 상태에서도 목록에 표시되지 않음을 의미합니다.SVN 클라이언트는 파일 시스템에 파일이 전혀 존재하지 않는 것처럼 가장합니다.

무시된 파일은 "파일 패턴"으로 지정됩니다.파일 패턴의 구문과 형식은 SVN의 온라인 설명서에 설명되어 있습니다. http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Subversion의 파일 패턴".

Subversion은 버전 1.8(2013년 6월) 이상부터 파일 패턴을 지정하는 세 가지 방법을 지원합니다.다음은 예시와 함께 요약된 내용입니다.

1 - 런타임 구성 영역 - global-ignores 옵션:

  • 이것은 클라이언트 측에서만 설정, 그래서 당신의 global-ignores 목록은 다른 사용자와 공유되지 않으며 컴퓨터에서 체크아웃하는 모든 저장소에 적용됩니다.
  • 이 설정은 런타임 구성 영역 파일에 정의되어 있습니다.
    • Windows(파일 기반) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows(레지스트리 기반) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores 둘다 HKLM 그리고 HKCU.
    • 리눅스/유닉스 - ~/.subversion/config

2 - svn:ignore 파일이 아닌 디렉터리에 설정되는 속성:

  • 이는 저장소 내에 저장되므로 다른 사용자도 동일한 무시 파일을 갖게 됩니다.방법과 유사 .gitignore 공장.
  • svn:ignore 디렉토리에 적용되며 비재귀적이거나 상속됩니다.어떤 파일이나 즉각적인 파일 패턴과 일치하는 상위 디렉터리의 하위 디렉터리는 제외됩니다.
  • SVN 1.8에는 "상속된 속성"이라는 개념이 추가되었지만 svn:ignore 속성 자체는 직계 하위 디렉터리가 아닌 경우 무시됩니다.

    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    

    (그래서 파일은 ./subdirectory/ignoreThis "라고 하더라도 무시되지 않습니다.ignoreThis.txt"가 적용되었습니다. . 레포 루트).

  • 따라서 무시 목록을 재귀적으로 적용하려면 다음을 사용해야 합니다. svn propset svn:ignore <filePattern> . --recursive.

    • 그러면 모든 하위 디렉터리에 속성 복사본이 생성됩니다.
    • 만약 <filePattern> 값이 하위 디렉토리에서 다르면 하위 값이 상위 값을 완전히 무시하므로 "추가" 효과가 없습니다.
    • 따라서 <filePattern> 뿌리에 ., 그런 다음 다음으로 변경해야 합니다. --recursive 하위 및 하위 디렉토리에 덮어쓰려면
  • 명령줄 구문은 직관적이지 않습니다.

    • 나는 다음과 같이 입력하여 SVN의 파일을 무시할 것이라고 가정하고 시작했습니다. svn ignore pathToFileToIgnore.txt 그러나 이것은 SVN의 무시 기능이 작동하는 방식이 아닙니다.

3- svn:global-ignores 재산.SVN 1.8 필요(2013년 6월):

  • 이는 다음과 유사합니다. svn:ignore, 단, SVN 1.8의 "상속 속성" 기능을 사용한다는 점은 제외됩니다.
  • 비교 svn:ignore, 파일 패턴은 모든 하위 디렉터리(직계 하위 디렉터리뿐만 아니라)에 자동으로 적용됩니다.
    • 이는 설정할 필요가 없음을 의미합니다. svn:global-ignores 와 더불어 --recursive 플래그는 상속된 대로 무시 파일 패턴이 상속될 때 자동으로 적용됩니다.
  • 이전 예와 동일한 명령 세트를 실행하지만 다음을 사용합니다. svn:global-ignores 대신에:

    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

TortoiseSVN 사용자의 경우:

TortoiseSVN의 용어(Windows 탐색기 메뉴 시스템에서 사용됨)가 처음에는 나에게 오해의 소지가 있었기 때문에 이러한 전체 배열은 나에게 혼란스러웠습니다. 나는 무시 메뉴의 "재귀적으로 추가", "* 추가" 및 "추가"의 의미가 무엇인지 확신할 수 없었습니다. 옵션.이 게시물을 통해 무시 기능이 SVN 속성 기능과 어떻게 연결되는지 설명할 수 있기를 바랍니다.즉, 무시되는 파일을 설정하려면 명령줄을 사용하여 GUI를 사용하는 대신 작동 방식을 파악하고, 명령줄에 익숙해진 후에는 GUI를 사용하여 속성을 조작하는 것이 좋습니다.

무시되는 파일 나열:

명령 svn status 무시된 파일(즉, RGA와 일치하는 파일)을 숨깁니다. global-ignores 패턴 또는 직계 상위 디렉토리와 일치 svn:ignore 상위 디렉토리의 패턴을 지정하거나 일치시킵니다. svn:global-ignores 무늬.

사용 --no-ignore 나열된 파일을 볼 수 있는 옵션입니다.무시된 파일의 상태는 다음과 같습니다. I, 그런 다음 출력을 다음으로 파이프합니다. grep "I"로 시작하는 줄만 표시합니다.

명령은 다음과 같습니다:

svn status --no-ignore | grep "^I"

예를 들어:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

짜잔!

다른 팁

버전 제어 파일 아래에 없는 목록을 생성하려면 다음 명령을 사용하십시오.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

그런 다음 파일을 편집하여 실제로 무시하고 싶은 파일만 남겨두세요.그런 다음 이것을 사용하여 파일에 나열된 파일을 무시하십시오.

svn propset svn:ignore -F ignoring.txt .

줄 끝의 점에 주목하세요.이는 속성이 현재 디렉터리에 설정되고 있음을 SVN에 알려줍니다.

파일을 삭제합니다.

rm ignoring.txt

마지막으로 커밋하고,

svn ci --message "ignoring some files"

그런 다음 다음을 통해 어떤 파일이 무시되는지 확인할 수 있습니다.

svn proplist -v

당신이 사용하는 경우 거북이SVN, 파일을 마우스 오른쪽 버튼으로 클릭한 다음 TortoiseSVN/무시 목록에 추가.이렇게 하면 파일/와일드카드가 svn:ignore 재산.

svn:ignore 파일을 체크인할 때 확인되며 일치하는 파일은 무시됩니다.Visual Studio .NET 프로젝트에 대해 다음과 같은 무시 목록이 있습니다.

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

이 목록은 상황에 맞는 메뉴에서 찾을 수 있습니다. TortoiseSVN / 속성.

다음과 같은 파일이나 디렉토리를 무시할 수 있습니다. .gitignore.무시하려는 디렉터리/파일 목록의 텍스트 파일을 만들고 아래 코드를 실행하세요.

svn propset svn:ignore -F ignorelist.txt .

또는 텍스트 파일을 사용하지 않으려면 다음과 같이 할 수 있습니다.

svn propset svn:ignore "first
 second
 third" .

원천:Karsten의 블로그 - 명령줄에서 여러 파일에 대해 svn:ignore 설정

기사를 찾았어요 .svnignore Java의 예.

예:Ruby on Rails의 경우 .svnignore,

/log

/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif

*.*~

그리고 나서:

svn propset svn:ignore -F .svnignore .

.gitignore의 예..svnignore에 사용할 수 있습니다.

https://github.com/github/gitignore

아무도 언급하지 않은 것 같으니...

svn propedit svn:ignore .

그런 다음 파일 내용을 편집하여 무시할 패턴을 지정하고 편집기를 종료하면 모든 작업이 완료됩니다.

propedit를 사용할 때 뒤에 공백이 없어야 파일이 무시 목록에서 제외됩니다.

Linux에서 tab-autocomplete를 사용하여 시작할 파일을 생성한 경우 자동으로 삽입됩니다.

svn propset svn:ignore 'file1
file2' .

또 다른 해결책은 다음과 같습니다.

svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt

아니면 한 줄씩

svn st | awk '/^?/{print $2}' > svnignore.txt 
svn propget svn:ignore >> svnignore.txt 
svn propset svn:ignore -F svnignore.txt . 
rm svnignore.txt

기능:

  1. svn에서 상태 파일을 가져옵니다.
  2. 다음과 같은 모든 파일을 저장합니다. ? "svnignore.txt" 파일에
  3. 이미 무시된 파일을 가져와 "svnignore.txt" 파일에 추가합니다.
  4. "svnignore.txt"의 파일을 무시하도록 svn에 지시합니다.
  5. 파일을 제거합니다.

또한 Tortoise SVN을 사용하는 경우 다음을 수행할 수 있습니다.

  1. 상황에 맞는 메뉴에서 "TortoiseSVN"을 선택한 다음 "속성"을 선택합니다.
  2. 나타나는 창에서 "새로 만들기"를 클릭한 다음 "고급"을 클릭하세요.
  3. "속성 이름" 반대편에 나타나는 창에서 "svn:ignore"를 선택하거나 입력하고, "속성 값" 반대편에 원하는 파일 이름이나 폴더 이름 또는 파일 마스크(제 경우에는 "*/target")를 입력하고 "적용"을 클릭합니다. 속성을 재귀적으로"
  4. 좋아요.좋아요.
  5. 저지르다

더 읽기 쉬운 버전 bkbilly의 답변:

svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt

기능:

  1. svn에서 상태 파일을 가져옵니다.
  2. 다음과 같은 모든 파일을 저장합니다. ? "svnignore.txt" 파일에
  3. 이미 무시된 파일을 가져와 "svnignore.txt" 파일에 추가합니다.
  4. "svnignore.txt"의 파일을 무시하도록 svn에 지시합니다.
  5. 파일을 제거합니다.
  1. CD ~/.subversion
  2. 구성 열기
  3. 'global-ignores'와 같은 줄을 찾으세요.
  4. 다음과 같이 파일 유형 무시를 설정하십시오.전역 무시 = *.o *.lo *.la *.al .libs *.so .so.[0-9] *.pyc *.pyo 88 *.rej ~ ## .#* .*.swp .DS_Store node_modules 출력

SVN 구성 파일에서 전역 무시 패턴을 설정할 수도 있습니다.

svn status SVN에 없는 파일과 변경된 내용을 알려줍니다.

를보세요 SVN 속성 무시 속성의 경우.

SVN에 관한 모든 것에는 레드북 독서가 필요합니다.

Subversion에 디렉터리를 추가하고 디렉터리 내용을 무시합니다.

svn propset svn:ignore '\*.*' .

또는

svn propset svn:ignore '*' .

SVN ignore TortoiseSVN에서는 관리하기 쉽습니다.TortoiseSVN을 열고 파일 메뉴를 마우스 오른쪽 버튼으로 클릭한 다음 무시 목록에 추가를 선택합니다.

그러면 파일이 다음 위치에 추가됩니다. svn:ignore 재산.파일을 체크인할 때 일치하는 파일은 다음과 같습니다. svn:ignore 이는 무시되고 커밋되지 않습니다.

Visual Studio 프로젝트에서는 무시할 다음 파일을 추가했습니다.

bin obj
*.exe
*.dll
*.pdb
*.suo

SVN에서 소스코드를 관리하고 있습니다. 비교트랩 이 방법을 성공적으로 사용하면

명령을 사용하십시오 svn 상태 파일 상태를 표시하기 위해 작업 복사본에서 아직 버전 제어가 적용되지 않은(그리고 무시되지 않은) 파일 옆에는 물음표가 표시됩니다.

svn:ignore 속성을 편집해야 하는 파일 무시에 관해서는 svnbook의 버전 없는 항목 무시 장을 읽어보세요. http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html.이 책에서는 svn status 사용에 대해서도 자세히 설명합니다.

  1. JetBrains 제품(예:파이참)
  2. 그런 다음 상단 도구 모음에서 '커밋' 버튼을 클릭하거나 단축키 'ctrl + k'를 사용하세요.스크린샷_툴바
  3. 커밋 인터페이스에서 다음과 같이 원하지 않는 파일을 다른 변경 목록으로 이동하세요.스크린샷_커밋_변경
  4. 다음번에는 기본 변경 목록만 커밋할 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top