当前位置: 首页 > 面试题库 >

在VCS中存储.jar文件的最佳实践(SVN,Git等)

徐学潞
2023-03-14
问题内容

我知道,在Maven时代,不建议将库存储在VCS中,但是有时候这样做很有意义。

我的问题是如何最好地存储它们-
压缩还是未压缩?未压缩的文件较大,但是如果用较新的文件替换几次,则两个未压缩的.jar文件之间存储的差异可能比压缩后的差异小得多。有人做过测试吗?


问题答案:

在VCS中存储.jar文件的最佳实践(SVN,Git等):请勿。

在像SVN这样的CVCS(集中式VCS)中,它可以处理数百万个文件,无论其大小如何都是有意义的。

它不在DVCS中,尤其是像Git这样的(及其限制):

  • 二进制文件不适用于VCS。
  • 默认情况下,克隆DVCS回购将让你 所有 的历史,所有的罐子版本。这将很慢,并且会占用大量磁盘空间,而不管这些jar的压缩程度如何。
    您可以尝试浅克隆,但这是不切实际的。

使用第二个存储库(例如 Nexus )来存储这些jar,并且仅引用一个txt文件(或
Maven 项目的pom.xml文件)以获取正确的jar版本。
工件仓库更适合于[分发和发布管理目的](http://codingdict.com/questions/110315。

话虽如此,如果您 必须
将jar存储在Git存储库中,我建议最初将其以压缩格式存储(这是jar的默认格式:请参见创建JAR文件)
。压缩和未压缩格式都可以被Git视为二进制文件,但至少以压缩格式,克隆和签出将花费更少的时间。

但是,许多线程提到可以以未压缩格式存储jar的可能性:

我正在使用一些回购协议,将其定期签入50MB tarball。
我说服他们不要压缩tarball,而git在它们之间进行增量压缩方面做得相当不错(尽管这样做需要大量的RAM)。

您在这里有更多关于Git上经过修饰的对象的信息:

  • 如果您要处理二进制或文本,则没有什么区别;
  • 增量不一定与先前版本中的路径相同,因此即使添加到历史记录中的新文件也可以以限定格式存储;
    * 当使用存储在deltified表示形式中的对象时,与在压缩的基本表示形式中使用同一对象相比,它将产生更多的成本。删除机制会在考虑此成本以及空间效率的情况下进行权衡。

因此,如果克隆和检出不是您每隔5分钟必须执行的常见操作,则将jar以未压缩的格式存储在Git中会更有意义,因为:

  • Git将为这些文件压缩/计算增量
  • 您最终会在工作目录中得到未压缩的jar,然后可能会更快速地加载jar。

建议:未压缩



 类似资料:
  • 问题内容: 我的角度应用程序有2个控制器。我的问题是,当用户离开页面时,控制器不会保留数据。 如何将所选控制器上的选定数据存储到数据存储中,以便可以在其他控制器之间使用? 问题答案: 选项1-自定义 您可以利用专用的角度服务在控制器之间存储和共享数据(服务是单实例对象) 服务定义 在多个控制器中的用法 选项2-HTML5 您可以使用内置的浏览器本地存储并从任何地方存储数据 写作 读 看看这个很棒的

  • 我是Spring批处理的新手,我想找到使用用例的完美方法,如下所示: 我有多个csv文件,我想把它们存储在内存(作为集合存储...即列表地图),然后我想在我的逻辑业务的下一步/作业中使用/引用它们。 让我们举一个例子,一个对象XX和一个ItemWriter一起存储在地图上。 对象XX模型 对象X的itemReader 目标作者 正如你可以看到所有的记录都存储在地图与itemWriter,我做了一个

  • 问题内容: 可能的字段类型: 我该如何决定使用哪个? 问题答案: 如果出于性能原因,该列已建立索引并且您知道自己在做什么。 否则很好。但请确保该列使用ascii字符集。(例如)

  • 我正在寻找一个简单、安全的解决方案,使用Node存储用户密码。我是一个密码学新手,但是一直在试图通过网上搜索拼凑出一个解决方案。我正在寻找一种验证,即我所提出的是一个具有基本(而不是银行、医院等)安全需求的web应用程序的可靠解决方案。这是: …以下是我做出的选择让我走到了这一步: 使用什么哈希算法? 根据这篇被广泛引用的文章,看起来领先的竞争者是PBKDF2、bCrypt和scrypt。我选择P

  • 问题内容: 在Java桌面应用程序中存储密码的推荐方式是什么? 我希望用户只能输入一次凭证,而不会再次提示。 在个人项目中,我一直在使用Preferences API,但我假设这与以纯文本格式存储(安全方面)没有什么不同。 非常感谢 编辑: 非常感谢您的建议。毫无疑问,这似乎有些混乱,因为我可能还没有把问题弄清楚。 我将给出一个假设的情况: 假设我正在为远程数据库创建一个简单的前端,该前端使用用户

  • 问题内容: 我想知道是否存在某种“标准”用于在数据库中存储美国地址?看来这是一项常见的任务,应该有某种标准。 我正在寻找的是数据库表应如何工作和交互的 特定 模式,已经是第三种标准形式,包括数据类型(MySQL)。一个好的UML文档将起作用。 也许我只是在偷懒,但这是一个非常常见的任务,而且我确信有人发布了在某处进行此操作的有效方法。我只是不知道在哪里寻找,而Google并没有帮助。请指出我的资源