如何在SVN + Visual Studio环境中本地使用Git

时间:2009-05-22 01:58:41

标签: visual-studio svn git git-svn

我一直在家里玩git,我非常喜欢本地提交的想法。能够提交较小的更改而不会将我可能损坏的代码传播给每个人是很好的,并且由于更频繁的提交,能够恢复较小的更改。

我一直在阅读git-svn命令,但我不确定我是否完全理解它是如何工作的。我们处理Visual Studio 2008项目,并运行VisualSVN,它处理文件重命名,移动以及IDE中的所有内容。

我想知道的是:我是否可以提交到本地git存储库,还可以提交到远程SVN存储库?我想在IDE中保持VisualSVN更改跟踪和提交,但也能够使用git临时存储更改。他们是否可能互相帮助?

2 个答案:

答案 0 :(得分:2)

它很漂亮。去吧。只是不要将.git文件夹检查为svn。

编辑:嗯,当我这样做时,我不打扰git-svn。我只是将svn的本地工作目录视为任何其他目录,我倾向于不关心以前的SVN历史。

答案 1 :(得分:1)

我已经使用git-svn来保持远程存储库的“更新”,但是没有使用它来提交到svn存储库,所以我无法帮助你解决这个问题。

您所做的很简单,所有设置均默认为:

>git svn init <url......>
>git svn fetch

当你这样做时,它会将它提取到名为“git-svn”的“远程”分支。 要将其与当前分支合并:

>git merge git-svn

如果您在事实之后使用git-svn ,则可能会遇到一些问题。我的意思是:你已经使用svn签出了项目,然后你还在你的本地工作svn目录中创建了一个git仓库。然后你就可以使用git-svn了。

我必须处理两个问题:

  1. 行结尾。 svn可能会将行结尾转换为窗口,而git-svn会将它们保存为unix样式。因此,由于行结束差异,您可能会遇到大量冲突。

    所以可以肯定的是,使用工具将所有文件的行结尾转换为unix(或窗口,具体取决于svn repo中使用的行结尾)。

  2. svn关键字扩展。例如$Id$

    git-svn不会展开这些关键字,而svn则会。所以你也会遇到冲突。再次,使用一个工具(或编写一个脚本)将$Id .......crap.....$的所有实例转换为$ Id $`