Merge branch 'master' into fixes/api
This commit is contained in:
commit
8045a81bcf
261 changed files with 1794 additions and 1417 deletions
|
@ -32,6 +32,7 @@ When listing resources you can pass the following parameters:
|
|||
+ [Users](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/users.md)
|
||||
+ [Session](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/session.md)
|
||||
+ [Projects](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/projects.md)
|
||||
+ [Groups](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/groups.md)
|
||||
+ [Snippets](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/snippets.md)
|
||||
+ [Repositories](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/repositories.md)
|
||||
+ [Issues](https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/issues.md)
|
||||
|
|
45
doc/api/groups.md
Normal file
45
doc/api/groups.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
## List project groups
|
||||
|
||||
Get a list of groups. (As user: my groups, as admin: all groups)
|
||||
|
||||
```
|
||||
GET /groups
|
||||
```
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Foobar Group",
|
||||
"path": "foo-bar",
|
||||
"owner_id": 18
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## Details of group
|
||||
|
||||
Get all details of a group.
|
||||
|
||||
```
|
||||
GET /groups/:id
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a group
|
||||
|
||||
## New group
|
||||
|
||||
Create a new project group. Available only for admin
|
||||
|
||||
```
|
||||
POST /groups
|
||||
```
|
||||
|
||||
Parameters:
|
||||
+ `name` (required) - Email
|
||||
+ `path` - Password
|
||||
|
||||
Will return created group with status `201 Created` on success, or `404 Not found` on fail.
|
||||
|
|
@ -30,6 +30,19 @@ Parameters:
|
|||
|
||||
+ `id` (required) - The ID of a project
|
||||
|
||||
### List merge request notes
|
||||
|
||||
Get a list of merge request notes.
|
||||
|
||||
```
|
||||
GET /projects/:id/merge_requests/:merge_request_id/notes
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a project
|
||||
+ `merge_request_id` (required) - The ID of an merge request
|
||||
|
||||
### List issue notes
|
||||
|
||||
Get a list of issue notes.
|
||||
|
|
|
@ -22,6 +22,8 @@ GET /projects
|
|||
"created_at": "2012-05-23T08:00:58Z"
|
||||
},
|
||||
"private": true,
|
||||
"path": "rails",
|
||||
"path_with_namespace": "rails/rails",
|
||||
"issues_enabled": false,
|
||||
"merge_requests_enabled": false,
|
||||
"wall_enabled": true,
|
||||
|
@ -42,6 +44,8 @@ GET /projects
|
|||
"created_at": "2012-05-23T08:00:58Z"
|
||||
},
|
||||
"private": true,
|
||||
"path": "gitlab",
|
||||
"path_with_namespace": "randx/gitlab",
|
||||
"issues_enabled": true,
|
||||
"merge_requests_enabled": true,
|
||||
"wall_enabled": true,
|
||||
|
@ -78,6 +82,8 @@ Parameters:
|
|||
"created_at": "2012-05-23T08:00:58Z"
|
||||
},
|
||||
"private": true,
|
||||
"path": "gitlab",
|
||||
"path_with_namespace": "randx/gitlab",
|
||||
"issues_enabled": true,
|
||||
"merge_requests_enabled": true,
|
||||
"wall_enabled": true,
|
||||
|
|
|
@ -33,7 +33,8 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
}
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -73,7 +74,88 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
}
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
```
|
||||
|
||||
## Protect a project repository branch
|
||||
|
||||
Protect a single project repository branch.
|
||||
|
||||
```
|
||||
PUT /projects/:id/repository/branches/:branch/protect
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a project
|
||||
+ `branch` (required) - The name of the branch
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "master",
|
||||
"commit": {
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"parents": [
|
||||
{
|
||||
"id": "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
}
|
||||
],
|
||||
"tree": "46e82de44b1061621357f24c05515327f2795a95",
|
||||
"message": "add projects API",
|
||||
"author": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"committer": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
```
|
||||
|
||||
## Unprotect a project repository branch
|
||||
|
||||
Unprotect a single project repository branch.
|
||||
|
||||
```
|
||||
PUT /projects/:id/repository/branches/:branch/unprotect
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a project
|
||||
+ `branch` (required) - The name of the branch
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "master",
|
||||
"commit": {
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"parents": [
|
||||
{
|
||||
"id": "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
}
|
||||
],
|
||||
"tree": "46e82de44b1061621357f24c05515327f2795a95",
|
||||
"message": "add projects API",
|
||||
"author": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"committer": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
},
|
||||
"protected": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -110,7 +192,8 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-05-28T04:42:42-07:00",
|
||||
"committed_date": "2012-05-28T04:42:42-07:00"
|
||||
}
|
||||
},
|
||||
"protected": null
|
||||
}
|
||||
]
|
||||
```
|
||||
|
|
|
@ -20,6 +20,8 @@ GET /users
|
|||
"linkedin": "",
|
||||
"twitter": "",
|
||||
"dark_scheme": false,
|
||||
"extern_uid": "john.smith",
|
||||
"provider": "provider_name",
|
||||
"theme_id": 1
|
||||
},
|
||||
{
|
||||
|
@ -34,6 +36,8 @@ GET /users
|
|||
"linkedin": "",
|
||||
"twitter": "",
|
||||
"dark_scheme": true,
|
||||
"extern_uid": "jack.smith",
|
||||
"provider": "provider_name",
|
||||
"theme_id": 1
|
||||
}
|
||||
]
|
||||
|
@ -64,6 +68,8 @@ Parameters:
|
|||
"linkedin": "",
|
||||
"twitter": "",
|
||||
"dark_scheme": false,
|
||||
"extern_uid": "john.smith",
|
||||
"provider": "provider_name",
|
||||
"theme_id": 1
|
||||
}
|
||||
```
|
||||
|
@ -84,10 +90,47 @@ Parameters:
|
|||
+ `linkedin` - Linkedin
|
||||
+ `twitter` - Twitter account
|
||||
+ `projects_limit` - Number of projects user can create
|
||||
+ `extern_uid` - External UID
|
||||
+ `provider` - External provider name
|
||||
+ `bio` - User's bio
|
||||
|
||||
Will return created user with status `201 Created` on success, or `404 Not
|
||||
found` on fail.
|
||||
|
||||
## User modification
|
||||
Modify user. Available only for admin
|
||||
|
||||
```
|
||||
PUT /users/:id
|
||||
```
|
||||
|
||||
Parameters:
|
||||
+ `email` - Email
|
||||
+ `username` - Username
|
||||
+ `name` - Name
|
||||
+ `password` - Password
|
||||
+ `skype` - Skype ID
|
||||
+ `linkedin` - Linkedin
|
||||
+ `twitter` - Twitter account
|
||||
+ `projects_limit` - Limit projects wich user can create
|
||||
+ `extern_uid` - External UID
|
||||
+ `provider` - External provider name
|
||||
+ `bio` - User's bio
|
||||
|
||||
|
||||
Will return created user with status `200 OK` on success, or `404 Not
|
||||
found` on fail.
|
||||
|
||||
## User deletion
|
||||
Delete user. Available only for admin
|
||||
|
||||
```
|
||||
DELETE /users/:id
|
||||
```
|
||||
|
||||
Will return deleted user with status `200 OK` on success, or `404 Not
|
||||
found` on fail.
|
||||
|
||||
## Current user
|
||||
|
||||
Get currently authenticated user.
|
||||
|
|
|
@ -90,134 +90,75 @@ Install the Bundler Gem:
|
|||
|
||||
# 3. System Users
|
||||
|
||||
Create a user for Git and Gitolite:
|
||||
Create a `git` user for Gitlab:
|
||||
|
||||
sudo adduser \
|
||||
--system \
|
||||
--shell /bin/sh \
|
||||
--gecos 'Git Version Control' \
|
||||
--group \
|
||||
--disabled-password \
|
||||
--home /home/git \
|
||||
git
|
||||
sudo adduser --disabled-login --gecos 'GitLab' git
|
||||
|
||||
Create a user for GitLab:
|
||||
# 4. GitLab shell
|
||||
|
||||
sudo adduser --disabled-login --gecos 'GitLab' gitlab
|
||||
|
||||
# Add it to the git group
|
||||
sudo usermod -a -G git gitlab
|
||||
|
||||
# Generate the SSH key
|
||||
sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
|
||||
|
||||
|
||||
# 4. Gitolite
|
||||
|
||||
Clone GitLab's fork of the Gitolite source code:
|
||||
# login as git
|
||||
sudo su git
|
||||
|
||||
# go to home directory
|
||||
cd /home/git
|
||||
sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git /home/git/gitolite
|
||||
|
||||
Setup Gitolite with GitLab as its admin:
|
||||
# clone gitlab shell
|
||||
git clone https://github.com/gitlabhq/gitlab-shell.git
|
||||
|
||||
**Important Note:**
|
||||
GitLab assumes *full and unshared* control over this Gitolite installation.
|
||||
# setup
|
||||
cd gitlab-shell
|
||||
cp config.yml.example config.yml
|
||||
./bin/install
|
||||
|
||||
# Add Gitolite scripts to $PATH
|
||||
sudo -u git -H mkdir /home/git/bin
|
||||
sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile'
|
||||
sudo -u git -H sh -c 'gitolite/install -ln /home/git/bin'
|
||||
|
||||
# Copy the gitlab user's (public) SSH key ...
|
||||
sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
|
||||
sudo chmod 0444 /home/git/gitlab.pub
|
||||
|
||||
# ... and use it as the admin key for the Gitolite setup
|
||||
sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"
|
||||
|
||||
Fix the directory permissions for the configuration directory:
|
||||
|
||||
# Make sure the Gitolite config dir is owned by git
|
||||
sudo chmod 750 /home/git/.gitolite/
|
||||
sudo chown -R git:git /home/git/.gitolite/
|
||||
|
||||
Fix the directory permissions for the repositories:
|
||||
|
||||
# Make sure the repositories dir is owned by git and it stays that way
|
||||
sudo chmod -R ug+rwXs,o-rwx /home/git/repositories/
|
||||
sudo chown -R git:git /home/git/repositories/
|
||||
|
||||
|
||||
## Add domains to list to the list of known hosts
|
||||
|
||||
sudo -u gitlab -H ssh git@localhost
|
||||
sudo -u gitlab -H ssh git@YOUR_DOMAIN_NAME
|
||||
sudo -u gitlab -H ssh git@YOUR_GITOLITE_DOMAIN_NAME
|
||||
|
||||
|
||||
## Test if everything works so far
|
||||
|
||||
# Clone the admin repo so SSH adds localhost to known_hosts ...
|
||||
# ... and to be sure your users have access to Gitolite
|
||||
sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
|
||||
|
||||
# If it succeeded without errors you can remove the cloned repo
|
||||
sudo rm -rf /tmp/gitolite-admin
|
||||
|
||||
**Important Note:**
|
||||
If you can't clone the `gitolite-admin` repository: **DO NOT PROCEED WITH INSTALLATION**!
|
||||
Check the [Trouble Shooting Guide](https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide)
|
||||
and make sure you have followed all of the above steps carefully.
|
||||
|
||||
|
||||
# 5. Database
|
||||
|
||||
See `doc/install/databases.md`
|
||||
To setup the MySQL/PostgreSQL database and dependencies please see [`doc/install/databases.md`](./databases.md) .
|
||||
|
||||
|
||||
# 6. GitLab
|
||||
|
||||
# We'll install GitLab into home directory of the user "gitlab"
|
||||
cd /home/gitlab
|
||||
# We'll install GitLab into home directory of the user "git"
|
||||
cd /home/git
|
||||
|
||||
## Clone the Source
|
||||
|
||||
# Clone GitLab repository
|
||||
sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
|
||||
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
|
||||
|
||||
# Go to gitlab dir
|
||||
cd /home/gitlab/gitlab
|
||||
cd /home/git/gitlab
|
||||
|
||||
# Checkout to stable release
|
||||
sudo -u gitlab -H git checkout 4-1-stable
|
||||
sudo -u git -H git checkout 5-0-stable
|
||||
|
||||
**Note:**
|
||||
You can change `4-1-stable` to `master` if you want the *bleeding edge* version, but
|
||||
You can change `5-0-stable` to `master` if you want the *bleeding edge* version, but
|
||||
do so with caution!
|
||||
|
||||
## Configure it
|
||||
|
||||
cd /home/gitlab/gitlab
|
||||
cd /home/git/gitlab
|
||||
|
||||
# Copy the example GitLab config
|
||||
sudo -u gitlab -H cp config/gitlab.yml.example config/gitlab.yml
|
||||
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
|
||||
|
||||
# Make sure to change "localhost" to the fully-qualified domain name of your
|
||||
# host serving GitLab where necessary
|
||||
sudo -u gitlab -H vim config/gitlab.yml
|
||||
sudo -u git -H vim config/gitlab.yml
|
||||
|
||||
# Make sure GitLab can write to the log/ and tmp/ directories
|
||||
sudo chown -R gitlab log/
|
||||
sudo chown -R gitlab tmp/
|
||||
sudo chown -R git log/
|
||||
sudo chown -R git tmp/
|
||||
sudo chmod -R u+rwX log/
|
||||
sudo chmod -R u+rwX tmp/
|
||||
|
||||
# Make directory for satellites
|
||||
sudo -u gitlab -H mkdir /home/gitlab/gitlab-satellites
|
||||
sudo -u git -H mkdir /home/git/gitlab-satellites
|
||||
|
||||
# Copy the example Unicorn config
|
||||
sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rb
|
||||
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
|
||||
|
||||
**Important Note:**
|
||||
Make sure to edit both files to match your setup.
|
||||
|
@ -225,42 +166,29 @@ Make sure to edit both files to match your setup.
|
|||
## Configure GitLab DB settings
|
||||
|
||||
# Mysql
|
||||
sudo -u gitlab cp config/database.yml.mysql config/database.yml
|
||||
sudo -u git cp config/database.yml.mysql config/database.yml
|
||||
|
||||
# PostgreSQL
|
||||
sudo -u gitlab cp config/database.yml.postgresql config/database.yml
|
||||
sudo -u git cp config/database.yml.postgresql config/database.yml
|
||||
|
||||
Make sure to update username/password in config/database.yml.
|
||||
|
||||
## Install Gems
|
||||
|
||||
cd /home/gitlab/gitlab
|
||||
cd /home/git/gitlab
|
||||
|
||||
sudo gem install charlock_holmes --version '0.6.9'
|
||||
|
||||
# For MySQL (note, the option says "without")
|
||||
sudo -u gitlab -H bundle install --deployment --without development test postgres
|
||||
sudo -u git -H bundle install --deployment --without development test postgres
|
||||
|
||||
# Or for PostgreSQL
|
||||
sudo -u gitlab -H bundle install --deployment --without development test mysql
|
||||
sudo -u git -H bundle install --deployment --without development test mysql
|
||||
|
||||
## Configure Git
|
||||
|
||||
GitLab needs to be able to commit and push changes to Gitolite. In order to do
|
||||
that Git requires a username and email. (We recommend using the same address
|
||||
used for the `email.from` setting in `config/gitlab.yml`)
|
||||
|
||||
sudo -u gitlab -H git config --global user.name "GitLab"
|
||||
sudo -u gitlab -H git config --global user.email "gitlab@localhost"
|
||||
|
||||
## Setup GitLab Hooks
|
||||
|
||||
sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
|
||||
sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
|
||||
|
||||
## Initialise Database and Activate Advanced Features
|
||||
|
||||
sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production
|
||||
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
|
||||
|
||||
|
||||
## Install Init Script
|
||||
|
@ -279,11 +207,11 @@ Make GitLab start on boot:
|
|||
|
||||
Check if GitLab and its environment is configured correctly:
|
||||
|
||||
sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production
|
||||
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
|
||||
|
||||
To make sure you didn't miss anything run a more thorough check with:
|
||||
|
||||
sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production
|
||||
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
|
||||
|
||||
If all items are green, then congratulations on successfully installing GitLab!
|
||||
However there are still a few steps left.
|
||||
|
@ -356,7 +284,7 @@ a different host, you can configure its connection string via the
|
|||
|
||||
If you are running SSH on a non-standard port, you must change the gitlab user'S SSH config.
|
||||
|
||||
# Add to /home/gitlab/.ssh/config
|
||||
# Add to /home/git/.ssh/config
|
||||
host localhost # Give your setup a name (here: override localhost)
|
||||
user git # Your remote git user
|
||||
port 2222 # Your port number
|
||||
|
|
|
@ -3,37 +3,23 @@
|
|||
This is the directory structure you will end up with following the instructions in the Installation Guide.
|
||||
|
||||
|-- home
|
||||
| |-- gitlab
|
||||
| |-- git
|
||||
| |-- .ssh
|
||||
| |-- gitlab
|
||||
| |-- gitlab-satellites
|
||||
| |-- git
|
||||
| |-- .gitolite
|
||||
| |-- .ssh
|
||||
| |-- bin
|
||||
| |-- gitolite
|
||||
| |-- gitlab-shell
|
||||
| |-- repositories
|
||||
|
||||
|
||||
**/home/gitlab/.ssh**
|
||||
Contains the Gitolite admin key GitLab uses to configure Gitolite.
|
||||
**/home/git/.ssh**
|
||||
|
||||
**/home/gitlab/gitlab**
|
||||
**/home/git/gitlab**
|
||||
This is where GitLab lives.
|
||||
|
||||
**/home/gitlab/gitlab-satellites**
|
||||
**/home/git/gitlab-satellites**
|
||||
Contains a copy of all repositories with a working tree.
|
||||
It's used for merge requests, editing files, etc.
|
||||
|
||||
**/home/git/.ssh**
|
||||
Contains the SSH access configuration managed by Gitolite.
|
||||
|
||||
**/home/git/bin**
|
||||
Contains Gitolite executables.
|
||||
|
||||
**/home/git/gitolite**
|
||||
This is where Gitolite lives.
|
||||
|
||||
**/home/git/repositories**
|
||||
Holds all your repositories in bare format.
|
||||
This is the place Git uses when you pull/push to your projects.
|
||||
|
|
|
@ -81,7 +81,7 @@ Config directory owned by git:git? ... yes
|
|||
Config directory access is drwxr-x---? ... yes
|
||||
Repo base directory exists? ... yes
|
||||
Repo base owned by git:git? ... yes
|
||||
Repo base access is drwsrws---? ... yes
|
||||
Repo base access is drwxrws---? ... yes
|
||||
Can clone gitolite-admin? ... yes
|
||||
Can commit to gitolite-admin? ... yes
|
||||
post-receive hook exists? ... yes
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue