I'm a bit puzzled about the many different files that are generated for each FB project. There are .fbl5, .fbw, .fbz5 and .lck files. Why so many? I was under the impression that .fbz5 contains everything in a portable zipped xml format.
The .fbl5 in particular is pretty big. I'm guessing it's a NexusDB file. Why is it needed? Do I need to include it in source control?
Thanks for your post. If you look in the FinalBuilder help, there's a full list under the "Project Files & Other Files" topic. In the meantime, here's an executive summary:
.fbl5 - Is the FinalBuilder log file. Kept separately from the project because it's a binary database, as you noted. It's not recommended that you check this into source control, not least because it needs to be writeable for FB to work properly (if you want to store a history of build logs in source control, use the Export Log action to export an XML log and check this in.) Also because most version control systems have trouble dealing with large binary files.
.fbw - Variables watch list. This file should only appear if you are watching variables in the FinalBuilder IDE, although I noticed yesterday that there's a bug which makes it appear even when there are no watches. We should have a fix for that soon.
.lck - This is a database config file which should only be present while FB has the project open, it will disappear at other times.
There's a couple of other file types which occasionally appear, they're described in the Help topic I mentioned above. Incidentally, if you're checking the project into version control then we recommend you use the .fbp5 file format rather than .fbz5, so you can do diff/merge/etc on the XML contents if required.
Please let me know if there's anything else we can help you with.
fbl5: Log file. If you delete it or lose it, you just lose some history (like the last X builds). FB generates a new one if missing. fbw: Watches file. If you delete or lose it, you have no watches for that project. fbv: Persistent variables. You probably want to version this file. lck: Lock file - prevents two copies of FB opening the same project at the same time. You can delete it.
fbz5 and fbp5 both contain the main project file, in either compressed or uncompressed format. Personally I never use .fbz5: we can afford the space, and it’s much easier to diff and version control uncompressed files.
Ah, that's great news, Angus! Two files less sounds much better.
Although I'm wondering if it would be possible to do even better... As a suggestion - could you merge the log database into the zipped format? It could be unpacked on opening of the the project file to a temp folder and repacked on closing .
As for the non-zipped vs. zipped format - I don't really care about diffing the script itself that much, because the script in question stays pretty much the same. It loads all the settings (e.g. version info) from external files and I can diff those at any time if I need to.
The main reason we don’t put all of the files inside the zip is because people tend to do things like checking them into version control, sharing them, copying them, etc. and the databases can get very large. A 5kb project can end up with a 20mb log file without any difficulty. Also, compressing and copying all that data back into the zip file when saving would increase the save time by an order of magnitude.
Nevertheless, we’ll take your suggestion onboard and see what we can do.
(NB: A fix for the .lck file issue is in the pipeline!)