Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Перенос кода из ЛОКАЛЬНОГО svn-репозитория в git  (Прочитано 2612 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DikBSD

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
При переносе кода из ЛОКАЛЬНОГО svn-репозитория в git столкнулся с проблемой.
Для переноса кода ввожу следующее в bash (заимствовал из 2-х источников: www.bezumnoe.ru/journal/5002202653/post127638/comments и http://leonid.shevtsov.me/ru/perenos-svn-repozitariya-v-git) Обе методики срабатывают в моем случае одинаково (см. ниже).

По 1-й методике:
mkdir dev_temp
cd dev_temp
git svn init file:///home/user/my_svn_rep --no-metadata
git config svn.authorsfile ~/svn-authors.txt
git svn fetch

По 2-й методике:
mkdir dev_temp
cd dev_temp
git svn clone -s --authors-file=/home/user/svn-authors file:///home/user/my_svn_rep
(если убрать -s, то результат все равно - тот же)

Если в ЛОКАЛЬНОМ svn-репозитории 1-2 коммита, то все прекрасно переносится в git.
Но, если коммитов много (сотни, тысячи), то возникает проблема: Процесс переноса завершается, но в папке новым git-репозиторием отсутствуют файлы, только папка .git (которая "весит" где-то 600М), и из git log узнаю, что нет ни одной ветки, и falied HEAD. gitk, соответственно, не запускается.
Такая ситуация у меня с переносом всех "многолетних" svn-репозиториев. Все эксперименты ни к чему не привели. Гугливание - тоже ничего нового к этим двум методикам не добавила.

Подскажите, КАК все-таки перетянуть код из ЛОКАЛЬНЫХ svn-репозиториев в git?
Спасибо.

Оффлайн Tonal

  • Любитель
  • *
  • Сообщений: 82
  • Карма Кагью
    • Просмотр профиля
У тебя структура svn-репа стандартная? В корне (branch, tags, trunk)?
Если нет, то нужно указать альтернативные имена веток.
Если в корне проекты и в них стандартная структура - попробуй указать путь к проекту а не всему репу.
Ежели структура совсем не такая, то походу выдёргивать придётся отдельными бранчами...

Оффлайн DikBSD

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Спасибо, что отозвались!
Структура - стандартная. Во всех моих svn-репозиториях - только одна основная ветка, других нет. В каждом репозитории - только по одному проекту.
Как я только не изголялся при переносе кода в git... Папка .git создается большого размера (видно, что данные экспортировались), но НЕТ ни одной ветки, включая master.
Не хочется писать скрипты для fast-import... Может есть решение проблемы?.

Забыл указать, что все мои svn-репозитори создавались и пополнялись на Windows. Сейчас, когда перешел на Ubuntu и git - нужно перенести все в git.

Оффлайн Tonal

  • Любитель
  • *
  • Сообщений: 82
  • Карма Кагью
    • Просмотр профиля
Одна основная ветка - это как раз не стандартная структура. Стандартная это (branchs, tags, trunk).
Ежели ветка только одна, то всё вроде просто:
git svn clone главная_ветка_репозитория
Правда с файловым путём я не пробовал, по протоколам svn и http работает на ура - выдёргивает всю историю.

Оффлайн DikBSD

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Возможно я не совмсем точно выразился, говоря об одной основной ветке.
У меня в svn-репозиториях структура стандартная (branchs, tags, trunk). Есть trunk. В процессе работы создавал метки (tags). Но я не делал ни одной ветки - работаю исключительно в той, что создалась автоматом при создании svn-репозитория.

Оффлайн DikBSD

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Кажется, понял, в чем может быть проблема: У меня в svn-репозиториях закоммитины большие doc-файлы (svn-репозитории еще той эпохи, когда "сидел" на Win32 и не знал про DocBook), а git-svn "непереваривает" такое при переносе кода. Придется, наверное, писать скрипты и делать импорт вручную через fast-import.

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.