How does a selector look like?
Look at the following sample:
repository "default"
path "/" label "release020"
This selector is telling the following to the system: work with a repository named default. Load all the elements from the root path, recursively, from a label called release020.
Complicated? Nothing compared to the daily problems a developer has to face and in exchange you get the following power:
repository "default"
path "/doc"
branch "/main/doc"
checkout "/main/doc"
path "/lib-GUI"
branch "/main/stable" label "lib-stable-010"
path "/"
branch "/main/task0901" label "BL050"
checkout "/main/task0901"
Which means: documentation will go directly to the doc branch; load libraries used for compilation from an stable location, in a read-only way; place your changes for the current task, task0901, in an associated branch, starting from the stable release BL050.
Powerful? Yes, and this is just the start.