如何自动将几个Monticello提交从本地存储库复制到Smalltalkhub.com?

时间:2013-07-03 17:52:38

标签: version-control smalltalk pharo monticello

我在白天将多个版本的Monticello软件包提交到​​磁盘上的本地存储库。

稍后我想将本地存储库与Smalltalkhub.com存储库同步。

目前,我使用Monticello浏览器将本地提交逐个手动复制到Smalltalkhub存储库。

如何自动执行此任务?

2 个答案:

答案 0 :(得分:5)

在“深入pharo”新书中的Gofer章节(示例2中的pharo - http://rmod.lille.inria.fr/pbe2/。)我详细介绍了Gofer。特别是我提出了一些在存储库之间迁移的方法 Gofer的默认设置是获取和拉取,基于您可以轻松构建同步。

例如,如果您使用Smalltalk hub

Gofer new
  smalltalkhubUser: 'PharoBooks' project: 'GoferExample'; 
  package: 'PBE2GoferExample';
  package: 'PBE2GoferExampleSecondPackage';
  push.
Gofer new
  smalltalkhubUser: 'PharoBooks' project: 'GoferExample'; 
  package: 'PBE2GoferExample';
  package: 'PBE2GoferExampleSecondPackage';
  fetch

您还可以获得以下信息

((Gofer new
  smalltalkhubUser: 'Pharo' project: 'NativeBoost'; allResolved)
     groupedBy: [ :each | each packageName])

现在您也可以迁移

 | go |
 go := Gofer new squeaksource3: 'Pharo20'. 
 go allResolved
    do: [ :each | self crLog: each packageName. 
        go package: each packageName;
        fetch]

然后,一旦获得本地目录中的文件,就可以推送到另一个存储库。

  | go |
  go := Gofer new.
  go repository: (MCHttpRepository
                   location: 'http://ss3.gemtalksystems.com/ss/rb-pharo' 
                   user: 'pharoUser' 
                   password: 'pharoPwd').
  (((FileSystem disk workingDirectory / 'package-cache') allFiles 
       select: [:each | '*.mcz' match: each basename])
                    groupedBy: [:each | (each base copyUpToLast: $-) ]) keys 
                                            do: [:name | go package: name; push]

答案 1 :(得分:2)

您可以使用Gofer自动执行蒙蒂塞洛任务。

 Gofer new
   package: 'MyProject-Core';
   package: 'MyProject-Tests';
   url: 'http://smalltalkhub.com/mc/USER/MyProject/main/' username: 'USER' password: '***';
   push.