.. _summary: Summary of Dist Git Deployment ============================== This document is a summary of all the interactions with all the services identified in this investigation. It also summarize the features that are currently available in current dist git deployment. Here is a diagram showing all the interactions between dist git and services in Fedora infrastructure. .. image:: ../_static/dist_git_interactions.drawio.png :target: ../_images/dist_git_interactions.drawio.png API ---- Following is the list of all dist git API endpoints that are currently used by services in Fedora infrastructure. More information about endpoints could be found in `API documentation `_. - ``/api/0/fork`` creates a fork of project - ``/api/0/projects`` lists all the projects - ``/api/0//`` returns all the info about project - ``/api/0///c//flag`` adds/edits flag on commit - ``/api/0///git/branches`` modifies ACL for the git repository - ``/api/0///git/modifyacls`` lists all branches in the git repository - ``/api/0///hascommit`` checks whether a specified user has commit access to repository - ``/api/0///pull-request/new`` opens a new pull request - ``/api/0///pull-request//flag`` adds/edits flag on pull request - ``/api/0///pull-request//merge`` merges a pull request - ``/api/0///watchers/update`` sets watch status for specified user - ``/_dg/anitya//`` gets/sets monitoring settings - ``/_dg/bzoverrides//`` gets/sets the bugzilla overrides for the project. Used for EPEL maintainers. - ``/_dg/orphan//`` orphans a package Messaging Schema ---------------- Following is the list of all the dist git topics that are being listened by services in Fedora Infrastructure. More information about messaging schema could be found in `Fedora Messaging documentation `_ - ``org.fedoraproject.prod.pagure.git.receive`` when commit is pushed to repository - ``org.fedoraproject.prod.pagure.pull-request.new`` when new PR is opened - ``org.fedoraproject.prod.pagure.pull-request.rebased`` when PR is rebased - ``org.fedoraproject.prod.pagure.pull-request.updated`` when PR is updated - ``org.fedoraproject.prod.pagure.pull-request.comment.added`` when comment is added to PR HTTP Endpoints -------------- Following is the list of all the dist git HTTP endpoints that are being accessed by services in Fedora Infrastructure. - ``///blob/rawhide/f/gating.yaml`` to get the Rawhide gating settings. This file is in the default branch. - ``///raw/rawhide/f/dead.package`` to check if the package is retired. This file is the only file in default branch when the package is retired. - ``///raw//f/.yaml`` to obtain definition file for module - ``/extras/pagure_bz.json`` to get list of maintainers for packages. - ``/extras/pagure_owner_alias.json`` to get owners of packages. - ``/extras/pagure_poc.json`` to get point of contacts for packages. Git Interactions ---------------- On dist git every package is also git repository and hence it could be cloned and allow the packager to do any git operation with it. Access Control -------------- Dist git is using `ACL implementation `_ from Pagure. Access Control Lists are used to control permissions of users to package sources. Web Interface Features ---------------------- This is a list of specific UI features that are not inherited from Pagure. The rest is inherited from Pagure. - Links to `Koji `_, `Bodhi `_, `Bugzilla `_, `Fedora Packages `_ and `Koschei `_ - ``Issues`` tab is just a link to bugzilla tracker for the repository - Monitoring status setting (backend implemented in `dist git `_) - Orphaning and taking orphaned projects (backend implemented in `dist git `_) Lookaside Cache --------------- https://src.fedoraproject.org/repo/pkgs/ is hosting lookaside cache, which is used by build system to obtain sources for the packages. It is hosted on same machine as dist git and contains folder structure in which the sources are stored. FAS integration --------------- Dist git is using `FAS integration `_ from Pagure.