개발관련/other

Subversion에서 파일을 무시하는 방법

Rateye 2021. 10. 5. 10:46
728x90
반응형
질문 : Subversion에서 파일을 어떻게 무시합니까?

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

또한 버전 관리가되지 않는 파일을 어떻게 찾습니까?

답변

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

두 가지 질문이 있습니다.

파일을 무시로 표시:

"무시 된 파일"이란 파일이 "버전 없음"으로도 목록에 나타나지 않음을 의미합니다. SVN 클라이언트는 파일이 파일 시스템에 전혀 존재하지 않는 것처럼 가장합니다.

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

버전 1.8 (2013 년 6 월) 이후 Subversion은 파일 패턴을 지정하는 세 가지 방법을 지원합니다. 예를 들어 요약하면 다음과 같습니다.

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

  • 이것은 클라이언트 측 전용 설정이므로 global-ignores 목록은 다른 사용자와 공유되지 않으며 컴퓨터에서 체크 아웃 한 모든 저장소에 적용됩니다.
  • 이 설정은 런타임 구성 영역 파일에 정의됩니다.
    • Windows (파일 기반) C:\Users\{you}\AppData\Roaming\Subversion\config
    • 윈도우 (레지스트리 기반) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores 모두 HKLMHKCU .
    • Linux / ~/.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 "가 . repo 루트에 적용 되더라도 무시되지 않습니다.)
  • 따라서 무시 목록을 재귀 적으로 적용하려면 svn propset svn:ignore <filePattern> . --recursive .
    • 이렇게하면 모든 하위 디렉터리에 속성 복사본이 만들어집니다.
    • <filePattern> 값이 하위 디렉토리에서 다른 경우 하위 값이 상위를 완전히 대체하므로 "가산"효과가 없습니다.
    • 따라서 루트 <filePattern> 을 변경하면 . , 그런 다음 --recursive 로 변경하여 하위 및 하위 디렉토리에 덮어 써야합니다.
  • 명령 줄 구문은 직관적이지 않습니다.
    • svn ignore pathToFileToIgnore.txt 와 같은 것을 입력하여 SVN에서 파일을 무시한다고 가정했지만 이것이 SVN의 무시 기능이 작동하는 방식이 아닙니다.

 

  •  

 

 

3- svn:global-ignores 속성입니다. SVN 1.8 필요(2013년 6월):

  • 이것은 SVN 1.8의 "상속 된 속성"기능을 사용한다는 점을 제외하면 svn:ignore 와 유사합니다.
  • svn:ignore 와 비교하면 파일 패턴은 모든 하위 디렉터리 (직계 하위 디렉터리뿐만 아니라)에 자동으로 적용됩니다.
    • 이는 상속 된 무시 파일 패턴이 상속 될 때 자동으로 적용되므로 --recursive svn:global-ignores ignores를 설정할 필요가 없음을 의미합니다.
  • 이전 예제와 동일한 명령 세트를 실행하지만 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 탐색기 메뉴 시스템에서 사용됨)가 처음에는 오해의 소지가 있었기 때문에이 모든 배열이 혼란 스러웠습니다. Ignore 메뉴의 "Add recursively", "Add *"및 "Add"의 중요성이 무엇인지 확신 할 수 없었습니다. 옵션. 이 게시물이 Ignore 기능이 SVN Properties 기능과 어떻게 연결되는지 설명하기를 바랍니다. 즉, 명령 줄을 사용하여 무시 된 파일을 설정하여 GUI를 사용하는 대신 작동 방식을 느끼고 명령 줄에 익숙해 진 후에 만 GUI를 사용하여 속성을 조작하는 것이 좋습니다.

무시되는 파일 나열:

svn status 명령은 무시 된 파일 (즉, RGA global-ignores ignores 패턴과 일치하는 파일 또는 직계 상위 디렉토리의 svn:ignore svn:global-ignores 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

 

출처 : https://stackoverflow.com/questions/86049/how-do-i-ignore-files-in-subversion
728x90
반응형