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
모두HKLM
와HKCU
. - 리눅스 / 유닉스-
~/.subversion/config
- Windows (파일 기반)-
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/ignoreThis
”ignoreThis.txt
“가.
리포지토리 루트 에 적용 되더라도 파일 은 무시되지 않습니다 . -
따라서 무시 목록을 재귀 적으로 적용하려면을 사용해야합니다
svn propset svn:ignore <filePattern> . --recursive
.- 모든 서브 디렉토리에 특성 사본이 작성됩니다.
<filePattern>
하위 디렉토리에서 값이 다른 경우 하위 값이 상위를 완전히 대체하므로 “추가”효과가 없습니다.- 따라서
<filePattern>
root.
에서를 변경--recursive
하면 하위 및 하위 디렉토리에서 덮어 쓰도록 변경해야합니다 .
-
명령 줄 구문은 직관적이지 않습니다.
svn ignore pathToFileToIgnore.txt
SVN의 무시 기능이 작동하는 방식이 아닌 것과 같은 것을 입력하여 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”로 시작하는 행만 표시 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" .
답변
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에 사용할 수 있습니다
답변
propedit를 사용할 때는 파일이 무시 목록에서 제외되도록 후행 공백이 없어야합니다.
Linux에서 tab-autocomplete를 사용하여 시작할 파일을 만들면 자동으로 삽입됩니다.
svn propset svn:ignore 'file1
file2' .