Git作为常规工作流导入/导出到SVN?

Git作为常规工作流导入/导出到SVN?,svn,git,workflow,Svn,Git,Workflow,Randal Schwartz说,当他必须与SVN存储库交互时,他使用Git的SVN导入/导出功能。他从SVN中提取项目,使用Git进行所有本地编辑/保存,然后在完成后将更改推回到SVN存储库。这真的是一个值得日常使用的SVN存储库过程,而不仅仅是直接使用SVN吗?尤其是当您的最终存储库必须是SVN时。绝对!我在工作中一直使用Git作为Subversion客户端(因为其他原因,我们的主存储库是Subversion)。我得到以下好处: 轻量级局部分支 git add-p git隐藏 能够与同样以

Randal Schwartz说,当他必须与SVN存储库交互时,他使用Git的SVN导入/导出功能。他从SVN中提取项目,使用Git进行所有本地编辑/保存,然后在完成后将更改推回到SVN存储库。这真的是一个值得日常使用的SVN存储库过程,而不仅仅是直接使用SVN吗?尤其是当您的最终存储库必须是SVN时。

绝对!我在工作中一直使用Git作为Subversion客户端(因为其他原因,我们的主存储库是Subversion)。我得到以下好处:

  • 轻量级局部分支
  • git add-p
  • git隐藏
  • 能够与同样以这种方式使用Git的同事共享补丁甚至分支(在提交Subversion之前)
  • 可在本地搜索的完整存储库(fast!)

    • 这是一个主观的问题,但是是的,这绝对是值得的。您将获得Git的所有好处,而无需在本地处理颠覆

      作为一个极端的例子,如果您在本地使用Subversion,并且意外地删除了一些尚未提交的文件(例如,可能您在一个平面上,无法提交),那么您就丢失了所有的工作。在Git上,因为您的存储库是本地的,所以您只需

      git ls-files -d | xargs git checkout --
      

      沙波!您的文件将被还原。

      当您被锁定到Subversion时,git svn是完全值得的。我认为单是隐藏功能就让事情变得非常美妙。此外,您可以使用Git与同事共享,而不必与subversion服务器建立恒定的连接,如果是异地连接,则连接速度通常会很慢

      这正是我使用subversion的方式,因为它给了我很大的灵活性和速度。我喜欢在本地机器上创建一大堆功能分支,并将它们合并回主干中,而不会污染服务器


      我还喜欢在将提交推回到subversion服务器之前将其压缩在一起的功能。这减少了subversion版本的数量,我可以修复延迟的打字错误或添加一些注释。当我集成一个功能分支时,它只是一个提交。因此,如果我需要删除它或回滚,我不会费力地通过一堆提交,想知道我实际上从哪里开始和完成它。

      有几个人在工作,他们也对我们本地的SVN服务器这样做。他们似乎认为这会增加很多价值。它允许他们将可能是问题修复、重构和基于sytle的更改的混合工作分割和更改为不同的问题,即使这些更改是同时进行的

      我刚刚让他们建立了一个git回购协议,所以我也可以在场外工作


      此外,这对于责备/检查时间任务来说是更好的方式。

      如果你没有习惯于在自己的私人分支机构中对自己的工作进行私人提交,而不影响其他人,那么你就没有充分利用版本控制的力量。Git让这一切变得超级简单——可能比任何其他风投都简单,而且比SVN更简单

      它还允许您轻松地将与当前正在做的工作无关的更改(例如,您注意到一个无关的bug)作为单独的提交提交。您确实确保您所做的每个提交只包含相关的更改,不是吗?也许没有其他风投能像git那样简单。过去与其他VCSE的经验告诉我,开发人员通常会变得太懒,倾向于一起提交不相关的更改。。。如果其中一个更改需要恢复,则会变得很痛苦。有了git,懒惰是很难证明的。您甚至可以在提交更改之前使用
      git stash--keep index
      单独测试更改。如果您只使用过SVN或类似的工具,那么像这样的功能和灵活性几乎是无法想象的

      再加上git的所有其他功能,比如:重定基址、
      git对分
      (在回归测试/调试过程中可能真是天赐良机)、
      git发送电子邮件
      (用于快速通知队友您将要做出的承诺)、离线工作、纯粹的速度、
      git grep
      (用于搜索受版本控制的文件),
      git dull
      (可能是最好的“dull”工具),实际可用的分支合并…我可以继续下去


      我和我团队的一些其他成员出于这些和其他原因使用git svn作为svn的前端,我无法想象用其他任何方式来实现它……好吧,除了可能只使用git而不使用任何svn:p

      谢谢大家的回答。这肯定是我自己的工作流程中需要检查的东西。是的,一定要在private branche中工作s、 但是从SVN private branch->git将为您提供私有分支的私有本地分支,而不会弄乱SVN。这就是使用git而不是SVN进行分支的全部意义。您的私有git分支只需要被您看到。当您使用完它们后,您可以简单地删除它们,而不会弄乱SVN他/分支SVN中的名称空间。您需要小心共享,就像git SVN不能很好地处理多个联系点返回SVN一样