This does not have anything to do with Pharo so no matter the version :)
I keep in sync the VMMaker repositories using a jenkins job with this script (from squeaksource to github):
#! /bin/bash
set -e
eval `ssh-agent`
ssh-add $HOME/.ssh/id_rsa_estebanlm
PACKAGES="'VMMaker.oscog'"
REPOSITORY=cog
# Clone
git clone -b spur64 git@github.com:estebanlm/pharo-vm.git $REPOSITORY
cd $REPOSITORY
git config --local user.email "estebanlm@gmail.com"
git config --local user.name "Esteban Lorenzano"
cd -
# Get Pharo (and prepare it)
wget -O- get.pharo.org/50+vm | bash
./pharo Pharo.image get OSProcess
# Execute sync script
./pharo Pharo.image eval "
| origin destination |
origin := (MCHttpRepository location: 'http://source.squeak.org/VMMaker')
�� �� �� �� instVarNamed: 'cacheFileNames' put: true;
�� �� �� �� yourself.
destination := MCFileTreeRepository new
�� �� �� �� directory: '$REPOSITORY/mc' asFileReference ensureCreateDirectory;
�� �� �� �� instVarNamed: 'cacheFileNames' put: true;
�� �� �� �� yourself.
#($PACKAGES) do: [ :eachPackageName |
�� �� �� �� | infoOrigin infoDest versionNumber newer |
�� �� �� �� VTermOutputDriver stdout black: 'Updating ', eachPackageName; lf.
�� �� �� �� infoOrigin := origin versionInfoFromVersionNamed: eachPackageName.
�� �� �� �� infoDest := destination versionInfoFromVersionNamed: eachPackageName.
�� �� �� �� versionNumber := infoDest versionNumber.
�� �� �� �� newer := (({infoOrigin}, (infoOrigin allAncestors))
�� �� �� �� �� �� �� �� select: [ :each |
�� �� �� �� �� �� �� �� �� �� �� �� each versionNumber > versionNumber
�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� or: [
�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� each versionNumber = versionNumber
�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� and: [ each id ~= infoDest id ] ] ])
�� �� �� �� �� �� �� �� sorted: [ :a :b | a timeStamp < b timeStamp ].
�� �� �� �� newer do: [ :each | | summary |
�� �� �� �� �� �� �� �� [
�� �� �� �� �� �� �� �� �� �� �� �� VTermOutputDriver stdout green: ('New version: ', each name); lf.
�� �� �� �� �� �� �� �� �� �� �� �� VTermOutputDriver stdout << 'Store ' << each name << ' in ' << destination description; cr.
�� �� �� �� �� �� �� �� �� �� �� �� destination storeVersion: (origin versionFromFileNamed: (each name, '.mcz')).
�� �� �� �� �� �� �� �� �� �� �� �� VTermOutputDriver stdout << 'Commit ' << each name; cr.
�� �� �� �� �� �� �� �� �� �� �� �� summary := each summary copyReplaceTokens: String cr with: String crlf.
�� �� �� �� �� �� �� �� �� �� �� �� OSProcess waitForCommand: '(cd $REPOSITORY; git add -A ; git commit -m \"', summary, '\")' ]
�� �� �� �� �� �� �� �� on: Error do: [ :e |
�� �� �� �� �� �� �� �� �� �� �� �� VTermOutputDriver stdout yellow: ('Warning: ', e messageText); lf ] ] ].
VTermOutputDriver stdout << 'OK'; cr.
"
cd $REPOSITORY
git push --force origin spur64
git branch --verbose
cd -
git stuff is to add my credentials, that���s because I use one of our structure servers. One of your own shouldn���t need that part.
basically, script does:
1) clone mirrored repo
2) run a script comparing PACKAGES and versions, generate a new export+commit for each new version.
3) does a push with all new commits
cheers,
Esteban
> On 30 Aug 2015, at 21:23, Hern��n Morales Durand <hernan.morales@gmail.com> wrote:
>
> Is it possible right now in Pharo 4 or 5 on any platform?
>
> Cheers,
>
> Hern��n
>