My experience with SVN and Servoy

Questions and answers regarding the use of eclipse environment as seen in Servoy Developer

My experience with SVN and Servoy

Postby popdizzle » Fri Jan 23, 2009 12:16 am

Just wanted to share some things we've learned (sometimes the hard way), as we've used Servoy and SVN in a team environment...

-We use Subversive, per the recommendations on the forum
-We use Project Locker for online svn hosting
-We use Mysql as our database
-We have a mix of Mac, XP, and Vista developers
-All of us but 1 are in the same office. 1 is remote.

Here are our observations. If we have solutions or recommendations, we'll share. Please do the same, so the community can benefit.

-Installing Subversive was super easy on some machines, and mysteriously impossible on others. When entering our update sites, to get the plugins installed, we often found that there were required components, preventing us from moving forward, but we often beat our heads against the wall trying to figure out the right combination. This was maddening. We're still not sure if there's a guaranteed process to get everything going perfectly, without a lot of black magic futzing. At least we're all running now.

-We had a couple of instances where adding tabpanels and forms to the tabpanels would get us into a situation where some of the forms on the tabpanel wouldn't sync to SVN. Things seemed to get lost to SVN.

-We tried using TortoiseSVN as an SVN client outside of Servoy to sync up things that Servoy didn't want to sync. We ended up trashing our local SVN because we had Tortoise 1.5.x, going against Subversive's 1.4 version of SVN and it made the SVN files incompatible with Servoy. We had to dump our local workspace and redownload the project to recover. We ended up rolling Tortoise back to 1.4.8 and it was able to coexist with Subversive. This solution helped us fix some problems that Subversive couldn't.

-Syncing databases through Servoy/SVN is a nightmare. We're trying to figure out the best way to manage database synchronization outside of Servoy. Servoy doesn't understand decimal(10,2) fields vs float fields, so it constantly tries to correct these fields, but it can't. People end up pushing up DBI changes, only to cause other team members problems when they try to update their DBI files from SVN.

-I don't think it's possible to separate the DBservers from the CSS styles and security, so you have to sync all 3 through SVN, or none of them. We'd love to be able to separate the DBservers out, yet still sync CSS and security.

-As was recommended on the forum, we always do a Team Synchronize first, then resolve any conflicts, then commit, then update. Sometimes we find we have to go back and do the cycle again because some things did not get pushed up.

-We have had some real scares with syncing Globals.js, the global methods. The order of methods gets changed as new methods are added. Servoy shows conflicts or changes when two people have both added global methods. If you look at the conflict editor, you see that because of the changed order of methods and global variables in the file, Servoy tries to pull Humpty Dumpty totally apart and reassemble it. We've lost methods once from this chaos. Seems very risky the way it's doing things. I would recommend that methods be separate object files, instead of cramming them all together in one file.

-Once you get in a process that works, it seems to be okay. Watch out for Newbies coming on your team though. It's easy to mess things up if you don't know the fragile process, and know to check for missing methods and unsynced files.

My confidence in Servoy/SVN for team development is still shakey. I'm not yet comfortable that my code is protected and safe and that my team members can trust the system. I would like to see Servoy take an active role in finding these problems and providing a clear cut process for success using SVN. I would also like to see a much better solution for handling database changes.

And we still love Servoy... :)

--Jason
popdizzle
 
Posts: 144
Joined: Fri Feb 08, 2008 6:07 am

Re: My experience with SVN and Servoy

Postby pbakker » Fri Jan 23, 2009 11:41 am

Hi Jason,

Tnx for this overview, too bad you are experiencing problems. We use SVn and subversive extensivly ourselves and do not experience some of these issues you mention.

With regards to the tabpanels: Is this reproducable? If so, can you create a case and attach a zipped copy of your workspace?

Installing Subversive should be relative straight forward. You do need to install some connectors first and then the plugin, but we have not have any issues. The installation process is described on the subversive site. Any specific OS on which you experience these issues?

As for the database syncing: When you use SVN, Servoy will not automatically create missing columns and tables int eh database. If one developer added one and committed the corresponding dbi file into your SVN repository and the next developer checks it out, you just will get an error marker, which you can rightclick for a quick fix (either to let Servoy create the missing column or to remove the column definition from the DBI file). If you would do the actual database syncing outside Servoy, I do not see why there would be further issues. You do need the info from the DBI files, because it contains additional information on tables and columns (like what kind of sequence is used etc.). You can exclude the datasources directory of the resources project by either not checking it out initially or unsharing it after checkout, but I'm sure you will run into all kind of different problems then.

And about the syncing of globals.js for example, this is the proces:
- First you run a sync to find all the differences
- If conflicts appear, you run an update: this update will try to merge the changes in the SVN repository to your local workspace copy (Note: this is at least how Subversive works, otehr SVN clients might work differently).
- This update might make all the conflicts go away.
- If conflicts remain after the update, you need to merge them manually, because the merge code cannot figure out how to properly merge the two versions.
The behavior you are describing about the order of functions and variables in a .js file being automatically changed when you save should not happen using Servoy 4.1. On which version are you working?

