Nexus和SVN之间的区别是什么?

时间:2014-02-06 11:15:45

标签: svn nexus

SVN和Nexus在开发和集成过程中被广泛用作源代码的存储库。 也就是说,当我们可以通过SVN设置我们的存储库时,为什么我们真的需要使用Nexus?甚至SVN也有适当的版本控制模式,并广受好评。

通过谷歌浏览,但似乎没有提供明显的区别。 请澄清一下。

4 个答案:

答案 0 :(得分:11)

想象一下汽车厂。在像this这样的蓝图中,出现了像this这样的车辆。 SVN就像存放蓝图的文件柜,而Nexus就像存放成品的仓库。

现在输入和输出之间应该存在一对一的关联。但是,让我们说你改变了工厂本身的环境。然后,即使您使用相同的蓝图,成品也可能出现不同或错误。

因此,作为一般规则,最好尽可能使用Nexus的成品,并且已经过质量测试。

希望有所帮助。

答案 1 :(得分:5)

您可以将所有内容存储在subversion中。 subversion checkout将在某个时间点捕获您的文件系统。在我看来,这种方法有两个主要问题

  1. SCM系统通常用于存储文本数据
  2. 在SCM中存储版本会在软件构建方式与部署方式之间产生紧密联系。
  3. Subversion是极少数具有二进制文件存储有效机制的SCM系统之一,但对我而言,交易破坏者正在使用SCM进行部署。我见过开发团队无法从CVS和Subversion等工具升级,因为直接或间接需要这些工具来在客户站点上发布和安装软件。

    虽然我们可能会在某个时间点标记源代码,但最重要的是保留已发送给客户的二进制文件的副本。相同的源代码很少创建完全相同的二进制输出。例如,元数据文件可能包含构建日期,从而导致zip / tar存档具有相同的功能结果,但具有不同的校验和。校验和对于审计部署非常重要,可以证明正确的文件是分发的,有时也可以对发布版本进行逆向工程。

    我提供了许多关于此主题的博客文章,而不是继续喜欢的咆哮:

答案 2 :(得分:3)

Subversion是源代码管理。您可以从那里签入和签出源文件,它可以区分基于文本的源文件,允许您在整个版本中分割标记和分支。

Nexus通常用于jar分发。您可以存储工件,但它们通常是经过编译的,与Subversion不同,您最终可以用较新的工件替换旧工件,并且无法跟踪更改。

您可以将Subversion用于源代码控制,然后将Nexus用于其最初目的:将已编译的Jar文件存储在本地Maven存储库中。

你能在Subversion中存储jar文件吗?当然可以,但它能带给你什么? Jar文件占用了大量空间,您无法轻易地看到从一个文件到另一个文件的更改。相反,他们占用了大量的空间。罐子占据Subversion存储库的80%到90%并不罕见。

这就是为什么我们使用像Nexus这样的东西来存储我们的罐子,然后在我们进行编译时使用Maven或Ant和Ivy来获取它们。

答案 3 :(得分:0)

它们都被广泛使用,它们都是存储库......但是svn是源代码的存储库,其中nexus是工件的存储库(像jar这样的二进制文件)。他们是非常免费的系统。