# The openSUSE Factory project This project is managing the entire Factory, aka Tumbleweed distribution. It defines the used package sources and additional configuration settings to build the binaries. ## Package Sources All package sources are organized below the pkgs directory. These are grouped again in subdirectories to avoid too large directory listings. The `_manifest` file needs to get adapted in case a new subdirectory gets created or an existing one gets renamed. Each package source is defined via a git submodule. The submodules defines * the origin url of the source (in .gitmodules) * the branch to follow (in .gitmodules) * the current used commit hash Any submodule reference should be relative to allow a full replication on other git servers. ### Add a new package source ```shell git submodule add -b factory ../../pool/$PACKAGE pkg/$DIRECTORY/$PACKAGE git commit ``` ### Remove a package source ```shell git rm pkg/$DIRECTORY/$PACKAGE git commit -a ``` This modifies also the .gitmodules file ### Update a package source This is usually done via our bot infrastucture. But in case a manual action is needed run ```shell git submodule update --init pkg/$DIRECTORY/$PACKAGE cd pkg/$DIRECTORY/$PACKAGE git pull # or checkout a specific commit/branch cd - git add pkg/$DIRECTORY/$PACKAGE git commit ``` ## Additional files ### `_manifest` Is the master git configuration file. Currently it is only used to define the package source structure of the project. ### `_config` The build configuration (aka prjconf). ### `workflow.config` Rules for the workflow-pr bot. The bot creates for any pull request against any used pool/$PACKAGE git repository factory branch also a pull request for this git project here. ### `staging.config` Defines test builds for any pull request to this project