如何将现有的Intellij IDEA项目从SVN切换到Git SVN

时间:2011-08-15 18:43:10

标签: git svn intellij-idea git-svn

我目前已经存在与SVN存储库绑定的Intellij IDEA项目。我正在考虑将这些项目切换为使用Git SVN,因为当我没有连接到SVN存储库时,我发现需要有一个本地版本控制系统。

由于Intellij IDEA不提供Git SVN网桥,我从命令行运行以下命令将SVN存储库克隆到Git: -

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

克隆SVN存储库后,我使用Intellij IDEA打开基于Git的项目。此时,Intellij IDEA抱怨缺少版本控制目录。我发现Intellij IDEA仍然记得旧的SVN配置。由于项目现在包含.git目录而不是.svn目录,因此Intellij IDEA会感到困惑,并且它现在不知道如何连接到任何存储库。

对我有用的唯一解决方法是执行以下操作: -

  • 在SVN存储库中创建一个全新的项目(空项目)。
  • 执行“git svn clone”。
  • 使用Intellij创建项目。
  • 此时,Intellij IDEA会检测.git目录,并提示我是否要将新创建的文件添加到Git中。
  • 将所有内容从基于SVN的项目复制到基于Git的项目。

那就是说,我不能在一台机器上运行这个Intellij IDEA项目的Git,同时在另一台机器上的这个Intellij IDEA项目上使用SVN。两台机器都必须使用Git,否则Intellij IDEA将无法提交到版本控制存储库。我很好,我可以在我的所有机器上使用Git。但是,我正试图找到一种方法,不为我现有的基于SVN的项目创建全新的基于Git的项目。这非常繁琐,因为我现在需要使用Git运行很多SVN项目。

使用Intellij IDEA将我的SVN项目切换到Git是否有更好的解决方案?

感谢。

4 个答案:

答案 0 :(得分:39)

您可以从File | Settings | Version Control为当前项目选择版本控制系统。该设置存储在其中一个项目文件(.idea/vcs.xml)中,因此如果您不将该文件提交到版本控制,则可以在不同的计算机上使用不同的版本控制系统。

答案 1 :(得分:2)

enter image description here 您可以使用“版本控制设置”对话框中的“VCS”下拉菜单

答案 2 :(得分:1)

顺便说一句,你可以在IntelliJ Idea中使用内置的Git支持。将SubGit安装到Subversion存储库中,并且通常使用创建的Git存储库,即根本没有git-svn。

SubGit在服务器端工作,并在每次传入修改时同步Subversion和Git存储库。

答案 3 :(得分:1)

对于基于文件的项目,您可以设置涂抹过滤器。

在.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

我的filter-vcs-git(涂抹vcsDirectoryMappings mapping行以使用git):

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

我的filter-vcs-svn(清理vcsDirectoryMappings mapping行以使用svn):

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

这仅适用于带有sed的* NIX系统。但是你也可以通过安装sed并编写一个.bat脚本来执行与上面的shell脚本相同的操作。过滤器只是从stdin中获取文件,然后将过滤后的文件吐出到stdout。

下次签出.ipr文件时,它将被过滤以使用git,当您添加它(git add *.ipr)时,它将被清除,以便提交的文件使用{{1} }。这似乎与所有git工具(如svn)干净利落地工作,这些工具被认为在该行上没有任何变化。