|Version 1 (modified by 8 years ago) ( diff ),|
MapGuide RFC 145 - MapGuide Repository Re-organization
This page contains a change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.
|RFC Template Version||(1.0)|
|Submission Date||25 Aug 2014|
|Implementation Status||not started|
|Assigned PSC guide(s)|
This RFC proposes to re-organize the MapGuide repository to improve efficiency of checkout and other repository-wide actions.
This makes initial check out and any repository-wide actions a very slow process. Checking out specific branches also wears the same performance penalty.
For this RFC, we will extend this approach to cover every referenced library/component under Oem. The setenvironment.bat, setenvironment64.bat and configure.in/Makefile.am files will do the necessary legwork to set these environment variables up.
/trunk /Installer /MgDev /Oem
/trunk /Installer /MgDev /Oem
The setenvironment.bat, setenvironment64.bat and configure.in scripts will now assume Oem is a sibling directory of MgDev and not a child one for all the environment variables it needs to set.
This repository layout offers the following benefits:
- MgDev checkout is substantially faster.
- Oem checkout can be a one-time event. Targeting specific-branches is a simple case of making a physical copy of the Oem working copy and svn switching to the branch-specific Oem.
- Oem component updates happen independently of the MapGuide source.
- On Linux, this will greatly improve our ability to build MapGuide against system-installed versions of various Oem components as this setup gives us greater freedom to cherry-pick what components will link against system-installed libraries and which ones will link against internal Oem copies.
When it comes time to branch for specific releases, MgDev and Oem are branched individually. For example, a 3.0 release branch would look like this:
/branches /3.0 /Installer [branched from trunk/Installer] /MgDev [branched from trunk/MgDev] /Oem [branched from trunk/Oem]
This repository change will impact on how developers set up their working copies and/or automated build systems. Instead of just checking out MgDev. They have to checkout both MgDev and Oem and have Oem be a sibling of MgDev in their working copy directory structure in order for the environment setup scripts to work under their default settings.
This repository structure change will mean that running setenvironment.bat/setenvironment64.bat before launching Visual Studio to build MapGuide is now mandatory. Previously, the Server solution could be built and run from Visual Studio without having to call setenvironment.bat as none of its projects had parameterized include/linker paths. With this change, this will no longer be the case. "headless" builds via build.bat will still operate as before.
There will be a short momentary disruption while the implementation of this RFC is carried out. Since we are not currently in a stage of putting out a new release, the impact of this disruption should be minimal. Developers with existing trunk working copies will need to checkout Oem individually once this RFC is carried out and have it sit alongside MgDev in order for environment setup scripts to work under their default settings.