4

我们需要在多个不同位置的许多开发人员之间定期同步数十个二进制文件(项目可执行文件和 DLL),以便每个开发人员都有一个最新的环境来构建和测试。由于项目的性质,必须经常和按需进行更新(隔夜更新是不够的)。这并不漂亮,但我们坚持了一段时间。

我们决定使用常规版本(源代码)控制系统:将所有内容作为二进制文件放入其中,在测试前获取最新版本,并在测试后签入更新的 DLL。

它工作得很好,但是版本控制客户端有很多对我们没有意义的功能,人们有时会感到困惑。

有没有更适合这项任务的工具?或者可能是一种完全不同的方法?

更新:

我需要澄清一下,它不是一个紧密集成的项目——更像是具有大量“插件”的可扩展系统,包括第三方插件。我们需要确保这些模块插件能够很好地与彼此的最新版本和核心一起工作。最初考虑了建议的集中构建,但这不是一个选项。

4

6 回答 6

4

我可能会看看rsync。

只需创建一个 .CMD 文件,其中包含对 rsync 的调用以及所有正确的参数,然后让人们调用它。rsync 在决定需要传输文件的哪一部分时非常聪明,因此即使涉及大文件,它也会非常快。

rsync 不做的是解决冲突(甚至检测),但在您描述的场景中,它更像是从 rsync 旨在处理的中心位置读取。

于 2008-09-12T08:56:07.893 回答
3

另一种选择是统一

于 2008-09-16T05:24:00.647 回答
1

您应该研究持续集成并拥有某种集中的构建过程。我只能想象你目前的方法正在经历的那种地狱。

显然,这无助于保持本地文件同步,但我认为您的流程存在更大的问题。

于 2008-09-12T08:55:44.603 回答
0

Subversion handles binary files really well, is pretty fast, and scriptable. VisualSVN and TortoiseSVN make dealing with Subversion very easy too.

You could set up a folder that's checked out from Subversion with all your binary files (that all developers can push and update to) then just type "svn update" at the command line, or use TortoiseSVN: right click on the folder, click "SVN Update" and it'll update all the files and tell you what's changed.

于 2008-09-16T05:19:18.693 回答
0

构建项目应该是一个集中的过程,以便尽快进行更好的控制,从长远来看,您的解决方案将是 caos。无论如何,这就是我要做的。

  • 为每个项目创建源文件、资源、文档等的常用存储库。
  • 为资源创建一个存储库。每个项目都将有最新的二进制版本以及任何所需的资源、文件等。为每个项目保持良好的文件夹结构,以便开发人员可以直接“引用”文件。
  • 为最终的构建创建一个存储库,它将保存实际的稳定版本。这将获得稳定的文件,以自动方式(如果可能)从签入的源中完成。这将包含真实的产品、用于集成测试的真实版本等。

虽然远非完美,但您将能够定义完善的协议。在此处签入您的最新 dll,在此处从最新源生成“真实”版本。

于 2008-09-12T09:46:48.303 回答
0

在可执行文件和库中嵌入“what”字符串怎么样?然后,您可以将所需的版本列表与清单同步。

我们倾向于使用 CVS id 字符串作为 what 字符串的一部分。

const char cvsid[] = "@(#)INETOPS_filter_ip_$Revision: 1.9 $";

输入命令

what filter_ip | grep INETOPS

返回

INETOPS_filter_ip_$Revision: 1.9 $

我们对所有可交付成果执行此操作,以便我们可以查看库和可执行文件包中的版本是否与关联清单中的列表匹配。

HTH。

干杯,

于 2008-09-12T09:48:10.670 回答