Как перенести репо SVN в Google Code на репозиторий git на GitHub

Мне трудно переключиться с репозитория SVN, размещенного на code.google, на репозиторий git на github. В частности:

  • Как я могу изменить код на code.google с SVN на git, сохраняя историю изменений?
  • Как я могу изменить wiki на code.google с SVN на git, сохраняя историю изменений?
  • Как перенести мой репозиторий git с code.google на GitHub?
  • Как сохранить оба хранилища в синхронизации друг с другом, при этом все еще используя GitHub в качестве основного репо?

Ответ 1

Переменные

  • $project - название вашего проекта
  • $username - ваше имя пользователя в github

Предполагается, что ваше имя $project совпадает с именем github, как на code.google, и вы уже инициализировали свой репозиторий github.

Кроме того, если ваш репозиторий code.google уже GIT, вы можете перейти к шагу 4.

  • Преобразование проекта из SVN в GIT. Это так же просто, как войти на вкладку "Администрирование- > Источник" и изменить ее с SVN на GIT. Кстати, svn по-прежнему доступен после того, как вы это сделаете; поэтому не беспокойтесь о полной потере кода.

  • Преобразовать исходный код из code.google SVN в code.google GIT (сохранение истории)

    git svn clone --stdlayout https://$project.googlecode.com/svn $project
    cd $project
    git remote add googlecode https://code.google.com/p/$project
    git push --all googlecode
    cd ..
    
  • Преобразование wiki из Google SVN в google GIT (сохранение истории)

    git svn clone https://$project.googlecode.com/svn/wiki $project.wiki
    cd $project.wiki/
    git remote add googlecode https://code.google.com/p/$project.wiki
    git push --all googlecode
    cd ..
    
  • Получить новый репозиторий GIT из github

    mkdir github
    cd github/
    git clone https://code.google.com/p/$project.git
    cd $project/
    
  • Получить исходный код из code.google GIT в локальный клон github

    git remote set-url origin https://github.com/$username/$project.git
    git pull
    
  • Нажмите источник из локального клона в github

    git push origin master
    
  • Сообщите местному клону, чтобы он нажимал на github AND code.google

    git remote set-url --add origin https://$project.googlecode.com/git
    
  • Тестирование нажатием фиксирует как github, так и code.google

    touch test.txt
    git add test.txt
    git commit -m "Testing repo replication" test.txt
    git push
    

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

Примечание. Если вы снова клонируете в другом месте (например, на другом компьютере), вам придется снова повторить шаг 6.

Ответ 2

Теперь есть функция экспорта в Google Code - перейдите на страницу проекта Google Code, т.е. code.google.com/p/yourproject, тогда вы должны увидеть кнопку "Экспорт в GitHub" , которая сделает это за пару шаги (обратите внимание: вам нужно будет авторизовать его со своей учетной записью GitHub).

Обратите внимание, что вы можете сделать это для любого проекта, а не только для своего.