Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
致力于svn的第三方库:最好签入多个文件或zip?_Svn - Fatal编程技术网

致力于svn的第三方库:最好签入多个文件或zip?

致力于svn的第三方库:最好签入多个文件或zip?,svn,Svn,在将第三方库提交到源代码管理时,我通常将解压作为一个构建步骤作为归档来完成。我想这样的想法是,可能会涉及数千个文件,而且它们不需要更改,因此单独存储它们似乎会带来很大的开销 不幸的是,这种方法有时会带来麻烦,包括在进行完整构建时,开发人员必须等待解压的发生。有时依赖性检查(查看是否需要解压缩)由于任何原因都无法可靠地工作 我在网上找不到任何关于向Subversion存储库添加大量文件(在我目前正在升级的一个库中,有上万个)是否有缺点的提及。除了占用更多的空间(超过1GB,而不足250MB),还有

在将第三方库提交到源代码管理时,我通常将解压作为一个构建步骤作为归档来完成。我想这样的想法是,可能会涉及数千个文件,而且它们不需要更改,因此单独存储它们似乎会带来很大的开销

不幸的是,这种方法有时会带来麻烦,包括在进行完整构建时,开发人员必须等待解压的发生。有时依赖性检查(查看是否需要解压缩)由于任何原因都无法可靠地工作


我在网上找不到任何关于向Subversion存储库添加大量文件(在我目前正在升级的一个库中,有上万个)是否有缺点的提及。除了占用更多的空间(超过1GB,而不足250MB),还有什么原因让人们知道我不愿意将整个库作为单独的文件提交吗?

这是Java还是C,还是什么类型的开发

无论哪种方式,您都可以使用来存储第三方库,而不是源代码管理。如果是Java,请将Maven或Ant与Ivy一起使用。如果是C或C++,使用WGET或CURL获取MaxFrm文件中的第三方库。要存储它们,可以使用Maven的deploy:deploy文件将它们放入存储库。或者,如果您使用Jenkins,您可以使用Jenkin的内置功能与Maven存储库对话,为您完成契约

这有几个优点:

  • 您可以更好地跟踪版本编号。当第三方库签入存储库时,人们会忘记它是什么版本。例如,您将
    foo.so
    1.2版签入存储库。一年后,你不记得是哪个版本了。其他人决定签入新版本的
    foo.so
    。再一次,你开始失去你所拥有的一切。因为这是一个编译依赖项,所以您需要知道
  • 即使这些是自生成的第三方依赖项(您有一个构建其他项目中使用的
    foo.so
    )的项目),也最好将它们存储在像Artifactory这样的发布存储库中。同样,您可以跟踪版本控制
  • 删除过时的第三方依赖项很容易。在Subversion中,即使对文件执行
    svn rm
    ,依赖项仍保留在存储库中。节省大量磁盘空间
  • 您不必担心在构建中保存过时的第三方文件的依赖关系膨胀,因为您不知道是否需要它们。由于必须指定每个依赖项,因此开发人员更容易跟踪

我建议在标题中提及第三方或库,如果您有可能需要对第三方源代码应用补丁,那么您会犹豫。如果您这样做,并且第三方源作为单个文件签入,则更改将在“svn diff”输出中清楚显示。另一方面,如果您更改文件并签入新的.zip,svn将显示.zip已更改,但要看到.zip中的内容发生了变化并不容易。这难道不是一个犹豫是否要做相反事情的理由(即将其作为zip提交)吗?无论如何,这绝对是我考虑过的一个好处,我当然倾向于将其作为单独的文件。(实际上,这里的拉链方式的主要原因似乎是“这就是我们一直以来所做的……”,它是C++。我们尝试在提交的zip文件中包含版本号,如果提交所有文件,我也会对目录执行同样的操作。而且(我知道这是一个糟糕的原因),但是我们使用的所有其他第三方LIB都是签入的,所以对我来说,做出这些替代解决方案中的一个可能太逆势了!不过,你的观点很好。@Owen除非文件按批更改(即,你放入一组第三方库,然后再放入一组新库),否则最好一次只做一个。这样,每个人都有自己的历史。如果您一次重做所有100个第三方库,您希望这样做的唯一原因是。然后,每次进行更改时,都会得到一个很长的svn日志。如果你不想为此使用单独的发行回购协议。