Paul
pbakker
 
Posts: 2822
Joined: Wed Oct 01, 2003 8:12 pm
Location: Amsterdam, the Netherlands

Re: My experience with SVN and Servoy

Postby popdizzle » Fri Jan 23, 2009 6:08 pm

With regards to the tabpanels: Is this reproducable? If so, can you create a case and attach a zipped copy of your workspace?

We had it twice. Haven't seen it lately. It revolved around deleting a tabpanel and re-adding.

Installing Subversive should be relative straight forward. You do need to install some connectors first and then the plugin, but we have not have any issues. The installation process is described on the subversive site. Any specific OS on which you experience these issues?

*Relative* is the operative word. When it worked, it worked fine. We followed the directions exactly on the Subversive site. One machine worked. Another machine kept telling us we were missing required components. Vista may have been the common theme.

If one developer added one and committed the corresponding dbi file into your SVN repository and the next developer checks it out, you just will get an error marker, which you can rightclick for a quick fix (either to let Servoy create the missing column or to remove the column definition from the DBI file).

Yes, we know all about Quickfix and how to have Servoy reconcile the differences. The problem is that Servoy can't create or modify some field types, like Decimal in Mysql. We get into upload/download wars between developers. Servoy wants to change the definition of a field, but it can't do it. If you tell it to update DBI instead of modifying the DB, then the next developer to do an Update will inherit the problem. It gets into an infinite loop unless you do something manual outside of Servoy to sync everyone's database.


And about the syncing of globals.js for example, this is the proces:
- First you run a sync to find all the differences
- If conflicts appear, you run an update: this update will try to merge the changes in the SVN repository to your local workspace copy (Note: this is at least how Subversive works, otehr SVN clients might work differently).
- This update might make all the conflicts go away.
- If conflicts remain after the update, you need to merge them manually, because the merge code cannot figure out how to properly merge the two versions.

My understanding of Conflicts is that two different people have modified the same file. Doing an update will not touch a conflict will it? Don't you have to go through the conflict editor and manually make changes, then mark as merged?

The behavior you are describing about the order of functions and variables in a .js file being automatically changed when you save should not happen using Servoy 4.1. On which version are you working?

We have had global methods disappear after an update/commit cycle. What should happen and what is happening are two different things. :?

We are using Servoy 4.1.

Thanks for any help. Maybe we're the only ones having SVN issues.

--Jason
popdizzle
 
Posts: 144
Joined: Fri Feb 08, 2008 6:07 am

Re: My experience with SVN and Servoy

Postby awvservoy » Sat Jan 24, 2009 8:02 pm


Thanks for any help. Maybe we're the only ones having SVN issues.

--Jason



You're not the only one with SVN issues. We too have strange, intermittent and sometimes very frustrating behavior using SVN & Subversive with Servoy 4.1.

I am going to collect some of our experiences to share as well. Thanks for posting.

-Tony
Anthony Vitrano
ReadQ Technologies LLC
awvservoy
 
Posts: 20
Joined: Wed Dec 13, 2006 10:11 pm
Location: New York, NY USA

Re: My experience with SVN and Servoy

Postby pbakker » Tue Jan 27, 2009 4:42 pm

If you can reproduce the issue with the tabpanels, please create a case for it for us to investigate.

The same goes for the installation of Subversive. Don't know it it's something we can do about or if it's Eclipse/Subversive, but if you know how to reproduce the difficulties we can investigate and maybe address is or give better pointers how to install subversive.

As for the update war: if you want to use specific datatypes you have no way other than updating the database outside Servoy. What I would do is the following:
- have a mechanism in place that allows developers to easily update their copy of the database using a third party tool.
- the developer that adds/alters a column does this on his database, then syncs his workspace resources project with the database and commits the changes
- Other developers check out the resource project and when Servoy encounters column differences or missing columns, the developer knows that he/she has to sync the database using the third party tool

The order in which variables and methods are placed in a .js file should never change, unless you manually alter it. As multiple people have indicated that this does happen sometimes, there might be a specific condition under which it does still happen. We have tried hard to reproduce this, but no luck so far. If you come across a reproducable case, please file a case in our support system so this can be fixed.

As for the update process: i have to correct myself: with subversive an update will push all changes from the repository into your local workspace. If there are conflicts, those will also end up in your workspace and they will be marked as such in your local copy with specific markup (usually invalidating your syntax, so you will get error markers for this).

Therefor, always run a sync first and solve your conflicts.

Note that the definition of a conflict is not that another developer updated the file in the repository since you have checked it out and altered it as well. If you have a .js file with 10 methods and the other developer added one on top and committed it and you add one at position 8 and try to commit, this shouldn't result in a conflict.

Paul
pbakker
 
Posts: 2822
Joined: Wed Oct 01, 2003 8:12 pm
Location: Amsterdam, the Netherlands


Return to Eclipse Environment

Who is online

Users browsing this forum: No registered users and 4 guests