Estou tentando clonar a base de código do LibreOffice, mas no momento tenho uma conexão de internet de cerca de 300kbps e é tudo menos estável. Posso recuperar a conexão a qualquer momento, mas o processo de clone do git já parou de funcionar e não há como fazê-la funcionar novamente. Existe alguma maneira de obter um download de clone do git mais resistente a falhas?
Uma opção que me considerei é baixar o diretório .git de outra pessoa, mas isso depende demais dos outros e não parece a melhor solução possível para mim.
depth -1
seja uma solução?kernel/git/torvalds/linux.git
. E um clone git recuperável está sendo discutido (março de 2016). Consulte stackoverflow.com/a/29192890/6309 .git init
, configurar um controle remoto e, em seguida, buscar até conseguir fazer o truque? Não acho que a busca descarte objetos baixados com êxito se a conexão falhar.Respostas:
Eu não acho que isso esteja pronto ainda. Há uma página antiga do GSoC que planejava implementar o recurso desejado. Minha melhor aposta é que, como você sugeriu, faça o download como um diretório. Suponho que você consiga retomar downloads por outros protocolos.
Atualizar
Juntamente com a
git clone --depth=1
sugestão de clonagem superficial ( ) em uma das outras respostas, pode ser útil se alguém puder criar um repositório simples para você, se você puder se comunicar com o provedor. Você pode facilmente converter o repositório vazio em um repositório completo. Leia também os comentários nessa resposta, pois um clone superficial nem sempre pode ajudar.fonte
--depth 1
e--unshallow
parece ter resistido aos anos de uso.Duas soluções (ou melhor, soluções alternativas ) que vêm à mente são:
Uso raso clone isto é
git clone --depth=1
, em seguida, aprofundar este clone utilizandogit fetch --depth=N
, com o aumento da N . Você pode usargit fetch --unshallow
(desde 1.8.0.3) para baixar todas as revisões restantes.Peça a alguém para empacotar um release marcado (consulte a página de manual do git-bundle (1) ). O pacote configurável em si é um arquivo comum, que você pode baixar de qualquer maneira, via HTTP / FTP com suporte a resumo, via BitTorrent, via rsync, etc. .
fonte
for m in $(seq 1 50);do git fetch --depth=$[m*100];done
trabalhou para mim, obrigado! :)Este método usa um servidor de terceiros.
Primeiro, faça
git clone --bare
, entãorsync -v -P -e ssh user@host:repo.git .
você pode usar o msys no Windows.fonte
rsync(1)
pela maneira como estou olhando para você "? Ou, você pretende primeirogit clone
em um servidor de terceiros e depois sincronizá-lo novamente com a máquina local?" Nunca subestime a largura de banda de um pombo-correio e um pacote de cartões SD " seria a forma moderna dessa resposta. Tar, velho
cp -a
, seja qual for, e envie a maldita coisa. Encontre alguém disposto a gastar dois minutos do seu tempo para colocar um pen drive no SASE. Encontre um contato, eles podem até fazer isso por você.fonte
Você pode "baixar o diretório .git de outra pessoa", mas com essa outra pessoa sendo o próprio repositório oficial. Os repositórios do LibreOffice estão disponíveis via http, por exemplo,
build.git
em http://anongit.freedesktop.org/git/libreoffice/build.git/ (consulte http://cgit.freedesktop.org/libreoffice/ para obter a lista completa, o URL http está na parte inferior da página de cada repositório).O que você vê nesses URLs http nada mais é do que um
.git
diretório (na verdade, um repositório " vazio ", que possui apenas o que você encontraria no.git
diretório). É o mesmo diretório que o servidor para ogit://
protocolo (git daemon
) leria. Se você fizer uma cópia desses diretórios com um downloader da web (por exemplowget -m -np
), poderá clonar sua cópia e ela funcionará tão bem quanto se você tivesse clonado diretamente do repositório http.Então, o que você pode fazer é: para cada repositório, obtenha uma cópia dele com o seu downloader da web favorito (que lidará com todos os problemas com a retomada de downloads quebrados) e clone a partir dessa cópia. Quando você quiser atualizar, use novamente o seu downloader da web favorito para atualizar sua cópia e retire a cópia. Agora seus clones e atualizações são tão resistentes a más conexões quanto o seu downloader da web favorito.
fonte
Vamos dividir
git clone
em seus componentes e uságit checkout
- los para impedir o download de arquivos novamente.Quando
git clone
executado, as primeiras coisas que faz são equivalentes aSe você executar as etapas acima manualmente e assumindo que elas foram concluídas corretamente, agora poderá executar o seguinte quantas vezes forem necessárias:
Observe que ele fará o check-out de todos os arquivos sempre que for executado, mas você não precisará baixar novamente os arquivos , o que pode economizar muito tempo.
fonte
Se você tiver acesso a um servidor de terceiros, poderá cloná-lo e copiá-lo.
fonte
Este comando me ajuda (Graças a Nicola Paolucci )
por exemplo
fonte
Com base nas respostas baseadas em clone / profundidade - algumas linhas do bash fazem isso facilmente ...
git clone --depth=1 [email protected]:/var/git/whatever.git <directory> cd <directory> for m in `seq 1 100`;do git fetch --depth=$m;done
fonte
seq 1 10 1000
; não git pull --depth = $ m; feito para obter passos de 10. PS Se eu fizer Ctrl + CI perder apenas o pacote atual, e eu posso começar tudo de novoEsse problema também me mordeu. No meu caso, há uma solução alternativa. Pode ou não ser aplicável no seu caso.
Às vezes, estou usando um telefone celular para iniciar operações git em um sistema remoto. Se meu wi-fi interromper, é claro, a sessão termina e o git descarta toda a operação de clone sem se recuperar. Mas como a conexão de Internet do meu sistema remoto com o git master é sólida, não há necessidade de o clone parar. Tudo o que preciso é de bom senso para desanexar o clone da sessão do terminal. Isso pode ser feito usando screen / tmux ou nohup / daemon. Portanto, é um mau funcionamento do liveware no meu caso.
fonte
Use um proxy git, como ngitcached ou git-proxy .
fonte
Use CNTRL Z para interromper a clonagem. Não feche o terminal, coloque o sistema / laptop em hibernação e continue depois pelo comando fg. Eu estava enfrentando esse mesmo problema hoje ao tentar clonar um repo frm github. Isso veio como uma economia de tempo para mim.
fonte
Aumentar o tamanho do buffer ajudará você neste problema. Basta seguir os passos.
passos:
1. Abra o terminal ou Git Bash e, com "cd", vá para o local em que deseja clonar o repo.
2. Defina a compactação como 0
Tamanho 3.Set postBuffer
Defina o tamanho maxRequestBuffer
Agora comece o clone
6. Aguarde até que o clone seja concluído.
Obrigado. Feliz codificação !!!
fonte
Eu gostaria de colocar meus 5 centavos aqui. Foi isso que me ajudou a resolver esse problema
Isso me ajudou a clonar o repositório de ~ 3 GB na conexão adsl de 8 Mbps, é claro que tive que realizar buscas e tentativas algumas vezes, mas ainda assim ...
fonte
se considerarmos que os servidores têm boa largura de banda (e você tem um servidor), outra resposta é:
mas isso só funciona com experiência muito básico Web-desenvolvimento;) e também que você precisa
git.exe
em sua Severfonte
Mesmo problema aqui - eu tenho uma conexão à Internet realmente esquisita, geralmente não superior a 10-15 kb / seg :-P
Para mim, a maneira wget funcionou muito bem. Vá para o site do repositório onde está o botão verde "clonar ou baixar", clique nele e copie o link da opção de download ZIP.
Em seguida, insira o link no comando
wget : wget -c -m -np https://github.com/your/repository/archive/master.zip
Funciona como um encanto...
fonte
a melhor solução alternativa que funcionou para mim:
Eu enfrentei o mesmo problema com uma conexão de internet ruim. Então, eu vim com a seguinte solução:
Criei um pequeno arquivo php no meu servidor para baixar o pacote como um arquivo zip:
faça o download do arquivo zip usando qualquer gerenciador de downloads que suporte o currículo
fonte
Você pode tentar usar o mercurial com a extensão hg-git.
Se isso não funcionar, você pode usar
git fetch <commit-id>
para buscar apenas partes de um repositório git remoto (você pode buscar em um repositório git vazio, não há necessidade de criá-lo com clone). Mas você pode corrigir a configuração da ramificação (= criar ramificações de rastreamento local e remoto) ao usar essa abordagem.fonte