Как переключить существующие проекты Intellij IDEA с SVN на Git SVN - PullRequest
16 голосов
/ 15 августа 2011

В настоящее время у меня есть существующие проекты 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?

Спасибо.

Ответы [ 4 ]

39 голосов
/ 15 августа 2011

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

2 голосов
/ 08 ноября 2017

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

1 голос
/ 27 июня 2013

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

В .git / info / attribute (или .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, фильтруют его и плюют отфильтрованный файл в стандартный вывод.

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

1 голос
/ 10 июля 2012

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

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

...