LINUX.ORG.RU

Как скачать большой реп через git?


1

3

Имеется довольно скудное интернет-соединение (1 мегабит), крупное дерево исходников (модификация вядра) на мноюненавистном (одна из частных причин ниже) гитхабе. Сначала скачивал срезы в zip (каждый по 200 мб).Теперь выяснилось, что срезов недостаточно т.к часто нужно перемещаться между ревизиями. Начал клонировать реп, пока что только определённый бранч:

Receiving objects: 8% (286344/3478975), 177.75 MiB | 98 KiB/s

То есть, он больше 2 ГБ? Или это собранное вядро? Соединение может оборваться, в таком случае прийдётся качать заново? Я тогда и за 3 года могу его и не скачать! А что, если я не один бранч клонировать буду? У меня же места на диске не хватит! Объясните мне, что делать? Может я что-то не так понял?

★★★★★

Соединение может оборваться, в таком случае прийдётся качать заново?

При прерывании клонирования докачка не поддерживается (хотя планировали сделать restartable clone, мб уже и запилили?). Как вариант - git-bundle.

А тебе реально нужны все ветки?

// А еще сейчас тебе объяснят, что 1 мегабит - это не то чтобы мало.

aidan ★★★★
()

Если не изменяет память на обрывы будет пофиг. На остальные вопросы могу только посоветовать читать Pro GIT. Еще интересно, какой командой ты клонируешь репозиторий.

TheKnight ★★★
()
Ответ на: комментарий от aidan

Мегабит - не мало, если не нужно клонировать git. Конечно нужны не все ветки, а штук 15 их (скорее всего) Но как выбрать, какие именно? Клонирую git clone. А можно как-то по другому?

mittorn ★★★★★
() автор топика

А что, если я не один бранч клонировать буду?

эмм вообще-то при клонировании скачиваются все коммиты, что были сделаны в данный репозиторий, во всех доступных бранчах.

а при обрыве можно попробовать докачать через git pull

mm3 ★★★
()
Ответ на: комментарий от mm3

а при обрыве можно попробовать докачать через git pull

Не уверен, что сможет. Я бы зашёл с другой стороны: склонировал сначала самую первую ревизию, а потом бы уже дотягивал pull'ом.

const86 ★★★★★
()
Ответ на: комментарий от aidan

Это linux-sunxi. Там коммитов больше гига, шла и идёт активная разработка. А много срезов надо т.к. ни одно не запустилось на моём allwinner'е, хотя рабочие сборки есть.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Думал, что всё проще. По приблизительной оценке трафика лучше целиком срезы tar.gz тянуть (заменить в url среза zip на tar.gz), тогда чуть меньше файлы выходят. Или заплатив 20 рублей мобильному опенратору вытянуть по 3G.

mittorn ★★★★★
() автор топика
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от mittorn

Думал, что всё проще.

Сложно много раз git fetch запускать? Так можно так:

for i in `seq 1 1000`; do echo $i; git fetch --depth=$i; done

i-rinat ★★★★★
()
Ответ на: комментарий от mm3

эмм вообще-то при клонировании скачиваются все коммиты

Это если без опций запускать. Можно, например, склонировать конкретную ветку.

anonymous
()

или попросить кого нибудь вытянуть всё и раздать торентами...

mittorn, могу сделать так. Скачаю реп на свою машину - создам торрент. Transmission включен всё время.

Если надо, пиши в жаббир - iiiypuk@iiiypuk.me

IIIypuk ★★★★
()
Ответ на: комментарий от IIIypuk

Уже не надо, удалось собрать рабочее ядро. Однако, если включить в нём fbcon или bootlogo, работать оно перестаёт. А без консоли - никуда.

mittorn ★★★★★
() автор топика

Имеется довольно скудное интернет-соединение (1 мегабит)

Да вы зажрались.

Сидите и спокойно качайте. Там пару гигов быстро скачаете.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от RiseOfDeath

Возможно. Однако когда у всех (!!!) моих знакомых по 8-9 мегабит, соединение действительно кажется скудным. Только вот грузить знакомых скачиванием исходников ядер как-то нехорошо, вот и ищу способ сделать всё самостоятельно.

mittorn ★★★★★
() автор топика

Что это за провайдер у тебя такой хреновый, что соединение может вот так вот запросто обрываться?
Или это надуманное?

AnDoR ★★★★★
()

andor@andor-dw ~/1 $ git clone https://github.com/linux-sunxi/linux-sunxi.git
Cloning into 'linux-sunxi'...
remote: Counting objects: 3478993, done.
remote: Compressing objects: 100% (597615/597615), done.
remote: Total 3478993 (delta 2863504), reused 3462420 (delta 2850471)
Receiving objects: 100% (3478993/3478993), 982.38 MiB | 823 KiB/s, done.
Resolving deltas: 100% (2863504/2863504), done.
Checking out files: 100% (43033/43033), done.

andor@andor-dw ~/1 $ du -sh linux-sunxi
1,8G linux-sunxi
andor@andor-dw ~/1 $ du -sh linux-sunxi/.git
1,1G linux-sunxi/.git

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

AnDoR ★★★★★
()
Ответ на: комментарий от elnair

Сборка идёт довольно быстро.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от AnDoR

Канал плохой, dsl, но почему-то сигнал слабый. По нему проложено pptp соединение, сервер бывает сильно нагружен. При звонках иногда начинает рваться.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от mm3

или попросить кого нибудь вытянуть всё и раздать торентами...

Protocol Location
HTTP 	 https://www.kernel.org/pub/
FTP 	 ftp://ftp.kernel.org/pub/
RSYNC 	 rsync://rsync.kernel.org/pub/

