基本上我们有一个Python库,其中包含我们在许多程序中使用的模块和函数。目前,我们将SVN存储库直接签入 C:\ Python27 \ Lib ,以便该库位于Python路径中。当有人对库进行修改时,每个人都会更新以获得这些修改。
我们的一些程序被冻结(使用cx-Freeze)并已交付,因此我们必须跟踪交付中使用的库版本,但cx-Freeze会自动打包代码中导入的模块。
我不认为依靠人们验证他们在库中没有未提交的本地更改或者在冻结任何导入它的程序之前它们是最新的是一个好主意。
我们唯一的版本跟踪是库存储库的提交编号,它没有链接到程序交付版本的任何地方,在我看来不应该用作库的交付版本。< / p>
我正在考虑使用setup.py来构建该库的特定版本的分发,然后在导入它的程序的项目文件夹中的requirements.txt文件中指明该版本,但是如果它变得复杂,我们想对该库进行修改,因为每次我们要测试它时都必须构建和安装一个发行版。它并不复杂,但我认为有人会冻结一个带有该库测试版本的程序,它又回到了开始......
我一直在寻找针对特定案例的最佳做法,但我什么也没找到,有什么想法吗?
答案 0 :(得分:0)
最终,您必须相信您的用户才能遵循您建立的开发流程。您可以创建工具来简化这一过程,但您总是会有一些信任。
对许多人有帮助的事情包括:
可执行文件的所有冻结/发布版本都是由BuildBot或Jenkins等内核机器构建的,而不是由个别开发人员构建的。这为您提供了一个中心点,可以确保构建从干净的结账处发货。
如果存在未提交的更改,请提供执行构建和错误输出的脚本。
尽可能将PYTHONPATH
指向您的发行版的源代码树,并且即使有setup.py
可以构建分发,也可以使事情有效。这使测试更容易。与往常一样,请确保用于构建发布版本的工具检查此项并在发生时失败。
我个人认为,对于封闭源应用程序中包含的库,分发对于清晰标记的subversion结帐具有很大的价值。 你可以采取任何一种方法,但我认为你会发现关键在于你选择哪种方法都有良好的自动化,而不是分配与颠覆结账的答案