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

Subversion中二进制文件的替代

梁丘佑运
2023-03-14
问题内容

我的一些同事相信,将构建工件提交到Subversion存储库是一个好主意。争论在于通过这种方式,在测试机器上的安装和更新很容易-只需“向上”!

我敢肯定,有人反对这种不良做法,但我能想到的只是la脚的,例如“占用更多空间”。什么是最好的杀手级理由不这样做?而我们应该采取哪些其他方法呢?

如果这有所不同,则用于Java代码。一切都是从Eclipse编译的(没有自动PDE构建)。

当我说添加构建工件时,我的意思是提交将如下所示:

"Added the new Whizbang feature"

 M src/foo/bar/Foo.java
 M bin/Foo.jar

每个代码更改都有相应的生成的jar文件


问题答案:

在我看来,代码存储库应仅包含源代码以及编译该源代码所需的第三方库(在构建过程中也可以使用某些依赖项管理工具来检索第三方库)。生成的二进制文件不应与源代码一起检入。

我认为您遇到的问题是您没有适当的构建脚本。这就是为什么从源代码构建二进制文件会涉及诸如启动eclipse,导入项目,调整类路径等工作的原因。

如果有构建脚本,则可以使用以下命令来获取二进制文件:

svn update; ant dist

我认为不随源检入二进制文件的最重要原因是存储库的大小。这将导致:

  • 版本库系统服务器上的存储库更大,空间可能太少
  • 版本控制系统服务器和客户端之间的流量很大
  • 更新时间更长(想象您从互联网上进行了SVN更新…)

另一个原因可能是:

  • 源代码很容易比较,因此版本控制系统的许多功能确实有意义。但是您无法轻松比较二进制文件…

我认为您如上所述的方法也会带来很多开销。如果开发人员忘记更新相应的jar文件怎么办?



 类似资料:
  • 使用称为二进制的数据结构来存储大量原始数据。 二进制文件以比列表或元组更加节省空间的方式存储数据,并且运行时系统针对二进制文件的有效输入和输出进行了优化。 二进制文件以整数或字符串的顺序编写和打印,用小于或大于括号的双精度括起来。 以下是Erlang中二进制文件的示例 - 例子 (Example) -module(helloworld). -export([start/0]). start()

  • 有的时候,需要将对代码的改动以补丁文件的方式进行传递,最终合并入版本库。例如直接在软件部署目录内进行改动,再将改动传送到开发平台。或者是因为在某个开源软件的官方版本库中没有提交权限,需要将自己的改动以补丁文件的方式提供给官方。 关于补丁文件的格式,补丁的生成和应用在第3篇第20章“补丁文件交互”当中已经进行了介绍,使用的是git format-patch和git am命令,但这两个命令仅对Git库

  • 下面是一个上传二进制文件的例子,WebService类的代码如下: package service; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import javax.activation.DataHandler; public class 

  • 一个插件是一个简单的实现了插件接口的类.Gradle提供的核心插件作为其分布的一部分,因此,你需要做的仅仅是应用上述的插件.然而,非核心二进制插件需要到构建类路径才能应用它们.这可以以多种方式,包括以下方式实现: 定义插件作为构建脚本中内嵌类的声明. 定义插件为在项目中buildSrc目录下的一个源文件.(参见Section 62.4, “Build sources in the buildSrc

  • 问题内容: 我有一个带有二进制数据的字符串(1110100),我想取出文本以便可以打印它(1110100将打印“ t”)。我尝试了这一点,它类似于我用来将文本转换为二进制的东西,但是根本不起作用: 任何更正或建议将不胜感激。 问题答案: 你可以使用基数2(二进制)将二进制字符串转换为整数: 然后,如果你希望将相应的字符作为字符串:

  • 问题内容: 请告诉我最好/最快的方法: 1)将很小的二进制文件加载到内存中。例如图标; 2)加载/读取大小为512Mb +的非常大的二进制文件。也许我必须使用内存映射的IO? 3)当您不想考虑大小/速度而只能做的事情时,通常选择:将所有字节读入内存? 谢谢!!! 问题答案: 对于内存映射文件,java有一个nio包:Memory Mapped Files 检出小文件的字节流类:字节流 检出较大文件