Как переключить существующие проекты Intellij IDEA с SVN на Git SVN

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

Так как Intellij IDEA не предоставляет мост Git SVN, я запускаю из командной строки следующую команду, чтобы клонировать репозиторий SVN на Git: -

git svn clone --stdlayout --username myuser http://svnrepo/myproject -A authors.txt myproject

После клонирования репозитория SVN я открываю проект на основе Git, используя Intellij IDEA. На данный момент Intellij IDEA жалуется на недостающие каталоги контроля версий. Я узнал, что Intellij IDEA все еще помнит старую конфигурацию SVN. Поскольку проект теперь содержит каталоги .git вместо каталогов .svn, Intellij IDEA запутывается и не знает, как подключиться к каким-либо репозиториям прямо сейчас.

Единственное решение, которое работает для меня, - это сделать следующее: -

  • Создайте новый проект (пустой проект) в репозитории SVN.
  • Выполните "git svn clone".
  • Создайте проект, используя Intellij на нем.
  • В этот момент Intellij IDEA обнаруживает каталоги .git и подсказывает, нужно ли добавлять вновь созданные файлы в Git.
  • Скопировать все из проекта на основе SVN в проект Git.

Тем не менее, я не могу запустить Git в этом проекте Intellij IDEA на одном компьютере и в то же время использовать SVN в этом проекте Intellij IDEA на другом компьютере. Обе машины должны использовать Git, иначе Intellij IDEA не сможет зафиксировать репозиторий управления версиями. Я в порядке с этим, и я могу использовать Git на всех моих машинах. Тем не менее, я пытаюсь найти способ не создавать новые проекты на основе Git для всех моих существующих проектов на основе SVN. Это очень утомительно, потому что у меня есть несколько проектов SVN, которые мне нужно запустить с помощью Git.

Есть ли лучшее решение для меня переключить мои проекты SVN на Git с помощью Intellij IDEA?

Спасибо.

Ответ 1

Вы можете выбрать систему управления версиями для текущего проекта с File | Settings | Version Control. Этот параметр сохраняется в одном из файлов проекта (.idea/vcs.xml), поэтому, если вы не выполняете этот файл для управления версиями, вы можете использовать другую систему управления версиями на разных машинах.

Ответ 2

Кстати, вы можете использовать встроенную поддержку Git в IntelliJ Idea. Установите SubGit в ваш репозиторий Subversion и работайте с созданным репозиторием Git, как обычно, т.е. без git -svn вообще.

SubGit работает на стороне сервера и синхронизирует Subversion и репозитории Git при каждой входящей модификации.

Ответ 3

Для проектов на основе файлов вы можете настроить фильтр smudge.

В .git/info/attributes (или .gitattributes) добавьте строку:

/*.ipr   filter=vcs

Затем запустите следующее (я храню локальные скрипты в ~/bin, но вы можете помещать их где угодно):

git config --global filter.vcs.smudge /path/to/filter-vcs-git
git config --global filter.vcs.clean /path/to/filter-vcs-svn

Мой фильтр-vcs- git (смажьте строки vcsDirectoryMappings mapping, чтобы использовать git):

#!/bin/bash
sed 's/vcs="svn"/vcs="Git"/'

Мой фильтр-vcs-svn (очистите строки vcsDirectoryMappings mapping, чтобы использовать svn):

#!/bin/bash
sed 's/vcs="Git"/vcs="svn"/'

Это работает только в * NIX-системах с sed. Но вы также можете сделать это на окнах, установив sed и написав .bat script, чтобы сделать то же самое, что и сценарии оболочки выше. Фильтры просто берут файл из stdin, фильтруют его и накладывают отфильтрованный файл на стандартный вывод.

В следующий раз, когда вы проверите файл .ipr, он будет отфильтрован, чтобы использовать git, а когда вы его добавите (git add *.ipr), он будет очищен, так что в файле с фиксацией используется svn. Это, похоже, работает со всеми инструментами git (например, git diff), которые заставляют думать, что в этой строке ничего не изменилось.

Ответ 4

введите описание изображения здесь Вы можете использовать раскрывающееся меню VCS в диалоговом окне "Параметры контроля версий"