[svn] Subversion에서 하나의 파일 체크 아웃

“단일 파일을 체크 아웃 할 수 없습니다. 가장 정밀한 체크 아웃 레벨은 디렉토리 레벨입니다.”

Subversion을 사용할 때이 문제를 어떻게 해결합니까?

Subversion에는이 폴더가 있으며 모든 이미지를 보관합니다. 그중 하나의 파일 (이미지)을 확인하고 싶습니다. 이 폴더는 정말 커서 지금 필요하지 않은 다른 것들이 많이 있습니다.



답변

간단한 대답은 svn export파일을 체크 아웃하는 대신 파일입니다.

그러나 그것은 당신이 원하는 것이 아닐 수도 있습니다. 필요없는 GB의 정크를 다운로드하지 않고도 파일을 작업 한 후 다시 체크인 할 수 있습니다.

Subversion 1.5 이상을 사용하는 경우 스파 스 체크 아웃을 수행하십시오.

svn checkout <url_of_big_dir> <target> --depth empty
cd <target>
svn up <file_you_want>

SVN의 이전 버전의 경우 다음과 같은 이점이 있습니다.

  • 먼 옛날에 수정본을 사용하여 디렉토리를 확인하십시오. 필요한 정크가 적을 때 필요하지 않습니다.
  • 혼합 파일을 만들려면 원하는 파일을 업데이트하십시오. 이것은 체크 아웃 한 개정판에 파일이없는 경우에도 작동합니다.
  • 이익!

대안은 (예를 들어, 디렉토리가 작성된 개정판에서 너무 많은 정크 권한을 가진 경우) 저장소의 새로운 위치에 원하는 파일의 URL-> URL 사본을 수행하는 것입니다 (효과적으로 작동하는 분기입니다) 파일). 해당 디렉토리를 확인하고 수정하십시오.

대상의 작업 복사본없이 수정 된 복사본을 리포지토리에 완전히 다시 병합 할 수 있는지 확실하지 않습니다. 그렇다면 그렇게하십시오.

그렇지 않다면 불행히도 전체 디렉토리를 체크 아웃 한 다른 사람을 찾아서해야 할 수도 있습니다. 또는 수정을 할 때까지 나머지는 다운로드를 완료했을 것입니다 …


답변

svn export대신 사용해보십시오 svn checkout. 단일 파일에서 작동합니다.

제한 이유 checkout는 리포지토리, 개정판, 특성 등에 대한 메타 정보가 포함 된 작업 복사본 을 생성하기 때문입니다 . 해당 메타 데이터는 ‘.svn’이라는 하위 디렉토리에 저장됩니다. 그리고 단일 파일에는 하위 디렉토리가 없습니다.


답변

svn cat또는을 사용하십시오 svn export.

이를 위해 작업 디렉토리를 가져올 필요는 없지만 변경 사항을 커밋 할 수는 없습니다. 변경하고 커밋해야하는 경우 작업 디렉토리가 필요하지만 완전히 가져올 필요는 없습니다. 디렉토리가 여전히 / 거의 비어있는 개정판을 확인한 다음 ‘svn cat’을 사용하여 HEAD에서 파일을 추출하십시오.


답변

확인하지 않고 리포지토리에서 readme.txt를 보려면 다음을 수행하십시오.

$ svn cat
http://svn.red-bean.com/repos/test/readme.txt
이것은 README 파일입니다. 이것을 읽어야합니다.

팁 : 작업 사본이 오래되었거나 로컬로 수정 한 경우 작업 사본에 파일의 HEAD 개정을 보려면 svn cat은 경로를 제공 할 때 HEAD 개정을 자동으로 가져옵니다.

$ cat foo.c
이 파일은 로컬 작업 복사본에 있으며 변경 한 내용이 있습니다.

$ svn cat foo.c
저장소에서 최신 개정!

출처


답변

허용 된 답변에 대한 TortoiseSVN 동등한 솔루션 (SVN을 새로 채택함에 따라 회사의 내부 문서에 이것을 작성했습니다). 여기에서도 공유하는 것이 도움이 될 것이라고 생각했습니다.

