Today my co-worker (still a trainee) worked on a customiziation of a Mail 9 template. Everyone who ever was engaged with that kind of template will know that this is real PITA. In this case it is doubled because the template uses two languages (English and German). There are several tasks to do that need customization of script libraries, forms and also shared actions (sic!). Last are the "Achilles' heel" or every database as they are not stored seperately but in only one (here two for each language) file(s) with source code and references.
The effect started before lunch: as he wanted to search a special term in the whole database construct we decided to setup source control for that application - DDE crashed all the way when using the Eclipse built in search option (because of the amount of design elements or complexity?). We then wanted to search via the Windows file explorer search capabilities - which also failed as the term was not there.
After lunch he switched the client's language to see and test his work - and that was a mistake!
It happened subtle but after some minutes all the design elements were gone! It started with the shared actions. I instantly removed source control for that NSF but no luck, everything was gone (proved by opening the database in the client and getting error messages).
Lucky ones: we have a ODP
The ODP files luckily seemed to be there at all - except the shared action resources. To minimize the trouble he was in I copied the ODP to another directory and setup a project again ("import into workspace") and associated the corrupted NSF with that new project. After 20 minutes (!) of importing everything into the NSF container I also created a local template from that. Then we use the original customer database, switched off design refresh for all shared actions (as we wanted to keep them as they were) and finally we refreshed the whole database with our preleminary created template. So we got a mixture of the stuff that was done in the last 2,5 days and the original shared actions.
After all we minimized the loss of data to half a day's work - not ok, but not as bad as we would have lost all three days' work.
At the end of this day I also commited and pushed the last version into our Gitlab repository for that it will never get lost...