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/

Reply via email to