Well, here’s how I do it. I try to keep this simple, but it’s hard to communicate all the details sometimes. This is with the assumption that I’ve built something to a point where I’m ready to commit it as a project in modx-components.
I’m trying to figure out the best way to work on various add-ons via the SVN repository at http://svn.modxcms.com/svn/modx-components. I figured I’d expose my ignorance here so others can be helped by the answers.
...
Is there a better way to do all this?
Also, I don’t understand how the changes get from the add-on repository to the package zip file in the WTF.This is being developed as part of the new component package repository called ReleaseMe. The WTF site will go away, and wtf.modxcms.com will become the web service that provides transport packages from the new ReleaseMe repository that will be featured on the main modxcms.com domain.
$this->checkDev();
if (!defined('RM_BASE_URL')) {
define('RM_BASE_URL',$this->modx->config['site_url'].'assets/releaseme/');
}
function checkDev() {
$f = RM_BASE_PATH.'_build/build.config.php';
if (file_exists($f)) {
@include_once $f;
}
}
// define the MODX path constants necessary for core installation
if (!defined('MODX_BASE_PATH')) {
define('MODX_BASE_PATH', dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/MODx Revolution/');
define('MODX_CORE_PATH', MODX_BASE_PATH . 'core/');
define('MODX_MANAGER_PATH', MODX_BASE_PATH . 'manager/');
define('MODX_CONNECTORS_PATH', MODX_BASE_PATH . 'connectors/');
define('MODX_ASSETS_PATH', MODX_BASE_PATH . 'assets/');
}
// define runtime settings so package can be run from comp-repo rather than modx install
define('RM_BASE_URL','/modxcomp/releaseme/trunk/');

Well, you wont have to worry - since the build.config.php is in the _build dir, which you shouldn’t be packaging anyway.
And you have to be really careful not to accidentally include build.config.php in the package (which I guess you’d do anyway).
You don’t need to install it - you just run it as-is, from the comp-repo. Why would you need to install it first?
I’m still confused on one point. The add-on runs from comp-repo until it’s built and installed, but how can it run without being built and installed first? Do you install it and then put a dummy build.config.php in (and risk committing it)?
Yeah, but the overhead for one file_exists check isn’t that bad.
The only down side I can see is that if you take the lines out for the release version, you can’t work on the add-on any more unless you put them back in. OTOH, leaving them in could confuse people and slow things down slightly, especially for a plugin listening to a common event.
Well, once I have a config file, I can copy it into any _build directory for any component to build against a particular Revolution instance. Again, the build.config.php is only for the purpose of building the transport package.
If I’m understanding you, you don’t duplicate the config file but just reference the one in the MODx _build dir. in the build script?
Agreed. It can become unruly with complex components which may install files into several locations; you’d have to maintain and be sure not to commit all the svn:property changes.
I can see where using svn:externals could get me into trouble, so it sounds like your first scenario makes the most sense (especially in Revolution where the checked out add-on won’t actually function).
Tagging a release is simple. You just copy the trunk or branch to a tag; where is the inefficiency? I never intended this repository to hold Evolution components; it is here to support Revolution component building on "reference" projects (ones that are officially reviewed and endorsed by the MODx Team), but keeping a version of the component that works in Evolution should be no different than maintaining multiple versions for Revolution; they are just version numbers. What we should avoid is using the same version number for a component with different targets; Ditto 2.0.1 should not have versions for Evolution and Revolution. It should be Ditto 2.0.1 for Evo and likely 3.0 for Revo.
I’m still a little hazy on maintaining both Evolution and Revolution add-on versions. Looking at the add-on repo, it looks like each version is in a separate branch. What, then, is in the trunk? It seems to me that it would make more sense to have a separate directory in the repository (complete with trunk, tags, and branches) for the Evolution and Revolution versions (e.g. Ditto-Evolution & Ditto-Revolution) so I’m probably missing something. The current system makes it inefficient to set tags and I see that most, if not all, tags directories are empty. It also makes it harder to retrieve earlier releases of add-ons by name, which would be easy with tags.
[You don’t need to install it - you just run it as-is, from the comp-repo. Why would you need to install it first?
I’m still confused on one point. The add-on runs from comp-repo until it’s built and installed, but how can it run without being built and installed first? Do you install it and then put a dummy build.config.php in (and risk committing it)?
Quote from: BobRay at Sep 25, 2008, 12:13 AMTagging a release is simple. You just copy the trunk or branch to a tag; where is the inefficiency? I never intended this repository to hold Evolution components; it is here to support Revolution component building on "reference" projects (ones that are officially reviewed and endorsed by the MODx Team), but keeping a version of the component that works in Evolution should be no different than maintaining multiple versions for Revolution; they are just version numbers. What we should avoid is using the same version number for a component with different targets; Ditto 2.0.1 should not have versions for Evolution and Revolution. It should be Ditto 2.0.1 for Evo and likely 3.0 for Revo.
I’m still a little hazy on maintaining both Evolution and Revolution add-on versions. Looking at the add-on repo, it looks like each version is in a separate branch. What, then, is in the trunk? It seems to me that it would make more sense to have a separate directory in the repository (complete with trunk, tags, and branches) for the Evolution and Revolution versions (e.g. Ditto-Evolution & Ditto-Revolution) so I’m probably missing something. The current system makes it inefficient to set tags and I see that most, if not all, tags directories are empty. It also makes it harder to retrieve earlier releases of add-ons by name, which would be easy with tags.
