2012-08-24 3 views
3

svn repo를 git repo로 변환 중입니다. 이미지 및 기타 파일과 함께 수 년 동안 체크인 한 바이너리 파일 수가 많습니다. 공간을 차지하는 git repo에있는이 파일들을 정말로 원하지 마십시오.git svn ignore path를 사용하여 파일을 무시합니다.

나는 repo를 변환하기 위해 git-svn을 가지고 놀았고 -ignorepaths 속성을 사용했지만 각 패턴에 대해 ignorepaths를 지정하지 않고 무시 경로에 목록을 공급할 수 있기를 원합니다. 디렉토리 내가 제외하고 싶은 경우, 내가 svnignore/gitignore 파일을 사용하는 것이 더 좋을 것 입니다이 정크를 가져갈 것입니다 변환하는 동안.

이 작업을 수행 할 수있는 방법이 있습니까? 아니면 글 머리 기호를 비트하고 각 패턴/경로를 개별적으로 지정해야합니까?

편집 : 당신이 이눔하는 데 사용하는 경우 나는 조금이 복잡

+0

* 작동 된 .dll하지 않습니다 앞에는? –

+0

아마도 그럴 것입니다.하지만 실제로 이것을 예제로 사용했기 때문에 확장/경로의 전체 힙을 쉽게 갖고 싶습니다. –

+0

나는 쉽게 생각할 수있는 방법이 없다고 생각합니다. 무시하고 싶은 것을 나열해야합니다. -하지만 창조적 인 정규 표현식 또는 그냥 모두 그들을 나열합니다 –

답변

2

서브 버전을 요구 있었는지 업데이트 질문에 관해서는 더 명확합니다. svn:ignore은 폴더 단위로 작동하는 속성입니다. 특정 폴더에서 특정 파일이나 바로 위의 하위 폴더 만 무시할 수 있습니다. .gitignore에,

svn propset svn:ignore -F .gitignore DIRECTORY 

그러나 위에서 언급 한 이유로 정말 실용적인 부분을 : 당신은이 디렉터리의 속성을 무시하고 당신은 또한 그것을에 .gitignore 파일을 전달할 수 설정 명령에 파일을 전달할 수 있습니다 */build처럼 Subversion에는 영향을 미치지 않습니다. 당신이 할 수있는

있는 유일한 방법은 당신이 --depth immediates를 전달하는 경우가 DIRECTORY 모든 즉각적인 하위 폴더에 대한 속성을 설정합니다, 예를 들어 svn propset에 대한 --depth 인수의 활용이다. 깊이를 지정하는 방법이나 무의미한 방법도 있습니다. TAB 완성이 거기에서 작동하거나 도움을받는다고 생각합니다.

여전히 큰 단점이 있습니다. 무시할 파일이 들어있는 폴더를 추가 할 때마다 svn propset 명령을 다시 실행해야합니다.

+0

불행히도 내가이게 내가 찾고있는 것이라고 생각하지 않는다, 나는 svn repo를 git repo로 변환하고 길을 따라 추가 된 crud 중 일부를 꺼내고 싶다. 마치 결코 일어나지 않았던 것처럼 –

0

svn : ignore를 .gitignore로 또는 그 반대로 변환하려면이 변환을 자동으로 수행하는 git-svn 대신 SubGit을 사용할 수 있습니다.

$ subgit install path/to/svn/repository 
+0

그게 아니고 내가 뭘 찾고있어, 내가 repo가 ​​만들어지는 동안 파일을 걸러 내기 위해서 git-ignore를 사용하여 git 저장소를 만들고 싶다 –

+0

gitignore는 그와 아무런 관련이 없다. 비트. 파일을 필터링하려면 "svnadmin dump"+ svndumpptilter/svndumptool + "svnadmin load"를 사용하거나 me --- svnkitfilter 유틸리티 (원하는 필터를 적용하여 패치 할 수 있음)를 사용하십시오. SVN 측에서 필터를 적용하려면 " git filter-branch "를 git 쪽에서 필터링하거나 git-svn의 --ignore-paths 옵션 –

+0

예 개별적으로 또는 각각을 나열하는 대신 ignore-path에 대한 옵션 목록을 git-svn에 제공하는 방법을 찾고있었습니다 그건 기본적으로 같은 것을 이루겠습니다. –

0

내가 git svn가에 체크 된 하지에 관계없이 여부 .gitignore.gitignore의 내용, 서브 버전에서 가져 오는 모든 통지를 취한다는 것을 확인할 수 있습니다 간단한 구성의 변환 명령처럼 보인다 repo.

귀하의 질문에 명시된 바와 같이 해결책은 git svn clone과 함께 --ignore-paths을 사용하는 것입니다. 이 작업을 완료하면 .git/config 파일에 추가되므로 콘텐츠를 가져올 때마다 지정하지 않아도됩니다. 당신이 함께 또는 용어 수 있기 때문에이 보일 수로 --ignore-paths와 함께 사용하기위한 펄 정규 표현식으로 기존 .gitignore 파일을 변환

복잡하지 않다.예를 들어

:

/[Dd]ebug/|^rootfile.txt$|\.bak$ 

제외 debug 폴더의 아무 곳이나 경로의 REPO의 루트에있는 특정 파일 rootfile.txt, 모든 *.bak 파일.

팁 :

  • 명명 된 폴더의 내용이 아니라 폴더 자체
  • ^ 제외됩니다 슬래시로 끝나는 표현은 루트 돈 '에서 저장소 및 경로의 루트를 일치 슬래시로 시작합니다.
  • lookaround expressions in the regexes을 사용할 수 있습니다 (예 : 모든 Bin 폴더 제외 하지 않는 한 그들은 어떤 특정 디렉토리
관련 문제