Programing

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

lottogame 2020. 3. 10. 08:20
반응형

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

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


repo-browser로 이동하여 파일을 마우스 오른쪽 버튼으로 클릭하고 '다른 이름으로 저장'을 사용하십시오. TortoiseSVN을 사용하고 있습니다.


cd C:\path\dir
svn checkout https://server/path/to/trunk/dir/dir/parent_dir--depth empty
cd C:\path\dir\parent_dir
svn update filename.log

(filename.log 편집)

svn commit -m "this is a comment."

Steve Jessop의 답변 이 저에게 효과적이지 않았습니다. SVN에 대한 도움말 파일을 읽었으며 이미지가있는 경우 Photoshop을 수행하지 않는 한 다시 체크인하지 않으려 는 경우 내보내기 가 버전 화 되지 않았 으므로 체크 아웃보다 명령이 더 좋습니다 (그러나 사소합니다).

그리고 --depth ARG는 안 비어 있지만 파일은 즉각적인 디렉토리에있는 파일을 얻을 수 있습니다. 따라서 필드뿐만 아니라 모든 필드를 얻을 수 있지만 empty저장소에서 아무것도 반환 하지 않습니다 .

 svn co --depth files <source> <local dest>

또는

svn export --depth files <source> <local dest>

다른 답변에 관해서는, cat을 사용하면 모든 것의 이미지가 아닌 텍스트에만 적합한 내용을 읽을 수 있습니다.


그냥 찾아서 단일 파일을 내보내고 싶습니다. HTTP 액세스 권한이 있으면 웹 브라우저를 사용하여 파일을 찾아서 가져 오십시오.

편집 후 다시 가져와야하는 경우 약간 지루할 수 있지만 svn import기능 이있을 것이라고 확신 합니다 ...


수정 정보가없는 파일을 원한다면

svn export <URL>

Subversion 1.5에서는 하위 디렉토리 (다양한 --depth 플래그)를 체크 아웃하지 않고 디렉토리의 파일을 체크 아웃 (전체) 할 수 있습니다. 당신이 요구 한 것은 아니지만 "모두보다 작다"라는 형식입니다.


다음과 같이하십시오 :

mkdir <your directory>/repos/test

svn cat http://svn.red-bean.com/repos/test/readme.txt > <your directory>/repos/test/readme.txt

기본적으로 아이디어는 SVN에서 파일을 가져 오려는 디렉토리를 작성하는 것입니다. svn cat명령을 사용하여 출력을 동일한 이름의 파일로 경로 재 지정하십시오. 기본적으로 고양이는 stdio에 정보를 덤프합니다.


파일을 내보내고 나중에 업데이트 할 필요가 없으면 SVN 명령을 사용하지 않고도 파일을 업데이트 할 수 있습니다.

TortoiseSVN 리포지토리 브라우저를 사용 하여 파일을 선택하고 마우스 오른쪽 단추를 클릭 한 다음 " 클립 보드에 URL 복사 "를 선택하십시오 . 해당 URL을 브라우저에 붙여 넣고 로그인 후 파일 다운로드 메시지가 표시됩니다.

이 방법으로 원하는 개정판을 선택하고 이전 버전의 파일을 다운로드 할 수도 있습니다.

이것은 SVN 서버에 웹 인터페이스가있는 경우 유효합니다.


스파 스 체크 아웃 기술을 사용하면 이미 체크 아웃되었거나 존재하는 특정 파일을 간단한 트릭으로 확인할 수 있습니다.

Windows 탐색기에서 '이 항목 만'옵션을 사용하여 저장소의 최상위 레벨을 체크 아웃 한 후에는 먼저 업데이트해야하는 파일을 마우스 오른쪽 단추로 클릭해야합니다. 상황에 맞는 메뉴에서 Repo Browser를 선택하십시오. 저장소 브라우저에서 해당 파일을 다시 찾아 마우스 오른쪽 단추로 클릭하십시오. 이제 상황에 맞는 메뉴에 "수정할 항목 업데이트"가 표시됩니다.

문서화되지 않은 기능인지 또는 단순히 버그인지 확실하지 않습니다. 마침내이 트릭을 찾기 위해 연장 된 근무 시간이 걸렸습니다. 내가 사용하고 TortoiseSVN을 1.6.2.


작업 복사본의 일부가 아닌 디렉토리에 단일 파일을 체크 아웃하고 싶었습니다.

다음 URL에서 파일을 가져 오십시오. http : //subversion.repository.server/repository/module/directory/myfile

svn co  http://subversion.repository.server/repository/module/directory/myfile /**directoryb**

그래서 나는 목표 디렉토리가 들어있는 주어진 디렉토리를 확인했다. 나는 더미 디렉토리 (예 :로 끝나는 URL 등)에 도착했다 /etc.

그런 다음 필요하지 않은 대상 디렉토리의 모든 파일에서 .svn / entries 파일을 비우고 원하는 파일 만 남겨 두었습니다. .svn / entries 파일에는 속성이있는 각 파일에 대한 레코드가 있으므로 가져오고 저장하려는 파일에 관한 레코드 만 남겨 두십시오.

이제 ''.svn ''을 새로운 "작업 카피"디렉토리에 복사하면됩니다. 그런 다음 다음을 수행하면됩니다.

cp .svn /directory
cd /directory
svn update myfile

이제 디렉토리 디렉토리 는 버전 제어하에 있습니다. ``임시 작업 복사본 ''인 디렉토리 directoryb 를 제거하는 것을 잊지 마십시오 .


이 문제는 다음과 같습니다.

http://subversion.tigris.org/issues/show_bug.cgi?id=823

svn에서 단일 파일을 체크 아웃하고, 변경하고, 변경 사항을 다시 저장소에 커밋 할 수있는 스크립트가 첨부되어 있지만 "svn up"을 실행하여 디렉토리의 나머지를 체크 아웃 할 수는 없습니다. svn-1.3, 1.4 및 1.6으로 테스트되었습니다.


다른 답변 중 어느 것도 나를 위해 일하지 않았 으므로이 해킹을 사용하여 수행했습니다.

$ cd /yourfolder
svn co https://path-to-folder-which-has-your-files/ --depth files

원격 경로의 파일 만있는 새 로컬 폴더가 만들어집니다. 그런 다음 여기에 원하는 파일에 대한 심볼릭 링크를 수행 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/122107/checkout-one-file-from-subversion

반응형