Как переключить существующие проекты 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 путается, и она не знает, как подключиться к любым репозиториям прямо сейчас.

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

  • создать новый проект (пустой проект) в репозитории 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?

спасибо.

4 ответов


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


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

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


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

In .git / info / атрибуты (или .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. Но вы должны быть в состоянии сделать это и на windows, установив sed и написав .bat скрипт, чтобы сделать то же самое как выше скриптов. Фильтры просто берут файл из фильтра stdin и выплевывают отфильтрованный файл в stdout.

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


enter image description here Вы можете использовать выпадающее меню VCS в диалоговом окне настроек управления версиями