Как завершить клон git для большого проекта при нестабильном соединении?



Я пытаюсь клонировать кодовую базу LibreOffice, но на данный момент у меня есть подключение к интернету около 300kbps, и это просто что угодно, но не стабильно. Я могу вернуть соединение в любой момент, но тогда процесс клонирования git уже перестал работать, и нет способа снова запустить его. Есть ли способ, чтобы иметь более устойчивой к возможным сбоям в Git скачать клон?



один из вариантов, который я считал себя, чтобы загрузить чужой .в Git, но это слишком зависит от другие и не кажутся мне лучшим возможным решением.

889   15  

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). Но вы можете исправить конфигурацию ветви (=создать локальные и удаленные ветви отслеживания) при использовании этого подхода.

если мы предполагаем, что у сервера есть хорошая полоса (и у вас есть сервер), другой ответ:

  1. создайте свой собственный сервер, используя серверную сторону Git Wrapper ' s
  2. клонировать его на вашем сервере
  3. Zip его с помощью Server-Side Zip Archiver ' s
  4. загрузите его с и с серверной стороны возобновить поддержку

но это работает только с очень простой опыт веб-разработки ;) а также вам нужно git.exe на север

та же проблема здесь - у меня действительно слоеное подключение к интернету с часто не более 10-15 кб/сек :-P

для меня способ wget работал очень хорошо. Перейдите на сайт репозитория, где находится зеленая кнопка "клонировать или скачать", нажмите на нее и скопируйте ссылку опции загрузки ZIP.

затем вставьте ссылку на команду wget:
wget-c-m-nphttps://github.com/your/repository/archive/master.zip

работает как шарм...

Comments

    Ничего не найдено.