After that, you can materialize in 4.0.
The other alternative is that in 4.0 you load older version of Fuel (the one in 3.0), then import, the expert, then load new fuel again.
I have been doing this since Pharo 1.4 until 4.0 since my client's app also uses Fuel. And the process was always quite simple and only once per release.
Migration is something we miss in Fuel..and even if we have promised to keep format unchanged, sometimes the evolution of Pharo itself (not the internal Fuel format representation) makes the format to be broken from one version to the other. So until we have a better automagic migration tool, the above trick should work.
Btw...here is the scrip I used to migrate from 1.8 to 1.9... this is just an EXAMPLE of how you can do it..but do not copy it becuase it uses old version of the code repositories, etc...
| oldVersion newVersion fileNames objectsByFileName materializerClass |
oldVersion := '1.8'.
newVersion := '1.9'.
fileNames := #(
'/Users/mariano/XXX/aaaaDB.fdb'
'/Users/mariano/XXX/bbbbDB.fdb'
'/Users/mariano/XXX/ccccDB.fdb'
'/Users/mariano/XXX/ddddDB.fdb'
'/Users/mariano/XXX/eeeeDB.fdb'
'/Users/mariano/XXX/ffffDB.fdb'
).
objectsByFileName := Dictionary new.
materializerClass := Smalltalk at: #FLMaterializer.
fileNames do: [ :fileName |
objectsByFileName
at: fileName
put: (materializerClass materializeFromFileNamed: fileName).
FileDirectory default copyFileNamed: fileName toFileNamed: fileName, '-', oldVersion asString ].
Gofer it
squeaksource3: 'Fuel';
package: 'ConfigurationOfFuel';
load.