Version control 如何从Metacello配置查询所有Monticello包?
我有一个Metacello配置,比如ConfigurationOfAthens,我想知道哪些软件包提供,结果是:Version control 如何从Metacello配置查询所有Monticello包?,version-control,smalltalk,pharo,monticello,Version Control,Smalltalk,Pharo,Monticello,我有一个Metacello配置,比如ConfigurationOfAthens,我想知道哪些软件包提供,结果是: 雅典开罗 雅典CairoPools 雅典核心 等等 我试过了 (GoferConfigurationReference name: 'ConfigurationOfAthens') packages. 但系统并不理解这一点 Pharo 4?中支持这一点,如果您只需要包名,可以使用助手类从配置中查询。所以你的问题是 (MTProject newFromVersion:
- 雅典开罗
- 雅典CairoPools
- 雅典核心
- 等等
(GoferConfigurationReference name: 'ConfigurationOfAthens') packages.
但系统并不理解这一点
Pharo 4?中支持这一点,如果您只需要包名,可以使用助手类从配置中查询。所以你的问题是
(MTProject
newFromVersion: (ConfigurationOfAthens project version: #development)
inConfiguration: ConfigurationOfAthens) dependenciesFilteredBy: MTPackage.
这些MT类——听起来应该属于Metacello——不在Metacello包中,但当前在Versionner中(默认情况下包含在Pharo映像中)
深入研究结果发现,一些“mtpackage”没有相应的“RPackage”(这可能是一个bug,或者包表示模型中的一些奇怪特性)。因此,您需要进一步筛选:
((MTProject
newFromVersion: (ConfigurationOfAthens project version: #development)
inConfiguration: ConfigurationOfAthens) dependenciesFilteredBy: MTPackage)
select: [ :pkgName |
(RPackageOrganizer default
packageNamed: pkgName name asSymbol
ifAbsent: []) notNil ]
并非所有MTPackage都有相应的rppackage的原因是,并非配置中的所有包都需要在映像内结束(例如,不同的平台包等)。如果您想知道将加载哪些包(不加载),则需要使用#record。