Mehboob My choice, for now, is svn. We use it daily. Hourly, actually. All of our source is checked into a local svn repos, according the structure suggested by the developers of svn: tags, trunk, branches. Because it is 4D, we arrange the structure and data a little differently since there is no merging possibilities with a structure (bleah!).
repo --system ----tags ----branches ----trunk ------database.4DB (et al) ------Active4D --------libs.a4d (et.al) ------web_static ------sites --------site1 --------site2 --------site3 --data ----tags ----branches ----trunk ------database.4DD I have read that some have created macros that integrate with the command line to commit changes to 4D methods from within 4D, but have not explored it. I have also heard that some use a method to dump ALL methods out to xml or or a series of files then version THAT as to be able to track minute changes in the structure. It all sounds good, but I have have not had time to try it. We use a combination of command line and Versions.app. Versions does not have merging, but it allows a fast graphical view of the repo and working copies and their changes. Very nice. Most merging and updates we do through the command line via ssh or deploying with Capistrano. The 4D structure essentially is just saving copies that may be tied to versions of the sites, so we tag those. When we're developing, we make changes to the structure and commit them. On the local box, we do: svn up database.* --accept theirs-full to pull all the changes down to a system because there is no merging or conflict resolution for the structure files. There are negatives, of course, the main one for us being that svn places a .svn folder in every directory, increasing the potential for messed up version tracking. This also means you cannot version Bundles correctly. But we get around this with PlugIn bundles, for instance, by compressing the plugin as a .zip and versioning that. The Plugin directory has an svn:ignore *.bundle and when updating we merely replace the .zip file, and uncompress and replace the .bundle file/directory. I tried to get into git, but couldn't ramp up fast enough to use in a multiple developer environment. And my understanding the Git philosophy "No individual versions, everything is versioned together" doesn't really work for us because of the variable nature of the A4D sites (1 is updated today, 2 is updated tomorrow) and the static nature of the 4D structure between those updates. If I have to clone/update everything from my root, this means that I cannot selectively update site1 to production because everything will get updated, even my changes to site2. Of course, I may not understand the best way to use Git, but I spent A LOT of time trying to figure it out, reading lots of lists and howtos, but I could not figure out how to integrate to the way we work. I respect that Aparajita and many Rails people have switched and won't look back, but I see these projects as different models than we use day to day. For instance, Aparajita has the Active4D libs on GitHub, but how do we tie that into a version of A4D, the plug in? If the libs get updated and happen to use a command that is not available in a particular version of the plugin, how can we know this? I would LOVE to integrate a better SCM to work with the 4D/A4D environment, versioning methods, forms (yeah, right) and all the elements of the structure. Even understanding a better way to work within the limits of not being able to version the discreet elements of 4D would be good. If either you or Aparajita came out with that product today, I would buy it. However, I'm not sure how viable it would be for either of you. When is the last time you found a discussion on the Nug about source control? Or have discussed it with the aging 4D population, creators included, to even understand how vital it is to ANY modern development environment? We have 2 4D clients left and they are making plans to migrate away. As I have said many times on this list, Aparajita and A4D is the only reason we still hang with 4D - their tools are so 1992. I digress. In short, we use svn now, are open to using Git and/or other methods of organizing our SCM. Maybe that's all I should have said. :) Thanks, Michael Check On Wed, Feb 3, 2010 at 12:22 PM, Mehboob Alam <[email protected]> wrote: > Since 4Dv12 will not have the "source-code lifecycle" features that > were hinted/promised from before, I'm working on building my own tools > that I'll need to keep track of 4D code and Active4D files. > > Between Subversion and Git, what are your preferences? And what tools > do you use to manage them, i.e. submit source files, checkout/in etc. > I'm interested in visual/gui tools on the Mac and Windows. > > Any experiences, suggestions are welcome. _______________________________________________ Active4D-dev mailing list [email protected] http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/
