Add documentation about Pagure interactions
Signed-off-by: Akashdeep Dhar <akashdeep.dhar@gmail.com>
This commit is contained in:
parent
45e9d9bf2e
commit
9addec0744
2 changed files with 121 additions and 4 deletions
|
@ -1,4 +1,4 @@
|
||||||
Pagure to Gitlab Importer
|
Pagure to GitLab Importer
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
Purpose
|
Purpose
|
||||||
|
@ -28,7 +28,6 @@ Requirements
|
||||||
* Tool should be usable by both CentOS and Fedora users
|
* Tool should be usable by both CentOS and Fedora users
|
||||||
* Ability to access the correct namespace on GitLab
|
* Ability to access the correct namespace on GitLab
|
||||||
|
|
||||||
|
|
||||||
Nice to have
|
Nice to have
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,122 @@
|
||||||
.. _pagure:
|
.. _pagure:
|
||||||
|
|
||||||
Pagure export options
|
Exporting Namespace Assets From Pagure
|
||||||
=====================
|
====
|
||||||
|
|
||||||
|
A lot of projects related to Fedora Project and CentOS Project reside in Pagure
|
||||||
|
which makes it important for us to understand the ways they can be interacted
|
||||||
|
with and moved around when the need arises.
|
||||||
|
|
||||||
|
Elements for interaction
|
||||||
|
----
|
||||||
|
|
||||||
|
In this context, we are looking into interacting with the following elements -
|
||||||
|
|
||||||
|
Issue tickets
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
These can either be requests for adding new features, reporting of a bug,
|
||||||
|
proposal of an idea or anything else. These need to be available in the place
|
||||||
|
where the namespace assets get transferred to, in order to retain the context
|
||||||
|
around the probable action items.
|
||||||
|
|
||||||
|
Repository assets
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
These are the actual files stored in the Git repository that pertains to the
|
||||||
|
actual project. This can either be a codebase, a collection of documentation,
|
||||||
|
a group of artworks or anything else. This happens to be the primary subject
|
||||||
|
for the transfer.
|
||||||
|
|
||||||
|
We are avoiding interacting with the following elements -
|
||||||
|
|
||||||
|
Pull requests
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
Not only does it require for the pull requests to be artificially created by a
|
||||||
|
stub user (say, a bot user of some kind as we cannot guarantee the availability
|
||||||
|
of the GitLab user pertaining to the related Pagure user) in the destination
|
||||||
|
namespace but it also needs the source of the pull request (which can either be
|
||||||
|
a fork of the source namespace of a branch inside the same repository) to be
|
||||||
|
available, which might not always be the case. We strongly recommend merging
|
||||||
|
all pending pull requests that are needed and closing those that are not,
|
||||||
|
before the transfer process begins.
|
||||||
|
|
||||||
|
Ways of interaction
|
||||||
|
----
|
||||||
|
|
||||||
|
The elements that we would want to interact with, can be done so using the
|
||||||
|
following ways.
|
||||||
|
|
||||||
|
Issue tickets
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
* *Pagure API*
|
||||||
|
|
||||||
|
This provides an `extensive method <https://pagure.io/api/0/>`_ to `interact
|
||||||
|
with the issue tickets <https://pagure.io/api/0/#issues-tab>`_ pertaining to
|
||||||
|
a certain source namespace. This can be expanded upon to receive information
|
||||||
|
like issue title, issue content, assignees, tags, creation date, modified
|
||||||
|
date, comments etc. Depending on what information and how much amount of it
|
||||||
|
is requested from the API server, the interactions can be done quickly too,
|
||||||
|
paving the way for automation. The service does not seem to have rate
|
||||||
|
limiting too and hence, can be used without worry for interacting with bigger
|
||||||
|
repositories.
|
||||||
|
|
||||||
|
* *The good*
|
||||||
|
|
||||||
|
* A well structured API query with limited scope can ensure that multiple
|
||||||
|
requests are made and addressed quickly.
|
||||||
|
* This does not require any local storage space to be available in order to
|
||||||
|
make requests, unless caching is employed.
|
||||||
|
|
||||||
|
* *The bad*
|
||||||
|
|
||||||
|
* Extra assets bound to the issue ticket like images, documentation, media
|
||||||
|
files etc. cannot be reliably accessed.
|
||||||
|
* Service can be slow at times, leading to timeouts and hence, a condition
|
||||||
|
to address those during automation is needed.
|
||||||
|
|
||||||
|
* *Issues Git URL*
|
||||||
|
|
||||||
|
For the users that have a commit access to a certain source namespace, they
|
||||||
|
should be able to see an option for listing "Other Git URLs" on the project
|
||||||
|
page. Although Pagure provides methods to clone both "Issues" and "Pull
|
||||||
|
Requests" using those special Git URLs, we would only talk about that for the
|
||||||
|
former. For instance, the folks having a commit access to the
|
||||||
|
`fedora-websites <https://pagure.io/fedora-websites>`_ repository should be
|
||||||
|
able to access the issue tickets using the URL
|
||||||
|
`ssh://git@pagure.io/tickets/fedora-websites.git <ssh://git@pagure.io/tickets/fedora-websites.git>`_.
|
||||||
|
|
||||||
|
* *The good*
|
||||||
|
|
||||||
|
* A clone of the issues repository can help receive all the issue tickets
|
||||||
|
ever created in one fell swoop.
|
||||||
|
* Extra assets bound to the issue ticket like images, documentation, media
|
||||||
|
files etc. can be reliably accessed.
|
||||||
|
|
||||||
|
* *The bad*
|
||||||
|
|
||||||
|
* It can take a long time to fetch the issues repository in its entirety if
|
||||||
|
the repository has had too many of those.
|
||||||
|
* This mandatorily requires the use of a local storage space to be able to
|
||||||
|
clone and make changes locally before publish.
|
||||||
|
|
||||||
|
Repository assets
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
* *Default Git URL*
|
||||||
|
|
||||||
|
Folks can access the repository assets of the source namespace using the
|
||||||
|
default Git URL. Depending on the availability of the API keys for the users,
|
||||||
|
they can choose to either interact with the repository assets with the use of
|
||||||
|
either the HTTPS URL (for example, it would be
|
||||||
|
`https://pagure.io/fedora-websites.git <https://pagure.io/fedora-websites.git>`_
|
||||||
|
for the fedora-websites source namespace) or the SSH URL (for example, it
|
||||||
|
would be
|
||||||
|
`ssh://git@pagure.io/fedora-websites.git <ssh://git@pagure.io/fedora-websites.git>`_
|
||||||
|
for the fedora-websites source namespace). We would not go in detail with the
|
||||||
|
advantages and disadvantages of this method as there seems to be only one way
|
||||||
|
to interact with repository assets.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue