Software Management Tools (smtools) for Code Hosted on Multiple
Smtools was developed primarily to support development that makes use of a large number of repositories. It provides means to operate on multiple repositories with a single command. It simplifies common operations such as fetching, pushing, or pulling more than one repository at the same time. It also provides an integrated builder for builds based on Linux kernel style buildroot system.
Smtools supports automatic caching of fetched components. The cache can be located on the local machine or on a local network. Locating the cache on local machine is perfect for mobile developer who primarly use their laptops and do not always have access to remote repositories. The network cache option is best for smaller offices that need to work with a remote central repository.
Smtools supports ifdef style conditional configuration. This capability is invaluable in larger projects where several overlapping configurations need to be maintained. This is very typical with code targeted for multiple platforms, or for various releases, or for customized packages.
Smtools augments conditional configuration with flexibile support for macros. Macros can be placed in any configuration file, such as per user config files, per project config files, or per build project files. There are also options to define macros on the command line.
Most larger project rely on config files to determine which code to fetch for which project. Smtools offers flexible configuration option but also the ability to populate without config files. It is possible to select all necessary options on the command line. It is also easy to populate components from another project located on the local file system without inheriting that project's parameters.
Component Selection Options
Components comprising a project are normally listed in config files but it is possible to quickly select a subset of components directly on the command line. Components can be listed one by one, or they can be listed as exclusions from the project list. There are also pseudo components that select classes of components such as those chosen for local devleopment or those that constitute links to other components.