2013-07-29 5 views
0

В настоящее время я пытаюсь переместить наш большой репозиторий Subversion, около 25 ГБ, включая историю, в GIT, и, похоже, я столкнулся с двумя проблемами. Один из них, я думаю, я решил, но я покрою оба за полноту, если я прикручу первое исправление;Svn2Git - Push Large GIT Repo To Remote

Репозиторий Subversion не появляется следовать систематическом для разветвления, это выглядит как шаблон изменилось за эти годы, так что для начала я использовал опцию rootistrunk получить весь репозиторий мерзавцу:

svn2git http://svnurl/repo --rootistrunk --authors authors.txt

Это сработало, однако репо было слишком большим, чтобы нажать на удаленный, и я получил следующую ошибку; [дистанционное отклонение] master -> master (максимальная длина запроса превышена)

Чтобы обойти это, я использовал следующий метод, чтобы получить кусок репо Subversion в надежде, что смогу получить 500 коммитов за один раз и обойти большой вопрос упаковки;

svn2git http://svnurl/repo --rootistrunk --authors authors.txt --revision 1:500

я потом толкнул, и она работала, я побежал git svn fetch -r 501:1000, чтобы получить следующие 500 фиксаций, но когда я пытаюсь нажать после этой последней выборки я получаю сообщение: «Все уточненный», несмотря на тот факт, что этого не может быть.

Я просмотрел файлы справки для git и svn2git в надежде, что смогу узнать, что я сделал неправильно, но после нескольких дней исследований у меня все еще нет решения, я новичок в git вероятно, я пропустил что-то очевидное для старой шляпы. Может ли кто-нибудь пролить свет на то, что я делаю неправильно, пожалуйста? Если я сделал ложное предположение, и я делаю все это неправильно, я был бы рад услышать это, поскольку это не удивит меня на этом этапе!

В настоящее время я пытаюсь вставить проект TFS 2013 и репозиторий Stash, оба показывают одно и то же поведение, поэтому я должен был сделать что-то не так на стороне GIT. Первый push работает в обоих случаях, только второй, который не хочет принимать новые файлы. Сервер, на котором я выполняю push из запусков Ubuntu, TFS находится в Windows Server 2012, а Stash - в другом поле Ubuntu.

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

Спасибо, Киган

ответ

0

После первого импорта, попробуйте следующее: git svn rebase

Но, лучший подход, если вы SVN репозиторий действительно большой (более 1 Гб), это избежать импортировать все изменения. Я бы рекомендовал начать с более поздней временной шкалы и сохранить свалку svn в безопасном месте, если в какой-то день вы действительно захотите посмотреть очень старые версии.

Если вы решили импортировать из более поздних сроков, то результат будет что-то вроде этого:

svn2git http://svnurl/repo --rootistrunk --authors authors.txt --revision 500:HEAD

Когда первые 500 фиксаций не потянулось к мерзавцу.

+0

Спасибо Ayr_Ton, я дам скидку. Увы, сохранение истории - тяжелое требование для этого проекта, хотя я буду убеждать их. –

+0

Если я правильно понимаю, rebase объединит все изменения с 500 -> head в одно коммит? Не уверен, что я могу продать это компании в качестве опции.:/ –

+0

Он вытащит все фиксации из вашего последнего обновления в HEAD. Не только одно совершение. Как, если вы импортировали первые 500 коммитов, вы будете переустанавливать с 501 на HEAD. –