단일 파일 체크 아웃 : Subversion은 단일 파일의 체크 아웃을 지원하지 않으며 디렉토리 구조의 체크 아웃 만 지원합니다. (참조 : http://subversion.tigris.org/faq.html#single-file-checkout ). 작업중인 사본으로 체크 아웃 된 모든 디렉토리에서 수정 / 파일 개정에 관한 메타 데이터는 내부 숨겨진 폴더 (.svn / _svn)로 저장되기 때문입니다. 단일 파일에 대해서는 현재 (v1.6) 지원되지 않습니다.

대체 권장 전략 : 단일 파일을 직접 체크 아웃 할 수 있도록 체크 아웃 디렉토리 부분을 한 번만 수행해야합니다. 상위 폴더 및 디렉토리 구조의 스파 스 체크 아웃을 수행하십시오. 스파 스 체크 아웃은 기본적으로 컨텐츠 파일을 채우지 않고 폴더 구조 만 체크 아웃합니다. 따라서 디렉토리 구조 만 체크 아웃하고 모든 파일을 체크 아웃 할 필요는 없습니다. 참조 : http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-checkout.html

1 단계 : 리포지토리 브라우저로 진행

2 단계 : 작업하려는 모든 파일이 포함 된 저장소 내의 상위 폴더를 마우스 오른쪽 단추로 클릭하고 체크 아웃을 선택하십시오.

3 단계 : 새 팝업 창에서 체크 아웃 디렉토리가 로컬 PC의 올바른 위치를 가리키는 지 확인하십시오. “체크 아웃 깊이”라고 표시된 드롭 다운 메뉴도 있습니다. 요구 사항에 따라 “이 항목 만”또는 “폴더를 포함한 즉각적인 하위 항목”을 선택하십시오. 중첩 된 폴더에서 작업하려면 다음에 바로 진행할 수 있으므로 두 번째 옵션을 사용하는 것이 좋습니다. 그렇지 않으면 중첩 된 폴더에 대해이 전체 절차를 다시 수행해야합니다.

4 단계 : 이제 상위 폴더를 로컬에서 선택한 폴더 내에서 사용할 수 있고 SVN으로 모니터링하고 있습니다 (숨겨진 폴더 “.svn”또는 “_svn”이 있어야합니다). 이제 리포지토리 내에서 단독으로 체크 아웃하려는 단일 파일을 마우스 오른쪽 단추로 클릭하고 “수정할 항목 업데이트”옵션을 선택하십시오. 이제 단일 파일을 작업하고 리포지토리에 다시 체크인 할 수 있습니다.

이게 도움이 되길 바란다.


답변

두 단계로 수행 할 수 있습니다.

  1. 메타 정보 만있는 빈 SVN 저장소를 체크 아웃하십시오.

    $ cd /tmp
    
    $ svn co --depth empty http://svn.your.company.ca/training/trunk/sql
    
  2. svn up지정된 파일을 업데이트하려면 실행하십시오 .

    $ svn up http://svn.your.company.ca/training/trunk/sql/showSID.sql
    

답변

파일이 다른 폴더의 체크 아웃에 포함되도록하여 실제로 필요한 경우의 업데이트를 처리 할 수 ​​있습니다.

SVN 1.6부터는 일종의 svn 링크 인 파일 externals를 만들 수 있습니다. 즉, 단일 파일을 포함하는 다른 버전의 폴더를 가질 수 있습니다. 이 폴더를 체크 아웃 할 때 파일 변경 사항을 커밋 할 수도 있습니다.

매우 간단합니다. 파일을 포함하려는 폴더를 체크 아웃하고 폴더에 속성을 추가하십시오.

svn propedit svn:externals .

다음과 같은 내용으로 :

file.txt /repos/path/to/file.txt

이 커밋 후에는 나중에 폴더를 체크 아웃 할 때 파일이 나타납니다. 기본적으로 작동하지만 위에 링크 된 설명서에 설명 된대로 몇 가지 제한 사항이 있습니다.