4

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

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

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

4

2 回答 2

2

它工作得很好。大胆试试吧。只是不要将您的 .git 文件夹检查到 svn 中。

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

于 2009-05-22T02:34:56.490 回答
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(或 windows,取决于 svn repo 中使用的行尾)。

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

    git-svn不会扩展这些关键字,而svn会。所以你也会在那里发生冲突。同样,使用工具(或编写脚本)将所有实例转换$Id .......crap.....$为 $Id$`

于 2009-05-22T02:39:08.120 回答