2011-01-17 3 views
7

Я нахожусь в dialup в паршивом месте (да, это все еще происходит в 2011 году) и пытается клонировать огромный репозиторий. Он запускается без проблем, но каждый раз, когда dialup отключается (что неизбежно, похоже), #% $ * hg возвращает все обратно, и я снова остаюсь с пустым каталогом.Есть ли способ клонировать репозиторий из Интернета постепенно?

Есть ли решение, отличное от того, чтобы делать это на удаленном ПК, а затем загружать все по FTP или что-то в этом роде?

+1

Это зависит от типа доступа, который вы имеете к репо, но в некоторых случаях «rsync» будет вариантом. – miku

+0

'rsync' - это, безусловно, путь сюда. Вы получите как минимум избыточные передачи файлов и гарантированные результаты, независимо от количества перезапусков. –

ответ

8

В Баш-как оболочки вы могли бы сделать что-то вроде этого:

$ hg init myclone 
$ cd myclone 
$ for REV in `seq 10 10 100` ; do hg pull -r $REV <REMOTEREPO>; done 

Начиная с 10, каждый тянуть загружает следующие 10 ревизий, до 100. В случае потери связи, настроить первый до seq, чтобы соответствовать тому, что вы уже потянули.

+4

Или в командной строке Windows: 'FOR/L% A IN (10,10,100) сделать hg pull -r% A ' –

+0

'' '' '' '' '' Должно быть известно, что нумерация наборов изменений может отличаться от репозитория вверх по потоку, если вы это сделаете это так. – Ringding

+0

Я попытался продвинуть его дальше и в настоящее время поддерживаю (новое) репо в случае, если у нас есть одна проблема: попробуйте внести свой вклад? : D https://github.com/nootanghimire/hg-clone-bash – cipher

1

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

Во-первых, вы можете попробовать так называемые «потоковые клоны». Они сводят к минимуму Время до первого байта, но обычно требуется немного больше данных для передачи.

Вот как сделать потоковый клон:

$ hg clone --uncompressed https://~~~~ 

Вашего вторым вариантом будет рт.ст. клон --rev операции, а затем рядом дополнительных тяг. Это ведет себя так же, как клонирование хранилища в некотором отдаленном прошлом и периодические обновления.

$ hg clone --rev 5 https://~~~~ 
0

на основе предложений здесь,

Я создал репозиторий, который сделал это.

https://github.com/nootanghimire/hg-clone-bash 

Он оптимизирован для одного репо, но я думаю, вы можете развивать и работать над ним! :)

Смежные вопросы