Как завершить клон git для большого проекта при нестабильном соединении?
Я пытаюсь клонировать кодовую базу LibreOffice, но на данный момент у меня есть подключение к интернету около 300kbps, и это просто что угодно, но не стабильно. Я могу вернуть соединение в любой момент, но тогда процесс клонирования git уже перестал работать, и нет способа снова запустить его. Есть ли способ, чтобы иметь более устойчивой к возможным сбоям в Git скачать клон?
один из вариантов, который я считал себя, чтобы загрузить чужой .в Git, но это слишком зависит от другие и не кажутся мне лучшим возможным решением.
15 ответов:
Я не думаю, что это еще не готовы. Есть старая страница GSoC то, что планируется реализовать желаемую функцию. Мой лучший выбор, как вы предложили загрузить его в качестве каталога. Я предполагаю, что вы можете возобновить загрузку по другим протоколам.
Прерываемых Клон
при клонировании большого репозитория (например как KDE, Open Office, ядро Linux) в настоящее время нет способа перезапустить прерванный клон. Это может занять значительное время для пользователя конец небольшой трубы для загрузки данные, и если клон прерван в середине пользователь в настоящее время нуждается чтобы начать все сначала и попробовать еще раз. Для некоторых пользователей это может сделать невозможным клонирование большого хранилище.
цель: разрешить git-клон автоматически возобновление ранее неудачной загрузки над родным git: / / протокол. Язык: C Наставник: Шон Пирс Предложено: Шон Пирс на gmane
обновление
вместе с мелким клонированием (
git clone --depth=1) предложение в одном из других ответов может быть полезно, если кто-то может сделать голый репозиторий для вас, если вы можете связаться с поставщиком. Вы можете легко преобразование голый репозиторий в полный репозиторий. Также прочитайте комментарии в этом ответе, поскольку мелкий клон не всегда может помочь.
два решения (или, скорее,решения), которые приходят на ум:
использовать мелкий клон т. е.
git clone --depth=1, потом углубить этот клон с помощьюgit fetch --depth=N, С увеличением N. Вы можете использоватьgit fetch --unshallow(начиная с 1.8.0.3), чтобы загрузить все остальные версии.попросите кого-нибудь bundle до некоторых помеченных релизов (см. git-bundle (1) manpage). Сам пакет представляет собой обычный файл, который вы можете скачать любым способом, через HTTP / FTP с поддержкой резюме, через BitTorrent, через rsync и т. д. Вы можете создать клон из пакета, исправить конфигурацию и сделать дальнейшие выборки из официального репозитория LibreOffice.
этот метод использует сторонний сервер.
во-первых, сделать
git clone --bare, тогдаrsync -v -P -e ssh user@host:repo.git .Вы можете использовать msys под Windows.
вы можете "скачать чужой .git directory", но с тем, что кто-то еще является официальным репозиторием. Репозитории LibreOffice доступны через http, например их
build.gitнаходится в http://anongit.freedesktop.org/git/libreoffice/build.git/ (см. http://cgit.freedesktop.org/libreoffice/ для полного списка, HTTP URL находится в нижней части страницы каждого репозитория).то, что вы видите на этих http-url, не более того чем
.gitкаталог (на самом деле" голый " репозиторий, который имеет только то, что вы найдете в
"никогда не стоит недооценивать пропускную способность почтового голубя и связки SD-карт " было бы современной формой этого ответа. Смолите его, старый добрый
cp -aЭто, что угодно,и отправить проклятую вещь. Найдите кого-то, кто готов потратить две минуты своего времени, чтобы бросить флешку в SASE. Найдите контакт, там, они могут даже сделать это для вас.
давайте
git cloneвниз в его составные части, и используйтеgit resetчтобы предотвратить повторную загрузку файлов., когда
git cloneработает, первые несколько вещей, которые он делает эквивалентныgit init git remote add origin <repo_url> git fetch origin <branch>если вы выполните описанные выше шаги вручную, и предполагая, что они завершены правильно, теперь вы можете выполнить следующие действия столько раз, сколько необходимо:
git reset --hard origin/<branch>обратите внимание, что он будет проверять все файлы каждый раз, когда он запускается, но вам не придется повторно скачать файлы, что может сэкономить вам массу времени.
эта проблема укусила меня тоже. В моем случае есть обходной путь. Это может или не может применяться в вашем случае.
Я иногда использую мобильный телефон, чтобы инициировать операции git на удаленной системе. Если мой wi-fi ломается, конечно, сеанс заканчивается, и git отбрасывает всю операцию клонирования без восстановления. Но поскольку подключение к интернету от моей удаленной системы до git master является надежным, нет необходимости останавливать клон. Все, что мне нужно-это здравый смысл, чтобы отделить клонов от терминальная сессия. Это можно сделать с помощью screen/tmux или nohup/daemon. Так что это неисправность звучит в моем случае.
используйте CNTRL Z, чтобы остановить клонирование. Не закрывайте терминал поместите систему / ноутбук в спящий режим, а затем продолжите позже по команде fg. Я столкнулся с этой же проблемой сегодня, пытаясь клонировать РЕПО frm github. Это экономит время для меня.
git clone --depth <Number> <repository> --branch <branch name> --single-branchэта команда поможет мне (Спасибо Николо Паолуччи)
git clone --depth 1 https://github.com/gokhanmoral/siyahkernel3 --branch ics --single-branch
используйте прокси git, например ngitcached или git-proxy.
основываясь на ответах на основе клона/глубины - несколько строк bash легко делают это...
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
вы можете попробовать использовать mercurial с расширением hg-git.
Если это не работает, вы можете использовать
git fetch <commit-id>чтобы получить только части удаленного репозитория git (вы можете получить в пустой репозиторий git, нет необходимости создавать его с помощью clone). Но вы можете исправить конфигурацию ветви (=создать локальные и удаленные ветви отслеживания) при использовании этого подхода.
если мы предполагаем, что у сервера есть хорошая полоса (и у вас есть сервер), другой ответ:
- создайте свой собственный сервер, используя серверную сторону Git Wrapper ' s
- клонировать его на вашем сервере
- Zip его с помощью Server-Side Zip Archiver ' s
- загрузите его с и с серверной стороны возобновить поддержку
но это работает только с очень простой опыт веб-разработки ;) а также вам нужно
git.exeна север
та же проблема здесь - у меня действительно слоеное подключение к интернету с часто не более 10-15 кб/сек :-P
для меня способ wget работал очень хорошо. Перейдите на сайт репозитория, где находится зеленая кнопка "клонировать или скачать", нажмите на нее и скопируйте ссылку опции загрузки ZIP.
затем вставьте ссылку на команду wget:
wget-c-m-nphttps://github.com/your/repository/archive/master.zipработает как шарм...
Comments