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

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

또한 버전 제어가 아닌 파일을 어떻게 찾을 수 있습니까?



답변

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

두 가지 질문이 있습니다.

파일을 무시 된 것으로 표시 :

“무시 된 파일”이란 파일이 “버전 화되지 않은”경우에도 목록에 표시되지 않음을 의미합니다. SVN 클라이언트는 파일 시스템에 파일이 전혀 존재하지 않는 것으로 간주합니다.

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

Subversion은 버전 1.8 (2013 년 6 월) 이상에서 파일 패턴을 지정하는 3 가지 방법을 지원합니다. 다음은 예제가 포함 된 요약입니다.

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

  • 이 설정 은 클라이언트 전용 설정이므로 global-ignores다른 사용자가 목록을 공유하지 않으며 컴퓨터에 체크 아웃 한 모든 리포지토리에 적용됩니다.
  • 이 설정은 런타임 구성 영역 파일에서 정의됩니다.
    • Windows (파일 기반)- C:\Users\{you}\AppData\Roaming\Subversion\config
    • 윈도우 (레지스트리 기반) – Software\Tigris.org\Subversion\Config\Miscellany\global-ignores모두 HKLMHKCU.
    • 리눅스 / 유닉스- ~/.subversion/config

2- svn:ignore특성은 파일이 아닌 디렉토리에 설정됩니다.

  • 이것은 repo 내에 저장되므로 다른 사용자는 동일한 무시 파일을 갖게됩니다. .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/ignoreThisignoreThis.txt“가 .리포지토리 루트 에 적용 되더라도 파일 은 무시되지 않습니다 .

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

    • 모든 서브 디렉토리에 특성 사본이 작성됩니다.
    • <filePattern>하위 디렉토리에서 값이 다른 경우 하위 값이 상위를 완전히 대체하므로 “추가”효과가 없습니다.
    • 따라서 <filePattern>root .에서를 변경 --recursive하면 하위 및 하위 디렉토리에서 덮어 쓰도록 변경해야합니다 .
  • 명령 줄 구문은 직관적이지 않습니다.

    • svn ignore pathToFileToIgnore.txtSVN의 무시 기능이 작동하는 방식이 아닌 것과 같은 것을 입력하여 SVN의 파일을 무시한다고 가정했습니다 .

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

  • 이것은 svn:ignoreSVN 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”로 시작하는 행만 표시 I하도록 출력을 파이프합니다 grep.

명령은 다음과 같습니다.

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


답변

접근 방식과 같은 .gitignore

.gitignore와 같은 파일이나 디렉토리는 무시해도됩니다. 무시하려는 디렉토리 / 파일 목록의 텍스트 파일을 만들고 아래 코드를 실행하십시오.

svn propset svn:ignore -F ignorelist.txt .

또는 텍스트 파일을 사용하지 않으려면 다음과 같이하십시오.

svn propset svn:ignore "first
 second
 third" .

출처 : Karsten ‘s Blog-명령 줄에서 여러 파일에 대해 svn : ignore 설정


답변

TortoiseSVN 을 사용 하는 경우 파일을 마우스 오른쪽 단추로 클릭 한 다음 TortoiseSVN / 추가를 선택 하여 무시 목록 을 선택 하십시오 . 파일 / 와일드 카드가 svn:ignore속성에 추가 됩니다.

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

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

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


답변

아무도 언급하지 않은 것처럼 …

svn propedit svn:ignore .

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


답변

.svnignore Example for 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


답변

propedit를 사용할 때는 파일이 무시 목록에서 제외되도록 후행 공백이 없어야합니다.

Linux에서 tab-autocomplete를 사용하여 시작할 파일을 만들면 자동으로 삽입됩니다.

svn propset svn:ignore 'file1
file2' .