GitSwarm 2016.3-2 Documentation


Documentation styleguide

This styleguide recommends best practices to improve documentation and to keep it organized and easy to find.

Naming

Text

Formatting

Headings

Images

Inside the document:

Notes

New features

References

Installation guide

Changing document location

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:

  1. Copy doc/workflow/lfs/lfs_administration.md to doc/administration/lfs.md
  2. Replace the contents of doc/workflow/lfs/lfs_administration.md with:

    This document was moved to [administration/lfs.md](../../administration/lfs.md).
  3. 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).

Configuration documentation for source and package installations

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:

When 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:

API

Here is a list of must-have items. Use them in the exact order that appears on this document. Further explanation is given below.

Method description

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

cURL commands

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

cURL Examples

Below is a set of cURL examples that you can use in the API documentation.

Simple cURL command

Get the details of a group:

curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitswarm.example.com/api/v3/groups/gitlab-org

cURL example with parameters passed in the URL

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"

Post data using cURL's --data

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"

Post data using JSON content

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

Post data using form-data

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.

Escape special characters

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 (/).

Pass arrays to API calls

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