首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于单个开发人员来说,从SVN到Git值得吗?

对于单个开发人员来说,从SVN到Git值得吗?
EN

Stack Overflow用户
提问于 2009-05-29 18:43:48
回答 11查看 9.3K关注 0票数 25

--这个线程很可能在2013年就过时了--

当存储库主要由单个开发人员访问时,是否值得从SVN访问GIT?我有几台用于开发的机器,而不是主要在C#中开发的。但是我的存储库中包含了VB、VB.Net、PHP、C#、C++、HTML、批处理、BASH等多种语言。如果有的话,从SVN迁移到GIT会得到什么好处呢?现在,将TortoiseSVN + VisualSVN服务器与一组中央存储库和几台客户端计算机一起使用。虽然我允许一些朋友访问我的存储库,但他们并不经常更新或提交(如果有的话)。

还有一种方法可以让我在VisualSVN服务器+ TortiseSVN中使用Git获得灵活性和易于维护性吗?

(我会咬.对于单个开发人员/小组来说,还有什么其他平台和诡计是有吸引力的?)

请列出Pros和Cons不只是片面的意见。

目前的工具链..。VisualSVN 2008 (C#/VB.Net) + TortoiseSVN +VisualSVN

主要焦点..。XNA游戏,WCF/Socket服务,Web开发

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-05-29 19:42:15

除了已经说过的话,如果您是一个单独的开发人员,并且没有经历过SVN方面的麻烦,我认为没有理由切换。svnserve (守护进程)在本地工作正常(我有OS )。

与Git工具TortoiseSVN…相比,…是一件好事。你有什么特别的理由想远离颠覆吗?

票数 15
EN

Stack Overflow用户

发布于 2009-05-29 19:07:03

我可以给你三个好处:

  1. 您可以拥有多个备份存储库。Git不是集中式的,所以您可以在您正在工作的任何机器上保持您的回购,并将更改推送到任何备份位置。我把我的记录保存在github和其他两个地点。
  2. 分支,合并,重基,修改提交,git均分。仅仅因为您是一个开发人员,就没有理由不使用最好的工具。
  3. git-svn -你可以在你做决定的同时,在你的颠覆版本恢复的同时尝试它。

这有一个缺点,那就是Windows上可用的可视化工具并不像其他平台上的工具那样友好。

票数 23
EN

Stack Overflow用户

发布于 2009-05-29 19:41:57

是的,当然。

你误解了git是什么。我是说,你为什么会认为它只对团队有用?

如果您是一个单独的开发人员,git就更值得了。

优点:

  • svn要求服务器在后台运行。另一方面,git是一个简单的实用程序,您只需像运行grepls或任何其他简单的命令行实用程序一样运行它。您不需要设置任何服务器或类似的东西。
  • .git文件夹是整个存储库,您可以随身携带它在任何地方(例如,在USB上),并且它总是有您的回购。你的整个回购,连同它的历史,以及其他的一切,实际上都压缩得很好,所以它不会占用太多的空间。(提示:这就是git不需要服务器的原因;当您运行git命令时,git只会更改.git文件夹的内部)。
  • 分支和合并非常容易。您可以在单独的分支上处理实验性的新特性,并且只有在其稳定时才能进行合并。同时,您可以在主分支上进行维护工作(例如,bug修复),同时可以轻松地将主分支中的bug修复合并到您的实验性(主题)分支中。
  • 这一点是主观的,但我发现这比svn容易得多。我尝试了一段时间使用svn,但发现它太复杂了,而且经常妨碍我(我不太记得什么是什么,为什么,我只知道这不是一次愉快的经历)。例如,重命名文件不是问题。您可以重命名文件,git不会大惊小怪,它只是不关心文件名。唯一的问题是,您必须记住在重命名它之后添加它,就好像您创建了一个新文件。

缺点:

  • 视觉工具不多。有个鬼鬼祟祟的,不错,(我用得不多),但你不想依赖它。您需要习惯于从命令行使用它。如果你习惯了使用svn的可视化工具,这可能是个骗局,但在我看来,这里唯一的缺点是,你必须走出舒适的区域去学习它;但相信我,这是值得的。
  • 在windows上行结束可能存在一些问题,如果您是唯一的开发人员,这并不是什么大问题,但是如果您是在windows上开发的,而其他的是在linux上开发的,您需要确保所有文件都使用unix样式的行结束,而不是windows,以避免任何问题。
  • 由于缺乏可视化工具,解决冲突(当它们出现时)可能会给一些人带来麻烦。我个人使用WinMerge,并在每个冲突文件上调用winmergeu <conflictfile>命令来解决冲突。(注意: WinMerge不是命令行合并工具,而是带有普通gui的可视化合并工具)。
  • 这就引出了另一个问题。虽然git的启动非常容易,但对于以后出现的问题(如解决冲突),可能会有一些学习曲线。如果您不分支和合并,那么您甚至不会遇到冲突,但您也将失去一个非常强大的功能。

更新:

我没注意到你在几台不同的机器上工作。

这没有什么区别,只要在切换到另一台机器时记住推拉,但是已经用svn: commit/update完成了。

你将获得分支/合并的能力。别低估这种力量。

有多少次你想要实现一些疯狂的想法,但却从来不敢去做,因为你不想搞糟你的代码?吉特能让你摆脱这些忧虑。只需在一个分支中完成它,如果它成功了,将它合并到主分支,如果没有,删除这个分支并忘记它。

当然,您可能会说,您可以对svn revert做同样的事情,在您开始疯狂的想法之前,可以返回到修订版。但是,如果您在此期间应用了bug修复,又会如何呢?如果你恢复你的疯狂想法,你将失去所有的错误修复/维护工作,你做的实验,你的疯狂的想法。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/927515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档