Репозиторий Mercurial слишком велик, не может подключиться, клонировать

#git #mercurial #atlassian-sourcetree

#git #mercurial #atlassian-sourcetree

Вопрос:

Наш репозиторий BitBucket вырос до более чем 3 гигабайт, и теперь, когда я пытаюсь клонировать в SourceTree, все, что я получаю, это символ попытки подключения. Когда я пытаюсь в Tortoise, он клонируется до определенной точки, а затем отключается, говоря, что ожидал # байт, но получил #.

Я не могу загрузить ZIP-файл с BitBucket, потому что он слишком большой. Что я могу сделать для клонирования?

Комментарии:

1. Я столкнулся с этой проблемой, используя TeamCity и TortoiseHg. Я получил сообщение, о котором упоминает Брэд. Я действительно не хотел выполнять частичное извлечение, чтобы устранить проблему на случай, если TC когда-либо удалит папку и попытается повторно извлечь. Я смог обойти проблему, переключившись на SSH, хотя у этого были свои проблемы. Мой репозиторий был меньше 500 МБ, но это был этот симптом. Возможно, что-то еще вызывало тайм-аут, но это было довольно раздражающе, особенно с репозиторием, который я не считал таким уж массивным.

Ответ №1:

Клонируйте в старую ревизию, используя hg clone -r <revision> , и извлеките остальное. Вы также можете постепенно извлекать, если это необходимо.

Комментарии:

1. Я знаком только с Sourcetree, как мне запускать команды терминала? Нужно ли мне устанавливать что-то еще?

2. Я не знаю SourceTree, но это может быть опция, которую вы можете установить при клонировании. В противном случае проверьте эту ссылку: answers.atlassian.com/questions/54473 /…

Ответ №2:

Я также столкнулся с этой проблемой с очень большим, многогигабайтным репозиторием, который хранился на BitBucket. Если бы я попытался просто клонировать весь репозиторий, он всегда прерывался бы в середине «добавления изменений в файл». Если вы используете TortoiseHg, сообщение об ошибке напоминает «прервать: поток неожиданно завершился (получено ##### байт, ожидается ######)»

Решение состоит в том, чтобы «запустить вечеринку», клонируя только первые несколько сотен проверок, а затем постепенно загружая больше ревизий с помощью команды Mercurial pull .

Вот командная строка:

 hg clone -r 500 https://Someone@bitbucket.org/MyCompany/MyRepoName MyDevFolder
 

Это приведет к клонированию первых 500 ревизий ( -r 500 ) репозитория с именем MyRepoName , а затем скопирует их в новую папку с именем MyDevFolder . (Вы можете, конечно, опустить «MyDevFolder», и он просто создаст новую папку на основе имени вашего репозитория)

Если вышеуказанное выполнено успешно, перейдите в новую папку разработки и попытайтесь постепенно обновлять до более высоких номеров версий.

 cd MyDevFolder
hg pull -r 1000
hg pull -r 2000
hg pull -r 3000
...
hg pull -r [Whatever the maximum number of revisions is]
hg pull
hg update
 

В качестве меры предосторожности ближе к концу процесса вы должны выпустить простой hg pull , чтобы убедиться, что вы извлекли весь код целиком.

hg update Конечно, файлы в вашем будут обновлены, MyDevFolder чтобы отразить самую последнюю доступную версию исходного кода.

Комментарии:

1. Вот ошибка, которую я получил. Спасибо за предупреждение.