Zisa
|
Zisa is organized in separate libraries. The code of each of these lives in a separate git repository. This is different from the organization style where the whole application is located in a single repository. In particular when it comes to code navigation, the other parts of Zisa are treated as external dependencies and are therefore not modifiable. This can be unwieldy. A solution to this problem is something called superbuilds.
The variant we'll discuss here is intended to be used by developers, i.e. people who want to navigate and modify the combined source code of Zisa. The zisa
repository is such a superbuild. The summary for using the Zisa superbuild is:
git clone --recursive git@github.com:1uc/zisa.git git submodule foreach "git checkout main"
then continue working as if they were a single combinded code base, organized in separate independent git repositories.
The steps for creating a new superbuild are:
main
branch. This can be achieved by a CMakeLists.txt
must be created, which does two things:find_package
with a no-op for Zisa internal dependencies.A couple of important things to refer back to:
git clone --recursive URL
to checkout a repository with all it's submodules.main
branch.main
branch they behave much like independent Git repositories; and the normal workflow can be used in each repository, e.g., create a feature branch, commit changes, create pull request, etc.main
it's irrelevant which value of SHA the outer repo points to. Any reasonably current version which compiles seems like a sane value. Hence, I don't see these merge conflicts becoming a particular headache.