去年我对颠覆上瘾了。我是唯一的开发人员,我也从事一些自己的项目。使用 SVN,管理一切真的很容易 - 而且因为它通过 HTTPS 托管在在线服务器上,所以我可以从任何地方访问我的代码。它也非常适合将代码部署到我们的生产/开发服务器。

我的观点是,它可以满足我需要它做的一切,并且从未让我失望过。

有更好的吗?我是否缺少其他产品中的某些功能,我可以使用这些功能来让我的生活更轻松?我总是致力于使用最好的软件,并且毫无问题地迁移到新技术。

我听说过GIT并且做了一些研究。我打算尝试一下,但是当我搞乱它时,是否还有其他被认为是“行业标准”的源代码控制系统,并且它们做得比 SVN 更好吗?

有帮助吗?

解决方案

Git,Mercurial和Bazaar是分布式控制系统,其运行的理念是您并不总是连接到网络,并且不需要存储库的一个中央版本。

如果您正在进行大量独立工作,有时称为“飞行模式”,就像您在飞机上而无法承诺一样,请查看Bazaar。我发现比Git或Mercurial更容易适应。

如果你一直在做与网络相关的工作,并且你是唯一的开发人员,那么你可能会坚持使用Subversion。

另外,请考虑将您的主目录保存在Subversion中的价值。

其他提示

水银

我主要使用CVS和SVN,很高兴也很满足,然后我开始研究分布式源代码控制,因为关于DSVC有很多大惊小怪。使用 DSVC 后,我注意到我的开发风格发生了变化,我变得更加流畅、适应性更强。让我可以轻松地合并回主干或实验分支。

  • Mercurial 可以从一个人的团队扩展到庞大的 OpenJDK,而不用太头疼。
  • Mercurial 很快,也许不如 GIT 快,但它仍然很快
  • Mercurial 队列是管理补丁的绝佳方式。以光亮的速度。
  • 它可以运行在不同的操作系统上,由于它基于python,所以兼容性很好。
  • 学习曲线比 GIT 低,读完一些文档后你就掌握了事情的基本要点(http://betterexplained.com/articles/intro-to-distributed-version-control-illusterated/)
  • hg 允许(许多 DSVC 也是如此)您使用 hg-svn 和 hgsubversion 与企业 SVN 源代码控制进行交互,这是一个带有允许和签出功能的出色扩展,但还没有推送或提交功能
  • 您还可以设置一个 HTTP 服务器,通过 SSH 运行推送和拉取
  • 还有一个非常巧妙的选择,可以与您的编码伙伴聚在一起,只需启动 HTTP 服务器,在本地主机上运行它,您的伙伴就可以在您进行代码冲刺时进行推拉。
  • 您还可以通过此 HTTP 页面查看项目的当前状态。
  • 最后在这里查看简单命令的简要描述(http://edong.net/2008v1/docs/dongwoo-Hg-PDF.pdf)

git

  • 试过了,它对svn的支持比mercurial好。但由于 hgsubversion 正在兴起并成为 git svn 的竞争者。

Git 很酷,但您需要不断维护源代码 depo 并重新打包它。由于它由许多 bash 脚本组成,因此在 Windows 上运行时遇到问题。但它的速度非常快,并且有许多功能供您使用。实际上,功能的数量可能是一个缺点。

BZR

  • 从未尝试过

自从开始 HG 以来我就没有回头过

我个人会留下Subversion。从专业角度来看,我看到更多的工作要求(并知道)Subversion与GIT的比较。还有很多围绕Subversion构建的开源和免费软件工具,更不用说Subversion庞大的社区了。

源代码控制并不总是关于最新和最好的,但更多的是关于尝试和真实的事情。

改变的最佳理由是必要性。但是,听起来似乎没有必要改变。你是“一个军队”所以大多数强大的功能都不适用于您的情况。是的,人们会在这方面与我争论,但他们会推动这个功能或那个你真正不需要的功能。时间就是一切,如果将来你的需求发生变化,那就改变你的解决方案。

对于问题空间总会有更好或不同的解决方案,在这种情况下是源代码控制,但是您应该平衡个人开发,流程/实践改进和交付工作产品。您可以了解有关源代码控制的不同解决方案/应用程序的更多信息,以扩展您的知识,以便及时了解切换解决方案的时间,但坚持现在可以使用的方法。

这里有 从 Subversion 切换到 git 的 3 个理由 (来自马克麦克B):

  • 无尽的、简单的、非基于文件系统的本地分支
  • 暂存临时工作
  • 公开承诺之前的协作

(阅读链接的文章,了解如何在 git 和 Subversion 中执行这三件事的完整说明和直接比较。)

我个人也会留下Subversion, 有什么更好的吗?

Subversion是一个很棒的版本控制系统,你很满意它,所以如果你看得更远,我可以建议你获得一些关于持续集成,有许多工具可以帮助您进行自动构建,使构建自我测试,检查每个提交的完整性等等。 ..

Mercurial也值得考虑;分支更友好,它可以在没有网络连接的情况下工作。在从SVN搬到Mercurial之前,我从未认真地尝试将工作分成分支。

我非常想念的一件事是TortoiseSVN;有一个相似的(TortoiseHg)非常好,但它只是不一样..

无论如何,从SVN创建一个Mercurial仓库非常容易......试一试,看看它是否适合你。

规则编号1:“永不改变正在运行的系统”

此外,由于有许多闪亮的新解决方案(对于您没有的问题,因为您单独工作),您应该考虑切换到新VCS的成本: 将subversion导入Mercurial / git并不是一件容易的事情

没有工具(AFAIK),它使用dumpformat导入svn repos。因此,如果您不使用dumpformat,您将坚持从svn签出所有分支/标签并手动/通过脚本将其添加到git / BZR / Mercurial

所以我不知道你的回购有多大(我的回购范围从20 MB到24GB),但是需要很长时间来查看整个回购甚至是小项目很多标签会占用很多硬盘空间

其他问题是迁移完成后的时间,您无法继续工作。

为了获得最好的工具,我在不断调查的问题上就像你一样。

我尝试过SVN for SOLO的工作,有人推荐我Mercurial(hg)。现在我做关于它的主题演讲。 它比Windows中的git更友好。我现在认为“为什么svn会像标签之类的简单任务一样复杂化”。 SVN不知道标签是什么。对于SVN,标签是副本。 在mercurial中,标记是修订的别名。这有多复杂?

表演这是另一个问题。在Mercurial你的回购它在你的本地机器上。所以它对于日志,差异或历史来说非常快。

虽然我对您的回购网站版本支持mercurial的服务器一无所知。

如果SVN满足您的所有需求,那么我看不出改变的原因。 如果好奇心是您寻求不同源代码控制的驱动因素,那么我建议您阅读git或其他分布式scm解决方案并尝试确定是否值得投资以便切换(我怀疑它是否适合您)。

有一句古老的洋基谚语。

如果没有损坏,请不要修复它。

绝对值得研究“分布式” VC,即使您实际上没有使用分布式工作流程。能够拥有私有分支并控制您的本地提交是值得学习git的努力。我一直主要使用git-svn(其他团队成员使用常规的SVN客户端,因此我们有一个正常的,集中的工作流程),并且它的工作非常完美。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top