FileMaker server backups are the closest and most usefull aproximation.
You can use git with FileMaker files. Of course there's no diff or some other extended features you would get with text based source files, but there is nothing else that does that either for FM files.
Not really. A version control, 'sccs' (source code control system) needs to have access to code, codefragments, files (with the code), etc.
A sccs takes control over those files (that code) - one has to get them out of the system and back into the system (with some controling sequences, etc.), If somebody has a 'file' out for changes, no other can get that out. A changelog will be created, etc.
That's not possible in this sense - But:
What can be done: FMDiff (FMDiff.com) compares 2 version of a FileMaker solution and shows clearly what has been changed in between - fields, scripts, much more. You'll get a pretty good documentation! Fast! Depending on the way one is working (FMServer, access to scripts, etc.) some kind of control is possible (although not in a pure 'sccs' sense)
In FileMaker, there are no text-files for scripts, no forms manager, no 'dump' et all (that's 'FileMaker' and I love that!) - therefore a classic 'sccs' won't fit..
Yes - that's true!
Although not so handy when FMServer is in action (IMHO)
BaseElements (and presumably Inspector Pro) can provide a difference report of two DDRs.
Not sure if that's exactly the same thing, but still quite useful.
1 of 1 people found this helpful
At Skeleton Key, we use Subversion repositories for all of our FileMaker projects. While Subversion doesn't help with visible diffs or merge capabilities for FileMaker files, it's still incredibly useful. We typically commit multiple times per day while developing, which allows us to easily retrieve any file from any point in the project's history.
Subversion does use deltas for transferring and storing binary files. It's a very efficient way to store the files and it makes commits and updates for our remote developers extremely fast in most situations, even with files that are hundreds of megabytes.
I highly recommend Subversion, especially for distributed teams. It offers a lot of advantages over all the alternatives that I know of.
love subversion - one of the successors of the old (SUN) command line sccs
ARe You working with FileMaker Server? How do You play with this combo?
YEs - we are using analyzers as well (CrossCheck, Inspector Pro).
THe problem here is the time it takes for a run... Maybe I should check BaseElement
InspectorPro also compares pretty much all of it.
Only problem is that as you said it can take some time. We are looking to make improvements there.
Nice thing in InspectorPro is that you can choose where you want to run your comparison. So if you know you only made script changes then you can run it on scripts. Unfortunately there are things in the DDR that I wish were better like unique ids for steps ... much like what we got for layout objects recently ( keys ). So that we could know for sure if the step existed before or if it is a new step. And likewise with custom menu items. Anyway the DDR is the last thing they get to as they have so many other priorities, but I do keep brining it to their attention. Hopefully in the next file format change they will tackle it.
In the meantime InspectorPro can certainly help there. And again we are making some improvements.
You could build a version table into the file and of course this would not include info on script changes, etc but would tell you when a developer opened the file.
On first window open
if privilege set = full access
go to version control table
set fields to info you are interested in
go to layout....
This gives you a probable date of any modifications to the database and you could add a related table where the developer could list the changes made, perhaps saving a text field of the original script and one for the changed script. I usually duplciate my layouts before making any extensive changes and scripts can also be duplicated and stored in a "Duplicated" folder.
I rolled my own DDR parser for this. It turns all of the major FileMaker objects into text files, which I then commit to a version control system (git).
I find it very useful for looking at the differences between changes, for instance, for quickly diff'ing a script with an old version. I also find it useful for doing text searches throughout the project (e.g. global variables, field names, etc.). And it saves me from having to manually document all of the minor changes that I make.
Unfortunately, one thing that it can't help me with is restoring as I could with a text-based language. That is, if I want to restore an old version of a script/function/menu set/etc., I can look at it while I re-code it, but I can't just perform a checkout and be done. But I commit a clone of the FMP files (and the DDR), too, so with a little manual labor, I can dig out something like a long script.
I gives me a file structure like this (from the FMServer_Sample file):
│ ├── FMServer_Sample.fmp12
│ ├── FMServer_Sample_fmp12.xml
│ └── Summary.xml
│ └── GetWorkDays (id 1).txt
│ ├── - (id 11).txt
│ ├── - (id 27).txt
│ ├── New Task (id 25).txt
│ ├── Re-Populate Localized Sample Data [First Startup] (id 98).txt
│ ├── Script Triggers (id 28)/
│ │ ├── Trigger | Create New Project (id 30).txt
│ │ ├── Trigger | Create New Task (id 31).txt
│ │ └── Trigger | Enter Projects List (id 75).txt
│ ├── Server Side Scheduled Script Test (id 52)/
│ │ └── Server Side Script | Export "Next Day" Tasks Due (id 54).txt
│ ├── Show All Tasks (id 44).txt
│ ├── Startup Script (id 26).txt
│ ├── Upload to Server (id 145).txt
│ ├── Web (id 134)/
│ │ ├── Create New Project | Web (id 135).txt
│ │ ├── Delete Project | Web (id 137).txt
│ │ ├── Display Selected Project | Web (id 136).txt
│ │ └── Script Triggers (id 138)/
│ │ ├── Trigger | Enter Project | Web (id 140).txt
│ │ ├── Trigger | Enter Projects List | Web (id 139).txt
│ │ ├── Trigger | If Last Task is Deleted | Web (id 141).txt
│ │ └── Trigger | QuickFind | Web (id 142).txt
│ └── iOS (id 60)/
│ ├── Create New Project | iOS (id 122).txt
│ ├── Delete Project | iOS (id 69).txt
│ ├── Display Selected Project | iOS (id 64).txt
│ └── Script Triggers (id 65)/
│ ├── Trigger | Enter Project | iOS (id 59).txt
│ ├── Trigger | Enter Projects List | iOS (id 68).txt
│ ├── Trigger | If Last Task is Deleted | iOS (id 67).txt
│ └── Trigger | QuickFind | iOS (id 70).txt
│ ├── Personnel (id 131).txt
│ ├── Projects (id 134).txt
│ ├── Tasks (id 129).txt
│ └── Translator (id 135).txt
├── Boolean (id 1).txt
├── Created By (id 8).txt
├── Percentage (id 4).txt
├── Personnel (id 2).txt
├── Priority (id 7).txt
Is the parser something you're willing to share? I think it would be very useful to have
Sorry about that, but I seem to have cut off the end of my message when I posted last night.
I meant to also say that I'll clean this up and try to get it posted on github in the next few weeks in case others can find it useful.
It's currently a ruby script. I'll turn it into a gem-based tool to make it easier to install and use. That being said, it's still a command-line tool, but most people that are using git/svn/etc. won't find that too daunting. Also, I only use it on Mac OS, and I suspect that there may be some issues trying to use it on Windows (aside from having to setup a ruby environment).
I'll post back to this thread when I've got something up there.
2 of 2 people found this helpful
It took me bit longer than I'd hoped, but in case others might find this tool useful, I've posted it as a gem called 'fmpvc' on rubygems.org and put the source up on github:
I hope that the README on the github page is sufficient explanation of how to use it.
Of course, feedback is always welcome.