불안정한 연결에서 큰 프로젝트를 위해 git clone을 완료하는 방법은 무엇입니까? 얻을 수 있지만 git clone 프로세스가 이미

LibreOffice 코드베이스를 git clone하려고하지만 현재 약 300kbps의 인터넷 연결이 있으며 안정적입니다. 언제든지 연결을 다시 얻을 수 있지만 git clone 프로세스가 이미 작동을 멈추고 다시 실행할 수있는 방법이 없습니다. 더 고장 방지 git clone 다운로드를 할 수있는 방법이 있습니까?

내가 생각한 한 가지 옵션은 다른 사람의 .git 디렉토리를 다운로드하는 것이지만 다른 사람에게 지나치게 의존적이며 가장 좋은 해결책은 아닙니다.



답변

아직 준비가되지 않았다고 생각합니다. 거기에 오래된 GSoC 페이지 원하는 기능을 구현하는 계획이. 최선의 방법은 디렉토리로 다운로드하는 것이 좋습니다. 다른 프로토콜을 통해 다운로드를 다시 시작할 수 있다고 가정합니다.

재시작 가능한 클론

대규모 저장소 (예 : KDE, Open Office, Linux 커널)를 복제 할 때는 현재 중단 된 복제본을 다시 시작할 수있는 방법이 없습니다. 작은 파이프 끝에있는 사용자가 데이터를 다운로드하는 데 상당한 시간이 걸릴 수 있으며 복제가 중간에 중단 된 경우 사용자는 현재 처음부터 다시 시작하고 다시 시도해야합니다. 일부 사용자의 경우 큰 저장소를 복제하지 못할 수 있습니다.

목표 : git-clone이 기본 git : // 프로토콜을 통해 이전에 실패한 다운로드를 자동으로 다시 시작하도록 허용합니다. 언어 : C 멘토 : Shawn Pearce 제안 : gmane의 Shawn Pearce


최신 정보

git clone --depth=1다른 답변 중 하나의 얕은 복제 ( ) 제안과 함께 공급자와 통신 할 수있는 누군가가 당신을 위해 베어 리포지토리를 만들 수 있다면 도움이 될 수 있습니다. Bare 저장소를 전체 저장소 쉽게 변환 할 수 있습니다 . 또한 얕은 클론이 항상 도움이되지 않을 수 있으므로 해당 답변의 주석을 읽으십시오.


답변

생각 나는 두 가지 솔루션 (또는 차선책 )은 다음과 같습니다.

  • 사용 얕은 클론git clone --depth=1, 다음 심화 이 복제 사용 git fetch --depth=N증가와 함께, N을 . git fetch --unshallow(1.8.0.3부터)를 사용 하여 나머지 모든 개정판을 다운로드 할 수 있습니다 .

  • 누군가에게 태그가 지정된 릴리스까지 번들묶으 라고 요청 하십시오 ( git-bundle (1) 맨 페이지 참조). 번들 자체는 일반 파일이며, 이력서 지원이있는 HTTP / FTP, BitTorrent, rsync 등을 통해 어떤 방식 으로든 다운로드 할 수 있습니다. 번들에서 복제본을 생성하고 구성을 수정하며 공식 LibreOffice 저장소에서 추가 페치를 수행 할 수 있습니다. .


답변

이 방법은 타사 서버를 사용합니다.

먼저, 않습니다
git clone --bare, 다음
rsync -v -P -e ssh user@host:repo.git .
당신은 Windows에서 MSYS를 사용할 수 있습니다.


답변

캐리어 비둘기와 SD 카드 묶음의 대역폭을 과소 평가하지 마십시오 “는이 답변의 현대적인 형태 일 것입니다. 그것을 타르 고, 낡고 cp -a, 무엇이든간에, 그 빌어 먹을 것을 우송하십시오. 썸 드라이브를 SASE에 넣는 데 2 ​​분의 시간이 걸리는 사람을 찾으십시오. 그들이 당신을 위해 그것을 할 수도 있습니다.


답변

“다른 사람의 .git 디렉토리를 다운로드”할 수 있지만 다른 사람이 공식 저장소 자체가 될 수 있습니다. LibreOffice 리포지토리는 http를 통해 사용할 수 있습니다 (예 build.git: http://anongit.freedesktop.org/git/libreoffice/build.git/) ( 전체 목록 은 http://cgit.freedesktop.org/libreoffice/ 참조) . http URL은 각 저장소 페이지의 맨 아래에 있습니다.

이 http URL에서 볼 수있는 것은 .git디렉토리 (실제로는 .git디렉토리 에서 찾을 수있는 “베어”저장소)에 지나지 않습니다 . git://프로토콜 서버 ( git daemon) 와 동일한 디렉토리 입니다. 웹 다운로더 (예 wget -m -np:)를 사용하여 이러한 디렉토리의 사본을 작성하는 경우 사본에서 복제 할 수 있으며 http 저장소에서 직접 복제 한 것처럼 작동합니다.

따라서 할 수있는 일은 다음과 같습니다. 각 리포지토리마다 좋아하는 웹 다운로더 (복수 다운로드 재개와 관련된 모든 문제를 처리)와 함께 사본을 가져 와서 해당 사본에서 복제하십시오. 업데이트하려면 좋아하는 웹 다운로더를 다시 사용하여 복사본을 업데이트하고 해당 복사본에서 가져옵니다. 이제 복제본과 업데이트는 좋아하는 웹 다운로더와 마찬가지로 잘못된 연결에 내성을 갖습니다.


답변

git clone구성 요소 부분으로 분류하고 git checkout파일 다시 다운로드를 방지 하는 데 사용 합시다 .

git clone실행할 때 처음 몇 가지 작업은

git init
git remote add origin <repo_url>
git fetch origin <branch>

위 단계를 수동으로 실행하고 올바르게 완료되었다고 가정하면 필요한만큼 다음을 실행할 수 있습니다.

git checkout --force <branch>

실행 될 때마다 모든 파일을 체크 아웃하지만 파일을 다시 다운로드 할 필요가 없으므로 시간을 절약 할 수 있습니다.


답변

타사 서버에 액세스 할 수 있으면 해당 서버를 복제 한 다음 복사 할 수 있습니다.