На админа kernel.org намекаешь? А то сегодня даже коммерческие компании предлагают торрент, а открытый kernel.org что-то отстал.

gag ★★★★★
()
Ответ на: комментарий от gag

ТСу понадобился git репозиторий со всеми коммитами (или только с отдельными тегами !?), так как ему немного наскучило качать срезы и я мягко намекнул, что можно было обратиться к единомышленникам с более стабилным каналом (кто там уже протянул 10 гигабитное опто-волокно себе домой?), для преобразования обрыво-небезопасного канала передачи данных в обрыво-безопасный. ненавязчиво намекая на свои услуги.

mm3 ★★★
()
Последнее исправление: mm3 (всего исправлений: 1)

Помимо долгово скачивания и обрывов тут напрягает, что я не один в квартире, а канал 1. Таким образом это скачивание серьёзно режет доступ остальным членам семьи. Скорее мне нужна была возможность восстановить скачивание при обрыве и возможность приостановить процесс. Способы сделать так тут уже предложили, хоть и костыльные. Как я уже писал, нашёл рабочий срез, остальное можно из http-версии по файлам докидать.

mittorn ★★★★★
() автор топика

Никак. Это гит. Можешь только сократить требуемый объём указанием глубины и конкретных веток.

O02eg ★★★★★
()

А теперь вопрос: Как portage сумел продолжить прерванное по ^C клонирование?

GIT update -->

repository: https://github.com/linux-sunxi/sunxi-mali.git

at the commit: 997139453d869b4dc2e7507b6a78f27d7f191e28

branch: master

storage directory: «/usr/distfiles/egit-src/sunxi-mali.git»

checkout type: non-bare repository

Synchronizing submodule url for 'lib/mali'

Cloning into 'lib/mali'...

remote: Counting objects: 196, done.

remote: Compressing objects: 100% (114/114), done.

Receiving objects: 20% (40/196), 732.00 KiB | 7 KiB/s

mittorn ★★★★★
() автор топика

Git, в отличие от Mercurial, не поддерживает докачку.

iZEN ★★★★★
()
16 ноября 2014 г.
Ответ на: комментарий от AnDoR

Что это за провайдер у тебя такой хреновый, что соединение может вот так вот запросто обрываться?

При чем тут провайдер? Если сетевая программа не поддерживает докачку — это дефективное говно, без обсуждения. У человека должна быть возможность жить в тундре, топить печку, охотиться и программировать.

Deleted
()

Таки вся репа ведь лежит в .git... Я в такой же ситуации выкачивал на vps'ку и tar -cvzf linux.tgz .git, можно добавить split по вкусу. Задача сводится к как скачать большой файл по ftp/http/ любому любимому протоколу.. мне повезло и провайдер забыл порезать скорость к яндексу - сложил на их диск и забрал домой без ограничений в скорости.

naszar
()

интернет-соединение (1 мегабит)

Да вы ещё хорошо живете, мне б ваши проблемы.

WRG ★★★★
()
Ответ на: комментарий от mittorn

Помимо долгово скачивания и обрывов тут напрягает, что я не один в квартире, а канал 1. Таким образом это скачивание серьёзно режет доступ остальным членам семьи.

покажи, кто альфа-самец в доме, скажи «пока моё ядро не скачается, никакого интернета у вас не будет!» :)

Harald ★★★★★
()
Ответ на: комментарий от mittorn

?????

как залогинится шеллом на жидхаб

Не понял... а зачем тебе шелл именно на гитхабе? Или ты про то что надо бесплатный шелл с каналом? Щас попробовал, этот финт ушами с опеншифтом не проходит, ведро по квотам в нем не вмещается. Совсем забесплатно можно еще на амазоне.. или придется потратить 100р на DigitalOcean (собственно на нем и проворачивал).

naszar
()
Ответ на: ????? от naszar

Хотел напрямую выкачать, но выходит, что никак. Ну если не считать --depth. Впрочем, --depth достаточно помог.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от mittorn

тебе дело советуют. заведи vps ку с шеллом, на неё сможешь качать что угодно, а с неё - хоть по http с докачкой и сжатием 7z

Deleted
()
Ответ на: комментарий от Deleted

Раньше для таких целей дедики воровал. Сейчас видимо действительно не помешает.
vps давно планирую, только платить неохота.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от WRG

Да ладно, это где такое в 2014 году? Даже у меня за городом ADSL 10/2. А в городе вообще стомегабитка туда-обратно у провайдеров-ex домашних сеток...

NeverLoved ★★★★★
()
Ответ на: комментарий от mittorn

Могу утащить тебе репу, распаковать, почистить каталоги .git, запаковать и выложить куда-нибудь, если сильно нужно.

NeverLoved ★★★★★
()
Ответ на: комментарий от bj

Нет, 4 мегабита. Теперь --depth решает проблему.

mittorn ★★★★★
() автор топика
Ответ на: комментарий от NeverLoved

Такое бывает только когда в городе долгое время был местный интернет. У большинства провайдеров были ограниечния на внешние соединения и неограничены внутренние, дорогие тарифы. Дешевле 500 рублей в месяц с нормальным подключением раньше никогда не было. Сейчас это сошло на нет уже, но менять тариф дорого и не охота.
Нестабильное подключение было в основном на бесплатных проксях, позволявших обойти ограничения (прокси в городе с неограниченным внешним интернетом). Но у провайдера тоже временами отвалы. Например во время создания топика целую неделю сыпалось каждые 30-40 минут, потом поправили.

mittorn ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.