"Script to synchronize from one Monticello repository to another" | source goferSource destination goferDestination files destinationFiles | source := MCHttpRepository location: 'http://mc.stfx.eu/Zodiac'. destination := MCSmalltalkhubRepository owner: 'SvenVanCaekenberghe' project: 'Zodiac' user: 'SvenVanCaekenberghe' password: ''. goferSource := Gofer new repository: source. goferDestination := Gofer new repository: destination. files := source allVersionNames. "select the relevant mcz packages" goferSource allResolved select: [ :resolved | files anySatisfy: [ :each | resolved name = each ] ] thenDo: [ :each | goferSource package: each packageName ]. "download all mcz on your computer" goferSource fetch. "check what files are already at destination" destinationFiles := destination allVersionNames. "select only the mcz that are not yet at destination" files reject: [ :file | destinationFiles includes: file ] thenDo: [ :file | goferDestination version: file ]. "send everything to SmalltalkHub" goferDestination push. "check if we have exactly the same files at source and destination" self assert: destination allVersionNames sorted equals: files sorted.