38

我主要是一名 Java EE 开发人员。我被要求探索在即将到来的网络项目中使用 Smalltalk / Seaside 的可能性。可以想象,这导致了许多有趣的问题。

开发人员团队如何使用 Smalltalk / Seaside 实现软件版本控制和修订控制。你可以使用 Subversion 或 Git 吗?

据我了解,Smalltalk 使用图像而不是将每个类保存到自己的文件中。这对管理源代码修订的能力有何影响,尤其是在整个团队中?

非常感谢您提供的任何见解!

4

6 回答 6

43

Pharo(和Gemstone)的设置

每个开发人员都按照自己的形象工作。他对方法所做的每一次更改都保存在本地更改文件中。这允许在图像崩溃时恢复。提交是通过创建一个monticello文件进行的,该文件具有包名称、序列号和开发人员的名称。它知道它的祖先。此文件保存到WebDAV服务器。在这里,它被Jenkins 任务拾取。这将运行单元和集成测试并创建新图像,因此开发人员可以(至少)每天从一个新图像开始。以下是有关使用 monticello进行合并的一些详细信息。产品组成(包结构)是另一个包含 metacello 的 monticello文件描述。这也允许人们在 Pharo 上开发并在 Gemstone 上部署。有时您需要添加类迁移。

对于非 smalltalk 依赖和开发、测试验收和生产差异,添加使用vagrantchef-solo(或puppet,希望很快Coral)、veewee创建 virtualbox 图像。它们当然是使用 git 进行版本管理的。

除了使用静态代码质量控制工具(smallLint,还检查 smalltalk 方言之间的差异)之外,添加Moose并创建您自己的上下文相关的项目动态可视化(人性化评估)

VisualWorks Smalltalk 中,本地开发人员使用 STORE 和关系数据库(例如 PostgreSQL)来存储本地提交。代码以包的形式组织,带有命名空间。复制脚本用于将本地版本复制到中央数据库或从中央数据库复制。从那里开始,流程与 Pharo 设置相同。

[更新] 在 Esug2012 上,Dale Henrichs 展示了使使用 git 和 github 管理多种方言的 smalltalk 代码成为可能的工作。基本上,定义了一个文件结构(Cypress用于 Amber、Gemstone、Pharo、Squeak、VisualAge、STIG用于 VisualWorks)以将 smalltalk 方法存储在目录中。这目前更多地针对方言之间的代码交换,而不是作为本地 SCM 的替代品。

于 2011-11-23T16:31:24.623 回答
13

简短的回答:你不能(现在)使用 Git 或 Subversion。

更短的答案:你不需要它:)

大答案:参见 Stephan 关于如何创建 Pharo 的解释 :)) 当然,如果您习惯于基于文件的系统,这在第一次实例中会很奇怪,但是一旦您开始工作,您就会意识到您拥有所有版本控制(monticello – 这是 Git/Subversion 的替代品)和创建复杂安装所需的工具(metacello – 这是 maven 之类的替代品)。通过一些工作(一如既往,使用您选择的任何平台),您可以设置自己的持续集成服务器(jenkins 或 hudson 或其他),很快您将像在其他环境中一样团队工作,但有一个很大的优势:您将正在开发 Seaside/Smalltalk :P

编辑:这是一个非常古老的答案,并且已经过去了很多时间。从那时起,Pharo 已经发展,这不再是真的,因为您与提供所需一切的 Git(命名为冰山)进行了良好的集成,并且大多数基于 pharo 的项目现在都在它上面(以及 pharo 本身,请参阅https:// github.com/pharo-project/pharo )

于 2011-11-23T17:34:02.647 回答
7

有一些用于 Svn/Git 的工具,但恕我直言,最好在这里顺其自然并使用 Monticello,因为 Monticello 为您提供与 git 非常相似的体验,但使用起来更简单,并且与“Smalltalk 方式”的集成度更高”。

您没有指定使用哪个 Smalltalk,但如果您要使用 Pharo,它绝对是 Monticello(当事情变得复杂时 - 最重要的是 Metacello)。

于 2011-11-24T09:00:53.737 回答
5

Smalltalk 有自己的打包/版本控制系统,源代码包在其中受到控制、拆分、合并等。您打算使用哪些 Smalltalk 方言?Pharo 有 Monticello 和 Metacello,Squeak 有 Monticello,VisualWorks 有 STORE。

于 2011-11-23T15:17:22.810 回答
5

Smalltalk 中的开发通常更有效率——但您必须首先了解新工具:用于打包的 Monticello/Metacello(将其视为在每次提交时将包保存在自己的带有 mcz 扩展名和自己的版本号的 ZIP 文件中)。Metacello 提供了将 Monticello 包组合在一起的信息,并且应该加载以提供完整的工作应用程序(类似于 Maven 中的 POM,但在特定的类文件 ConfigurationOfXXX 中,其中 XXX 是组件名称)。你不需要像 subversion 这样的非 Smalltalk 版本控制工具,除非你想管理图片或数据库脚本等外部资源。

另请查看 Hudson/Jenking 集成,因为这也将帮助您自动化图像构建和持续集成。

于 2011-11-24T05:49:40.337 回答
1

VA SmalltalkEnvy

无论您选择哪个 Smalltalk,我想您都会非常喜欢 Seaside。

于 2011-11-23T16:54:34.433 回答