Как автоматически скопировать несколько коммитов Монтичелло из локального репозитория на Smalltalkhub.com?

В течение дня я фиксирую несколько версий пакетов Monticello в локальном хранилище на моем диске.

Позже я хочу синхронизировать локальный репозиторий с репозиторием Smalltalkhub.com.

В данный момент я копирую локальные коммиты вручную по одному в репозиторий Smalltalkhub с помощью браузера Monticello.

Как я могу автоматизировать эту задачу?

2 ответа

Решение

Вы можете использовать Gofer для автоматизации ваших задач Монтичелло.

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

В главе о Гоффере новой бесплатной книги "Глубоко в Фаро" (pharo на втором примере - http://rmod.lille.inria.fr/pbe2/.) Я представил Гофера в деталях. В частности, я представляю несколько способов миграции между репозиториями
По умолчанию для Gofer - выборка и извлечение, исходя из того, что вы можете легко построить синхронизацию.

Например, если вы используете концентратор Smalltalk

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]
Другие вопросы по тегам