Randal Schwartz says,当他必须与SVN存储库交互时,他使用Git的SVN导入/导出功能。他从SVN中取出项目,用Git进行所有本地编辑/保存,然后完成后将更改推送回SVN存储库。对于日常使用SVN存储库而不仅仅是直接使用SVN,这真的是一个有价值的过程吗?特别是如果您的最终存储库必须是SVN。
答案 0 :(得分:4)
这是一个主观问题,但是,绝对值得。你将获得Git的所有好处,没有在本地处理Subversion的麻烦。
作为一个极端的例子,如果您在本地使用Subversion,并且意外删除了一些尚未提交的文件(例如,您可能在飞机上并且无法提交),那么您就丢失了你所有的工作。在Git上,因为你的存储库是本地的,你可以做到
git ls-files -d | xargs git checkout --
沙POW!您的文件已恢复。
答案 1 :(得分:4)
如果您不习惯在工作中私下提交您自己的私人分支机构而不会影响其他任何人,那么您还没有充分利用版本控制的强大功能。 Git让这非常简单 - 可能比任何其他VCS和方式更容易比SVN更容易。
它还使您可以自由地轻松提交与您当前正在进行的工作无关的更改(例如,您已注意到无关的错误),作为单独的提交。您执行确保您所做的每次提交仅包含相关的更改,不是吗?也许没有其他VCS能像git一样简单。过去与其他VCS的经验告诉我,开发人员通常会变得过于懒惰,并且倾向于将无关的更改放在一起......如果其中一个更改需要还原,那么这将变得很痛苦。使用git,懒惰更难以证明。您甚至可以在使用git stash --keep-index
提交更改之前单独测试更改。如果您只使用SVN等,那么功能和灵活性几乎是不可想象的。
除此之外还有所有其他git铃声和口哨声,例如:rebasing,git bisect
(在回归测试/调试过程中可能是真正的天赐之物),git send-email
(用于快速通知队友有关提交你的内容) “即将制作”,离线工作,纯粹的速度,git grep
(用于搜索版本控制的文件),git blame
(可能是最好的“责备”工具实际的可用的分支合并......我可以继续。
由于这些以及其他原因,我和我团队的其他成员使用git-svn作为SVN的前端,我无法想象以任何其他方式做到这一点......好吧,除了可能只使用git而没有任何SVN:P
答案 2 :(得分:0)
绝对!我一直在使用Git作为Subversion客户端(由于其他原因我们的主存储库是Subversion)。我得到以下好处:
git add -p
git stash
答案 3 :(得分:0)
当你被锁定在Subversion中时,git-svn完全值得。仅我认为存储功能使事情变得非常精彩。此外,你可以使用Git与你的同事分享,而不必有一个常数,如果它是非现场的,通常会慢速连接到subversion服务器。
答案 4 :(得分:0)
这正是我使用subversion的方式,因为它给了我很大的灵活性和速度。我喜欢在本地计算机上创建一大堆功能分支并将它们合并回主干而不会污染服务器的能力。
我也喜欢在将它们推回到颠覆服务器之前将提交压缩在一起的能力。这减少了我修复延迟拼写错误或添加一些评论的颠覆修订数量。当我将功能分支集成到一个提交时。因此,如果我需要删除它或回滚,我不会涉及一堆提交,想知道我实际上在哪里开始并完成它。
答案 5 :(得分:0)
有几个人正在为我们当地的SVN服务器做这件事。他们似乎认为它增加了很多价值。它允许他们切割和更改可能是问题修复,重构和基于sytle的更改的工作,即使更改同时完成,也会转换为不同的问题。
我刚刚让他们为这个目标建立了一个git repo,所以我也可以在异地工作。
此外,它更适合责备/审查时间任务。