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