This styleguide recommends best practices to improve documentation and to keep it organized and easy to find.
-
). For example, a proper naming would be import_projects_from_github.md
. The same rule applies to images.-
) for unordered lists instead of asterisks (*
)1
) for ordered lists_
) to mark a word or text in italics**
) to mark a word or text in bold#
at the beginning of it (when using markdown). For subheadings, use ##
, ###
and so on@axil
, @rspeicher
, @dblessing
, @ashleys
. This is to ensure that no document with wrong heading is going live without an audit, thus preventing dead links and redirection issues when corrected[Text](https://example.com)
. Instead use [Text][identifier]
and at the very bottom of the document add: [identifier]: https://example.com
. This is another way to create Markdown links which keeps the document clear and concise. Bonus points if you also add an alternative text: [identifier]: https://example.com "Alternative text"
that appears when hovering your mouse on a linkimg/
in the same directory where the .md
document that you're working on is located. Always prepend their names with the name of the document that they will be included in. For example, if there is a document called twitter.md
, then a valid image name could be twitter_login_screen.png
.Inside the document:
![Proper description what the image is about](img/document_image_title.png)
---
) between the image and the text to create a horizontal line for better clarity---
) between the image and the headingNotes should be quoted with the word Note:
being bold. Use this form:
>**Note:**
This is something to note.
which renders to:
Note: This is something to note.
If the note spans across multiple lines it's OK to split the line.
>**Note:** This feature was introduced in GitSwarm 2016.1
>**Note:** This feature was introduced in GitSwarm 2016.1
, where the link identifier is named after the repository (CE) and the MR number>**Note:** This feature was introduced in GitSwarm 2016.1
. Otherwise, leave this mention outGitSwarm Restart: There are many cases that a restart/reconfigure of GitSwarm is required. To avoid duplication, link to the special document that can be found in doc/administration/restart_gitlab.md
. Usually the text will read like:
Save the file and [reconfigure GitSwarm](../administration/restart_gitlab.md)
for the changes to take effect.
If the document you are editing resides in a place other than the GitSwarm CE/EE doc/
directory, instead of the relative link, use the full path: https://www.perforce.com/perforce/doc.current/manuals/gitswarm/administration/restart_gitlab.html
. Replace reconfigure
with restart
where appropriate.
Changing a document's location is not to be taken lightly. Remember that the documentation is available to all installations under help/
and not only to GitLab.com or http://docs.gitlab.com. Make sure this is discussed with the Documentation team beforehand.
If you indeed need to change a document's location, do NOT remove the old document, but rather put a text in it that points to the new location, like:
This document was moved to [path/to/new_doc.md](path/to/new_doc.md).
where path/to/new_doc.md
is the relative path to the root directory doc/
.
For example, if you were to move doc/workflow/lfs/lfs_administration.md
to doc/administration/lfs.md
, then the steps would be:
doc/workflow/lfs/lfs_administration.md
to doc/administration/lfs.md
Replace the contents of doc/workflow/lfs/lfs_administration.md
with:
This document was moved to [administration/lfs.md](../../administration/lfs.md).
Find and replace any occurrences of the old location with the new one. A quick way to find them is to use grep
:
grep -nR "lfs_administration.md" doc/
The above command will search in the doc/
directory for lfs_administration.md
recursively and will print the file and the line where this file is mentioned. Note that we used just the filename (lfs_administration.md
) and not the whole the relative path (workflow/lfs/lfs_administration.md
).
GitSwarm currently officially supports two installation methods: source installations and package installations installations.
Whenever there is a setting that is configurable for both installation methods, prefer to document it in the CE docs to avoid duplication.
Configuration settings include:
config/
lib/support/
in generalWhen there is a list of steps to perform, usually that entails editing the configuration file and reconfiguring/restarting GitSwarm. In such case, follow the style below as a guide:
**For package installations**
1. Edit `/etc/gitswarm/gitswarm.rb`:
```ruby
external_url "https://gitswarm.example.com"
```
1. Save the file and [reconfigure] GitSwarm for the changes to take effect.
---
**For source installations**
1. Edit `config/gitlab.yml`:
```yaml
gitlab:
host: "gitswarm.example.com"
```
1. Save the file and [restart] GitSwarm for the changes to take effect.
[reconfigure]: path/to/administration/gitlab_restart.md#gitswarm-reconfigure
[restart]: path/to/administration/gitlab_restart.md#installations-from-source
In this case:
---
) are used to create an horizontal line and separate the two methodsHere is a list of must-have items. Use them in the exact order that appears on this document. Further explanation is given below.
Every method must have the REST API request. For example:
GET /projects/:id/repository/branches
Every method must have a response body (in JSON format).
Use the following table headers to describe the methods. Attributes should always be in code blocks using backticks (`).
| Attribute | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
Rendered example:
Attribute | Type | Required | Description |
---|---|---|---|
user |
string | yes | The GitSwarm username |
https://gitswarm.example.com/api/v3/
as an endpoint.9koXpg98eAheJpvBs5tK
.GET
is the default so you don't have to include it.Methods | Description |
---|---|
-H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" |
Use this method as is, whenever authentication needed |
-X POST |
Use this method when creating new objects |
-X PUT |
Use this method when updating existing objects |
-X DELETE |
Use this method when removing existing objects |
Below is a set of cURL examples that you can use in the API documentation.
Get the details of a group:
curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitswarm.example.com/api/v3/groups/gitlab-org
Create a new project under the authenticated user's namespace:
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitswarm.example.com/api/v3/projects?name=foo"
Instead of using -X POST
and appending the parameters to the URI, you can use cURL's --data
option. The example below will create a new project foo
under the authenticated user's namespace.
curl --data "name=foo" -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitswarm.example.com/api/v3/projects"
Note: In this example we create a new group. Watch carefully the single and double quotes.
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" -H "Content-Type: application/json" --data '{"path": "my-group", "name": "My group"}' https://gitswarm.example.com/api/v3/groups
Instead of using JSON or urlencode you can use multipart/form-data which properly handles data encoding:
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" -F "title=ssh-key" -F "key=ssh-rsa AAAAB3NzaC1yc2EA..." https://gitswarm.example.com/api/v3/users/25/keys
The above example is run by and administrator and will add an SSH public key titled ssh-key to user's account which has an id of 25.
Spaces or slashes (/
) may sometimes result to errors, thus it is recommended to escape them when possible. In the example below we create a new issue which contains spaces in its title. Observe how spaces are escaped using the %20
ASCII code.
curl -X POST -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitswarm.example.com/api/v3/projects/42/issues?title=Hello%20Dude"
Use %2F
for slashes (/
).
The GitSwarm API sometimes accepts arrays of strings or integers. For example, to restrict the sign-up e-mail domains of a GitSwarm instance to *.example.com
and example.net
, you would do something like this:
curl -X PUT -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" -d "domain_whitelist[]=*.example.com" -d "domain_whitelist[]=example.net" https://gitswarm.example.com/api/v3/application/settings