Commit 1a6ba7e640577a98b6db480c8e7884882fb0fa03

Authored by Dmitriy Zaporozhets
2 parents 45efba58 62673d58

Merge branch 'master' of dev.gitlab.org:gitlab/gitlabhq

@@ -127,14 +127,17 @@ or start each component separately @@ -127,14 +127,17 @@ or start each component separately
127 127
128 ### GitLab interfaces 128 ### GitLab interfaces
129 129
130 -* [GitLab API](doc/api/README.md) 130 +* [GitLab API doc](doc/api/README.md) or see the [GitLab API website](http://api.gitlab.org/)
131 131
132 -* [Rake tasks](doc/raketasks) 132 +* [Rake tasks](doc/raketasks) including a [backup and restore procedure](doc/raketasks/backup_restore.md)
133 133
134 * [Directory structure](doc/install/structure.md) 134 * [Directory structure](doc/install/structure.md)
135 135
136 -* [Databases](doc/install/databases.md) 136 +* [Database installation](doc/install/databases.md)
137 137
  138 +* [Markdown specification](doc/markdown/markdown.md)
  139 +
  140 +* [Security guide](doc/security/rack_attack.md) to throttle abusive requests
138 141
139 ### Getting help 142 ### Getting help
140 143
@@ -157,10 +160,8 @@ or start each component separately @@ -157,10 +160,8 @@ or start each component separately
157 160
158 ### Getting in touch 161 ### Getting in touch
159 162
160 -* [Core team](https://github.com/gitlabhq?tab=members)  
161 -  
162 -* [Contributors](https://github.com/gitlabhq/gitlabhq/graphs/contributors) 163 +* [Core team](http://gitlab.org/team/)
163 164
164 -* [Leader](https://github.com/randx) 165 +* [Contributors](http://contributors.gitlab.org/)
165 166
166 -* [Contact page](http://gitlab.org/contact/) 167 +* [Community](http://gitlab.org/community/)
config/database.yml.mysql
@@ -7,7 +7,7 @@ production: @@ -7,7 +7,7 @@ production:
7 reconnect: false 7 reconnect: false
8 database: gitlabhq_production 8 database: gitlabhq_production
9 pool: 10 9 pool: 10
10 - username: root 10 + username: gitlab
11 password: "secure password" 11 password: "secure password"
12 # host: localhost 12 # host: localhost
13 # socket: /tmp/mysql.sock 13 # socket: /tmp/mysql.sock
config/database.yml.postgresql
@@ -6,8 +6,8 @@ production: @@ -6,8 +6,8 @@ production:
6 encoding: unicode 6 encoding: unicode
7 database: gitlabhq_production 7 database: gitlabhq_production
8 pool: 10 8 pool: 10
9 - username: git  
10 - password: 9 + # username: git
  10 + # password:
11 # host: localhost 11 # host: localhost
12 # port: 5432 12 # port: 5432
13 # socket: /tmp/postgresql.sock 13 # socket: /tmp/postgresql.sock
config/gitlab.yml.example
@@ -56,9 +56,10 @@ production: &base @@ -56,9 +56,10 @@ production: &base
56 # signup_enabled: true 56 # signup_enabled: true
57 57
58 ## Automatic issue closing 58 ## Automatic issue closing
59 - # If a commit message matches this regular express, all issues referenced from the matched text will be closed  
60 - # if it's pushed to a project's default branch.  
61 - # issue_closing_pattern: ^([Cc]loses|[Ff]ixes) +#\d+ 59 + # If a commit message matches this regular expression, all issues referenced from the matched text will be closed.
  60 + # This happends when the commit is pushed or merged into the default branch of a project.
  61 + # When not specified the default issue_closing_pattern as specified below will be used.
  62 + # issue_closing_pattern: ([Cc]loses|[Ff]ixes) +#\d+
62 63
63 ## Default project features settings 64 ## Default project features settings
64 default_projects_features: 65 default_projects_features:
config/initializers/1_settings.rb
@@ -69,7 +69,7 @@ rescue ArgumentError # no user configured @@ -69,7 +69,7 @@ rescue ArgumentError # no user configured
69 end 69 end
70 Settings.gitlab['signup_enabled'] ||= false 70 Settings.gitlab['signup_enabled'] ||= false
71 Settings.gitlab['username_changing_enabled'] = true if Settings.gitlab['username_changing_enabled'].nil? 71 Settings.gitlab['username_changing_enabled'] = true if Settings.gitlab['username_changing_enabled'].nil?
72 -Settings.gitlab['issue_closing_pattern'] = '^([Cc]loses|[Ff]ixes) #(\d+)' if Settings.gitlab['issue_closing_pattern'].nil? 72 +Settings.gitlab['issue_closing_pattern'] = '([Cc]loses|[Ff]ixes) #(\d+)' if Settings.gitlab['issue_closing_pattern'].nil?
73 Settings.gitlab['default_projects_features'] ||= {} 73 Settings.gitlab['default_projects_features'] ||= {}
74 Settings.gitlab.default_projects_features['issues'] = true if Settings.gitlab.default_projects_features['issues'].nil? 74 Settings.gitlab.default_projects_features['issues'] = true if Settings.gitlab.default_projects_features['issues'].nil?
75 Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.gitlab.default_projects_features['merge_requests'].nil? 75 Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.gitlab.default_projects_features['merge_requests'].nil?
doc/api/README.md
@@ -117,7 +117,7 @@ When listing resources you can pass the following parameters: @@ -117,7 +117,7 @@ When listing resources you can pass the following parameters:
117 + [Deploy Keys](deploy_keys.md) 117 + [Deploy Keys](deploy_keys.md)
118 + [System Hooks](system_hooks.md) 118 + [System Hooks](system_hooks.md)
119 + [Groups](groups.md) 119 + [Groups](groups.md)
120 -+ [User Teams](user_teams.md) 120 +
121 121
122 ## Clients 122 ## Clients
123 123
doc/api/deploy_keys.md
@@ -20,13 +20,15 @@ Parameters: @@ -20,13 +20,15 @@ Parameters:
20 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4 20 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
21 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4 21 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
22 soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=", 22 soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
  23 + "created_at":"2013-10-02T10:12:29Z"
23 }, 24 },
24 { 25 {
25 "id": 3, 26 "id": 3,
26 "title" : "Another Public key", 27 "title" : "Another Public key",
27 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4 28 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
28 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4 29 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
29 - soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=" 30 + soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
  31 + "created_at":"2013-10-02T11:12:29Z"
30 } 32 }
31 ] 33 ]
32 ``` 34 ```
@@ -51,7 +53,8 @@ Parameters: @@ -51,7 +53,8 @@ Parameters:
51 "title" : "Public key", 53 "title" : "Public key",
52 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4 54 "key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
53 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4 55 596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
54 - soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=" 56 + soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
  57 + "created_at":"2013-10-02T10:12:29Z"
55 } 58 }
56 ``` 59 ```
57 60
doc/api/groups.md
@@ -8,12 +8,12 @@ GET /groups @@ -8,12 +8,12 @@ GET /groups
8 8
9 ```json 9 ```json
10 [ 10 [
11 - {  
12 - "id": 1,  
13 - "name": "Foobar Group",  
14 - "path": "foo-bar",  
15 - "owner_id": 18  
16 - } 11 + {
  12 + "id": 1,
  13 + "name": "Foobar Group",
  14 + "path": "foo-bar",
  15 + "owner_id": 18
  16 + }
17 ] 17 ]
18 ``` 18 ```
19 19
@@ -59,6 +59,19 @@ Parameters: @@ -59,6 +59,19 @@ Parameters:
59 59
60 ## Group members 60 ## Group members
61 61
  62 +
  63 +**Group access levels**
  64 +
  65 +The group access levels are defined in the `Gitlab::Access` module. Currently, these levels are recognized:
  66 +
  67 +```
  68 + GUEST = 10
  69 + REPORTER = 20
  70 + DEVELOPER = 30
  71 + MASTER = 40
  72 + OWNER = 50
  73 +```
  74 +
62 ### List group members 75 ### List group members
63 76
64 Get a list of group members viewable by the authenticated user. 77 Get a list of group members viewable by the authenticated user.
doc/api/issues.md
@@ -22,10 +22,10 @@ GET /issues @@ -22,10 +22,10 @@ GET /issues
22 "username": "john_smith", 22 "username": "john_smith",
23 "email": "john@example.com", 23 "email": "john@example.com",
24 "name": "John Smith", 24 "name": "John Smith",
25 - "blocked": false, 25 + "state": "active",
26 "created_at": "2012-05-23T08:00:58Z" 26 "created_at": "2012-05-23T08:00:58Z"
27 }, 27 },
28 - "state": 'closed', 28 + "state": "closed",
29 "updated_at": "2012-07-02T17:53:12Z", 29 "updated_at": "2012-07-02T17:53:12Z",
30 "created_at": "2012-07-02T17:53:12Z" 30 "created_at": "2012-07-02T17:53:12Z"
31 }, 31 },
@@ -42,7 +42,7 @@ GET /issues @@ -42,7 +42,7 @@ GET /issues
42 "title": "v1.0", 42 "title": "v1.0",
43 "description": "", 43 "description": "",
44 "due_date": "2012-07-20", 44 "due_date": "2012-07-20",
45 - "state": 'reopenend', 45 + "state": "reopenend",
46 "updated_at": "2012-07-04T13:42:48Z", 46 "updated_at": "2012-07-04T13:42:48Z",
47 "created_at": "2012-07-04T13:42:48Z" 47 "created_at": "2012-07-04T13:42:48Z"
48 }, 48 },
@@ -51,7 +51,7 @@ GET /issues @@ -51,7 +51,7 @@ GET /issues
51 "username": "jack_smith", 51 "username": "jack_smith",
52 "email": "jack@example.com", 52 "email": "jack@example.com",
53 "name": "Jack Smith", 53 "name": "Jack Smith",
54 - "blocked": false, 54 + "state": "active",
55 "created_at": "2012-05-23T08:01:01Z" 55 "created_at": "2012-05-23T08:01:01Z"
56 }, 56 },
57 "author": { 57 "author": {
@@ -59,10 +59,10 @@ GET /issues @@ -59,10 +59,10 @@ GET /issues
59 "username": "john_smith", 59 "username": "john_smith",
60 "email": "john@example.com", 60 "email": "john@example.com",
61 "name": "John Smith", 61 "name": "John Smith",
62 - "blocked": false, 62 + "state": "active",
63 "created_at": "2012-05-23T08:00:58Z" 63 "created_at": "2012-05-23T08:00:58Z"
64 }, 64 },
65 - "state": 'opened', 65 + "state": "opened",
66 "updated_at": "2012-07-12T13:43:19Z", 66 "updated_at": "2012-07-12T13:43:19Z",
67 "created_at": "2012-06-28T12:58:06Z" 67 "created_at": "2012-06-28T12:58:06Z"
68 } 68 }
@@ -111,7 +111,7 @@ Parameters: @@ -111,7 +111,7 @@ Parameters:
111 "title": "v1.0", 111 "title": "v1.0",
112 "description": "", 112 "description": "",
113 "due_date": "2012-07-20", 113 "due_date": "2012-07-20",
114 - "state": 'closed', 114 + "state": "closed",
115 "updated_at": "2012-07-04T13:42:48Z", 115 "updated_at": "2012-07-04T13:42:48Z",
116 "created_at": "2012-07-04T13:42:48Z" 116 "created_at": "2012-07-04T13:42:48Z"
117 }, 117 },
@@ -120,7 +120,7 @@ Parameters: @@ -120,7 +120,7 @@ Parameters:
120 "username": "jack_smith", 120 "username": "jack_smith",
121 "email": "jack@example.com", 121 "email": "jack@example.com",
122 "name": "Jack Smith", 122 "name": "Jack Smith",
123 - "blocked": false, 123 + "state": "active",
124 "created_at": "2012-05-23T08:01:01Z" 124 "created_at": "2012-05-23T08:01:01Z"
125 }, 125 },
126 "author": { 126 "author": {
@@ -128,10 +128,10 @@ Parameters: @@ -128,10 +128,10 @@ Parameters:
128 "username": "john_smith", 128 "username": "john_smith",
129 "email": "john@example.com", 129 "email": "john@example.com",
130 "name": "John Smith", 130 "name": "John Smith",
131 - "blocked": false, 131 + "state": "active",
132 "created_at": "2012-05-23T08:00:58Z" 132 "created_at": "2012-05-23T08:00:58Z"
133 }, 133 },
134 - "state": 'opened', 134 + "state": "opened",
135 "updated_at": "2012-07-12T13:43:19Z", 135 "updated_at": "2012-07-12T13:43:19Z",
136 "created_at": "2012-06-28T12:58:06Z" 136 "created_at": "2012-06-28T12:58:06Z"
137 } 137 }
doc/api/merge_requests.md
@@ -19,14 +19,13 @@ Parameters: @@ -19,14 +19,13 @@ Parameters:
19 "source_branch":"test1", 19 "source_branch":"test1",
20 "project_id":3, 20 "project_id":3,
21 "title":"test1", 21 "title":"test1",
22 - "closed":true,  
23 - "merged":false, 22 + "state":"opened",
24 "author":{ 23 "author":{
25 "id":1, 24 "id":1,
26 "username": "admin", 25 "username": "admin",
27 "email":"admin@local.host", 26 "email":"admin@local.host",
28 "name":"Administrator", 27 "name":"Administrator",
29 - "blocked":false, 28 + "state":"active",
30 "created_at":"2012-04-29T08:46:00Z" 29 "created_at":"2012-04-29T08:46:00Z"
31 }, 30 },
32 "assignee":{ 31 "assignee":{
@@ -34,7 +33,7 @@ Parameters: @@ -34,7 +33,7 @@ Parameters:
34 "username": "admin", 33 "username": "admin",
35 "email":"admin@local.host", 34 "email":"admin@local.host",
36 "name":"Administrator", 35 "name":"Administrator",
37 - "blocked":false, 36 + "state":"active",
38 "created_at":"2012-04-29T08:46:00Z" 37 "created_at":"2012-04-29T08:46:00Z"
39 } 38 }
40 } 39 }
@@ -62,14 +61,13 @@ Parameters: @@ -62,14 +61,13 @@ Parameters:
62 "source_branch":"test1", 61 "source_branch":"test1",
63 "project_id":3, 62 "project_id":3,
64 "title":"test1", 63 "title":"test1",
65 - "closed":true,  
66 - "merged":false, 64 + "state":"merged",
67 "author":{ 65 "author":{
68 "id":1, 66 "id":1,
69 "username": "admin", 67 "username": "admin",
70 "email":"admin@local.host", 68 "email":"admin@local.host",
71 "name":"Administrator", 69 "name":"Administrator",
72 - "blocked":false, 70 + "state":"active",
73 "created_at":"2012-04-29T08:46:00Z" 71 "created_at":"2012-04-29T08:46:00Z"
74 }, 72 },
75 "assignee":{ 73 "assignee":{
@@ -77,7 +75,7 @@ Parameters: @@ -77,7 +75,7 @@ Parameters:
77 "username": "admin", 75 "username": "admin",
78 "email":"admin@local.host", 76 "email":"admin@local.host",
79 "name":"Administrator", 77 "name":"Administrator",
80 - "blocked":false, 78 + "state":"active",
81 "created_at":"2012-04-29T08:46:00Z" 79 "created_at":"2012-04-29T08:46:00Z"
82 } 80 }
83 } 81 }
@@ -97,7 +95,7 @@ Parameters: @@ -97,7 +95,7 @@ Parameters:
97 + `id` (required) - The ID of a project 95 + `id` (required) - The ID of a project
98 + `source_branch` (required) - The source branch 96 + `source_branch` (required) - The source branch
99 + `target_branch` (required) - The target branch 97 + `target_branch` (required) - The target branch
100 -+ `assignee_id` - Assignee user ID 98 ++ `assignee_id` (optional) - Assignee user ID
101 + `title` (required) - Title of MR 99 + `title` (required) - Title of MR
102 100
103 ```json 101 ```json
@@ -107,14 +105,13 @@ Parameters: @@ -107,14 +105,13 @@ Parameters:
107 "source_branch":"test1", 105 "source_branch":"test1",
108 "project_id":3, 106 "project_id":3,
109 "title":"test1", 107 "title":"test1",
110 - "closed":true,  
111 - "merged":false, 108 + "state":"opened",
112 "author":{ 109 "author":{
113 "id":1, 110 "id":1,
114 "username": "admin", 111 "username": "admin",
115 "email":"admin@local.host", 112 "email":"admin@local.host",
116 "name":"Administrator", 113 "name":"Administrator",
117 - "blocked":false, 114 + "state":"active",
118 "created_at":"2012-04-29T08:46:00Z" 115 "created_at":"2012-04-29T08:46:00Z"
119 }, 116 },
120 "assignee":{ 117 "assignee":{
@@ -122,7 +119,7 @@ Parameters: @@ -122,7 +119,7 @@ Parameters:
122 "username": "admin", 119 "username": "admin",
123 "email":"admin@local.host", 120 "email":"admin@local.host",
124 "name":"Administrator", 121 "name":"Administrator",
125 - "blocked":false, 122 + "state":"active",
126 "created_at":"2012-04-29T08:46:00Z" 123 "created_at":"2012-04-29T08:46:00Z"
127 } 124 }
128 } 125 }
@@ -145,24 +142,22 @@ Parameters: @@ -145,24 +142,22 @@ Parameters:
145 + `target_branch` - The target branch 142 + `target_branch` - The target branch
146 + `assignee_id` - Assignee user ID 143 + `assignee_id` - Assignee user ID
147 + `title` - Title of MR 144 + `title` - Title of MR
148 -+ `closed` - Status of MR. true - closed  
149 -  
150 145
151 ```json 146 ```json
  147 +
152 { 148 {
153 "id":1, 149 "id":1,
154 "target_branch":"master", 150 "target_branch":"master",
155 "source_branch":"test1", 151 "source_branch":"test1",
156 "project_id":3, 152 "project_id":3,
157 "title":"test1", 153 "title":"test1",
158 - "closed":true,  
159 - "merged":false, 154 + "state":"opened",
160 "author":{ 155 "author":{
161 "id":1, 156 "id":1,
162 "username": "admin", 157 "username": "admin",
163 "email":"admin@local.host", 158 "email":"admin@local.host",
164 "name":"Administrator", 159 "name":"Administrator",
165 - "blocked":false, 160 + "state":"active",
166 "created_at":"2012-04-29T08:46:00Z" 161 "created_at":"2012-04-29T08:46:00Z"
167 }, 162 },
168 "assignee":{ 163 "assignee":{
@@ -170,7 +165,7 @@ Parameters: @@ -170,7 +165,7 @@ Parameters:
170 "username": "admin", 165 "username": "admin",
171 "email":"admin@local.host", 166 "email":"admin@local.host",
172 "name":"Administrator", 167 "name":"Administrator",
173 - "blocked":false, 168 + "state":"active",
174 "created_at":"2012-04-29T08:46:00Z" 169 "created_at":"2012-04-29T08:46:00Z"
175 } 170 }
176 } 171 }
doc/api/milestones.md
@@ -6,6 +6,21 @@ Returns a list of project milestones. @@ -6,6 +6,21 @@ Returns a list of project milestones.
6 GET /projects/:id/milestones 6 GET /projects/:id/milestones
7 ``` 7 ```
8 8
  9 +```json
  10 +[
  11 + {
  12 + "id":12,
  13 + "project_id":16,
  14 + "title":"10.0",
  15 + "description":"Version",
  16 + "due_date":"2013-11-29",
  17 + "state":"active",
  18 + "updated_at":"2013-10-02T09:24:18Z",
  19 + "created_at":"2013-10-02T09:24:18Z"
  20 + }
  21 +]
  22 +```
  23 +
9 Parameters: 24 Parameters:
10 25
11 + `id` (required) - The ID of a project 26 + `id` (required) - The ID of a project
doc/api/notes.md
@@ -8,17 +8,22 @@ Get a list of project wall notes. @@ -8,17 +8,22 @@ Get a list of project wall notes.
8 GET /projects/:id/notes 8 GET /projects/:id/notes
9 ``` 9 ```
10 10
  11 +Parameters:
  12 +
  13 ++ `id` (required) - The ID of a project
  14 +
11 ```json 15 ```json
12 [ 16 [
13 { 17 {
14 "id": 522, 18 "id": 522,
15 "body": "The solution is rather tricky", 19 "body": "The solution is rather tricky",
  20 + "attachment":null,
16 "author": { 21 "author": {
17 "id": 1, 22 "id": 1,
18 "username": "john_smith", 23 "username": "john_smith",
19 "email": "john@example.com", 24 "email": "john@example.com",
20 "name": "John Smith", 25 "name": "John Smith",
21 - "blocked": false, 26 + "state": "active",
22 "created_at": "2012-05-23T08:00:58Z" 27 "created_at": "2012-05-23T08:00:58Z"
23 }, 28 },
24 "created_at": "2012-11-27T19:16:44Z" 29 "created_at": "2012-11-27T19:16:44Z"
@@ -26,11 +31,6 @@ GET /projects/:id/notes @@ -26,11 +31,6 @@ GET /projects/:id/notes
26 ] 31 ]
27 ``` 32 ```
28 33
29 -Parameters:  
30 -  
31 -+ `id` (required) - The ID of a project  
32 -  
33 -  
34 ### Get single wall note 34 ### Get single wall note
35 35
36 Returns a single wall note. 36 Returns a single wall note.
@@ -74,6 +74,38 @@ Parameters: @@ -74,6 +74,38 @@ Parameters:
74 + `id` (required) - The ID of a project 74 + `id` (required) - The ID of a project
75 + `issue_id` (required) - The ID of an issue 75 + `issue_id` (required) - The ID of an issue
76 76
  77 +```json
  78 +[
  79 + {
  80 + "id":302,
  81 + "body":"_Status changed to closed_",
  82 + "attachment":null,
  83 + "author":{
  84 + "id":1,
  85 + "username":"pipin",
  86 + "email":"admin@example.com",
  87 + "name":"Pip",
  88 + "state":"active",
  89 + "created_at":"2013-09-30T13:46:01Z"
  90 + },
  91 + "created_at":"2013-10-02T09:22:45Z"
  92 + },
  93 + {
  94 + "id":305,
  95 + "body":"Text of the comment\r\n",
  96 + "attachment":null,
  97 + "author":{
  98 + "id":1,
  99 + "username":"pipin",
  100 + "email":"admin@example.com",
  101 + "name":"Pip",
  102 + "state":"active",
  103 + "created_at":"2013-09-30T13:46:01Z"
  104 + },
  105 + "created_at":"2013-10-02T09:56:03Z"
  106 + }
  107 +]
  108 +```
77 109
78 ### Get single issue note 110 ### Get single issue note
79 111
@@ -135,6 +167,24 @@ Parameters: @@ -135,6 +167,24 @@ Parameters:
135 + `snippet_id` (required) - The ID of a project snippet 167 + `snippet_id` (required) - The ID of a project snippet
136 + `note_id` (required) - The ID of an snippet note 168 + `note_id` (required) - The ID of an snippet note
137 169
  170 +```json
  171 +{
  172 + "id":52,
  173 + "title":"Snippet",
  174 + "file_name":"snippet.rb",
  175 + "author":{
  176 + "id":1,
  177 + "username":"pipin",
  178 + "email":"admin@example.com",
  179 + "name":"Pip",
  180 + "state":"active",
  181 + "created_at":"2013-09-30T13:46:01Z"
  182 + },
  183 + "expires_at":null,
  184 + "updated_at":"2013-10-02T07:34:20Z",
  185 + "created_at":"2013-10-02T07:34:20Z"
  186 +}
  187 +```
138 188
139 ### Create new snippet note 189 ### Create new snippet note
140 190
@@ -181,6 +231,22 @@ Parameters: @@ -181,6 +231,22 @@ Parameters:
181 + `merge_request_id` (required) - The ID of a project merge request 231 + `merge_request_id` (required) - The ID of a project merge request
182 + `note_id` (required) - The ID of a merge request note 232 + `note_id` (required) - The ID of a merge request note
183 233
  234 +```json
  235 +{
  236 + "id":301,
  237 + "body":"Comment for MR",
  238 + "attachment":null,
  239 + "author":{
  240 + "id":1,
  241 + "username":"pipin",
  242 + "email":"admin@example.com",
  243 + "name":"Pip",
  244 + "state":"active",
  245 + "created_at":"2013-09-30T13:46:01Z"
  246 + },
  247 + "created_at":"2013-10-02T08:57:14Z"
  248 +}
  249 +```
184 250
185 ### Create new merge request note 251 ### Create new merge request note
186 252
doc/api/project_snippets.md
@@ -34,7 +34,7 @@ Parameters: @@ -34,7 +34,7 @@ Parameters:
34 "username": "john_smith", 34 "username": "john_smith",
35 "email": "john@example.com", 35 "email": "john@example.com",
36 "name": "John Smith", 36 "name": "John Smith",
37 - "blocked": false, 37 + "state": "active",
38 "created_at": "2012-05-23T08:00:58Z" 38 "created_at": "2012-05-23T08:00:58Z"
39 }, 39 },
40 "expires_at": null, 40 "expires_at": null,
doc/api/projects.md
@@ -11,51 +11,72 @@ GET /projects @@ -11,51 +11,72 @@ GET /projects
11 ```json 11 ```json
12 [ 12 [
13 { 13 {
14 - "id": 3,  
15 - "name": "rails", 14 + "id": 4,
16 "description": null, 15 "description": null,
17 "default_branch": "master", 16 "default_branch": "master",
  17 + "public": false,
  18 + "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
  19 + "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
  20 + "web_url": "http://example.com/diaspora/diaspora-client",
18 "owner": { 21 "owner": {
19 - "id": 1,  
20 - "username": "john_smith",  
21 - "email": "john@example.com",  
22 - "name": "John Smith",  
23 - "blocked": false,  
24 - "created_at": "2012-05-23T08:00:58Z" 22 + "id": 3,
  23 + "name": "Diaspora",
  24 + "created_at": "2013-09-30T13: 46: 02Z"
25 }, 25 },
26 - "public": true,  
27 - "path": "rails",  
28 - "path_with_namespace": "rails/rails",  
29 - "issues_enabled": false,  
30 - "merge_requests_enabled": false,  
31 - "wall_enabled": true, 26 + "name": "Diaspora Client",
  27 + "name_with_namespace": "Diaspora / Diaspora Client",
  28 + "path": "diaspora-client",
  29 + "path_with_namespace": "diaspora/diaspora-client",
  30 + "issues_enabled": true,
  31 + "merge_requests_enabled": true,
  32 + "wall_enabled": false,
32 "wiki_enabled": true, 33 "wiki_enabled": true,
33 - "created_at": "2012-05-23T08:05:02Z",  
34 - "last_activity_at": "2012-05-23T08:05:02Z" 34 + "snippets_enabled": false,
  35 + "created_at": "2013-09-30T13: 46: 02Z",
  36 + "last_activity_at": "2013-09-30T13: 46: 02Z",
  37 + "namespace": {
  38 + "created_at": "2013-09-30T13: 46: 02Z",
  39 + "description": "",
  40 + "id": 3,
  41 + "name": "Diaspora",
  42 + "owner_id": 1,
  43 + "path": "diaspora",
  44 + "updated_at": "2013-09-30T13: 46: 02Z"
  45 + }
35 }, 46 },
36 { 47 {
37 - "id": 5,  
38 - "name": "gitlab", 48 + "id": 6,
39 "description": null, 49 "description": null,
40 - "default_branch": "api",  
41 - "owner": {  
42 - "id": 1,  
43 - "username": "john_smith",  
44 - "email": "john@example.com",  
45 - "name": "John Smith",  
46 - "blocked": false,  
47 - "created_at": "2012-05-23T08:00:58Z" 50 + "default_branch": "master",
  51 + "public": false,
  52 + "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
  53 + "http_url_to_repo": "http://example.com/brightbox/puppet.git",
  54 + "web_url": "http://example.com/brightbox/puppet",
  55 + "owner": {
  56 + "id": 4,
  57 + "name": "Brightbox",
  58 + "created_at": "2013-09-30T13:46:02Z"
48 }, 59 },
49 - "public": true,  
50 - "path": "gitlab",  
51 - "path_with_namespace": "randx/gitlab", 60 + "name": "Puppet",
  61 + "name_with_namespace": "Brightbox / Puppet",
  62 + "path": "puppet",
  63 + "path_with_namespace": "brightbox/puppet",
52 "issues_enabled": true, 64 "issues_enabled": true,
53 "merge_requests_enabled": true, 65 "merge_requests_enabled": true,
54 - "wall_enabled": true, 66 + "wall_enabled": false,
55 "wiki_enabled": true, 67 "wiki_enabled": true,
56 - "snippets_enabled": true,  
57 - "created_at": "2012-05-30T12:49:20Z",  
58 - "last_activity_at": "2012-05-23T08:05:02Z" 68 + "snippets_enabled": false,
  69 + "created_at": "2013-09-30T13:46:02Z",
  70 + "last_activity_at": "2013-09-30T13:46:02Z",
  71 + "namespace": {
  72 + "created_at": "2013-09-30T13:46:02Z",
  73 + "description": "",
  74 + "id": 4,
  75 + "name": "Brightbox",
  76 + "owner_id": 1,
  77 + "path": "brightbox",
  78 + "updated_at": "2013-09-30T13:46:02Z"
  79 + }
59 } 80 }
60 ] 81 ]
61 ``` 82 ```
@@ -76,29 +97,38 @@ Parameters: @@ -76,29 +97,38 @@ Parameters:
76 97
77 ```json 98 ```json
78 { 99 {
79 - "id": 5,  
80 - "name": "gitlab",  
81 - "name_with_namespace": "GitLab / gitlabhq", 100 + "id": 3,
82 "description": null, 101 "description": null,
83 - "default_branch": "api", 102 + "default_branch": "master",
  103 + "public": false,
  104 + "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  105 + "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  106 + "web_url": "http://example.com/diaspora/diaspora-project-site",
84 "owner": { 107 "owner": {
85 - "id": 1,  
86 - "username": "john_smith",  
87 - "email": "john@example.com",  
88 - "name": "John Smith",  
89 - "blocked": false,  
90 - "created_at": "2012-05-23T08:00:58Z" 108 + "id": 3,
  109 + "name": "Diaspora",
  110 + "created_at": "2013-09-30T13: 46: 02Z"
91 }, 111 },
92 - "public": true,  
93 - "path": "gitlab",  
94 - "path_with_namespace": "randx/gitlab", 112 + "name": "Diaspora Project Site",
  113 + "name_with_namespace": "Diaspora / Diaspora Project Site",
  114 + "path": "diaspora-project-site",
  115 + "path_with_namespace": "diaspora/diaspora-project-site",
95 "issues_enabled": true, 116 "issues_enabled": true,
96 "merge_requests_enabled": true, 117 "merge_requests_enabled": true,
97 - "wall_enabled": true, 118 + "wall_enabled": false,
98 "wiki_enabled": true, 119 "wiki_enabled": true,
99 - "snippets_enabled": true,  
100 - "created_at": "2012-05-30T12:49:20Z",  
101 - "last_activity_at": "2012-05-23T08:05:02Z" 120 + "snippets_enabled": false,
  121 + "created_at": "2013-09-30T13: 46: 02Z",
  122 + "last_activity_at": "2013-09-30T13: 46: 02Z",
  123 + "namespace": {
  124 + "created_at": "2013-09-30T13: 46: 02Z",
  125 + "description": "",
  126 + "id": 3,
  127 + "name": "Diaspora",
  128 + "owner_id": 1,
  129 + "path": "diaspora",
  130 + "updated_at": "2013-09-30T13: 46: 02Z"
  131 + }
102 } 132 }
103 ``` 133 ```
104 134
@@ -191,17 +221,6 @@ Parameters: @@ -191,17 +221,6 @@ Parameters:
191 + `snippets_enabled` (optional) 221 + `snippets_enabled` (optional)
192 + `public` (optional) 222 + `public` (optional)
193 223
194 -**Project access levels**  
195 -  
196 -The project access levels are defined in the `user_project.rb` class. Currently, these levels are recognized:  
197 -  
198 -```  
199 - GUEST = 10  
200 - REPORTER = 20  
201 - DEVELOPER = 30  
202 - MASTER = 40  
203 -```  
204 -  
205 224
206 ### Create project for user 225 ### Create project for user
207 226
@@ -261,7 +280,7 @@ Parameters: @@ -261,7 +280,7 @@ Parameters:
261 "username": "john_smith", 280 "username": "john_smith",
262 "email": "john@example.com", 281 "email": "john@example.com",
263 "name": "John Smith", 282 "name": "John Smith",
264 - "blocked": false, 283 + "state": "active",
265 "created_at": "2012-05-23T08:00:58Z", 284 "created_at": "2012-05-23T08:00:58Z",
266 "access_level": 40 285 "access_level": 40
267 } 286 }
@@ -417,6 +436,55 @@ Parameters: @@ -417,6 +436,55 @@ Parameters:
417 436
418 + `id` (required) - The ID of the project 437 + `id` (required) - The ID of the project
419 438
  439 +```json
  440 +[
  441 + {
  442 + "name":"async",
  443 + "commit": {
  444 + "id":"a2b702edecdf41f07b42653eb1abe30ce98b9fca",
  445 + "parents": [{
  446 + "id":"3f94fc7c85061973edc9906ae170cc269b07ca55"
  447 + }],
  448 + "tree": "c68537c6534a02cc2b176ca1549f4ffa190b58ee",
  449 + "message":"give caolan his credit where it's due (up top)",
  450 + "author": {
  451 + "name":"Jeremy Ashkenas",
  452 + "email":"jashkenas@example.com"
  453 + },
  454 + "committer": {
  455 + "name":"Jeremy Ashkenas",
  456 + "email":"jashkenas@example.com"
  457 + },
  458 + "authored_date":"2010-12-08T21:28:50+00:00",
  459 + "committed_date":"2010-12-08T21:28:50+00:00"
  460 + },
  461 + "protected":false
  462 + },
  463 + {
  464 + "name": "gh-pages",
  465 + "commit": {
  466 + "id": "101c10a60019fe870d21868835f65c25d64968fc",
  467 + "parents": [{
  468 + "id": "9c15d2e26945a665131af5d7b6d30a06ba338aaa"
  469 + }],
  470 + "tree": "fb5cc9d45da3014b17a876ad539976a0fb9b352a",
  471 + "message": "Underscore.js 1.5.2",
  472 + "author": {
  473 + "name": "Jeremy Ashkenas",
  474 + "email": "jashkenas@example.com"
  475 + },
  476 + "committer": {
  477 + "name": "Jeremy Ashkenas",
  478 + "email": "jashkenas@example.com"
  479 + },
  480 + "authored_date": "2013-09-07T12: 58: 21+00: 00",
  481 + "committed_date": "2013-09-07T12: 58: 21+00: 00"
  482 + },
  483 + "protected": false
  484 + }
  485 +]
  486 +
  487 +```
420 488
421 ### List single branch 489 ### List single branch
422 490
doc/api/system_hooks.md
@@ -12,6 +12,15 @@ Parameters: @@ -12,6 +12,15 @@ Parameters:
12 12
13 + **none** 13 + **none**
14 14
  15 +```json
  16 +[
  17 + {
  18 + "id":3,
  19 + "url":"http://example.com/hook",
  20 + "created_at":"2013-10-02T10:15:31Z"
  21 + }
  22 +]
  23 +```
15 24
16 ## Add new system hook hook 25 ## Add new system hook hook
17 26
@@ -34,6 +43,16 @@ Parameters: @@ -34,6 +43,16 @@ Parameters:
34 43
35 + `id` (required) - The ID of hook 44 + `id` (required) - The ID of hook
36 45
  46 +```json
  47 +{
  48 + "event_name":"project_create",
  49 + "name":"Ruby",
  50 + "path":"ruby",
  51 + "project_id":1,
  52 + "owner_name":"Someone",
  53 + "owner_email":"example@gitlabhq.com"
  54 +}
  55 +```
37 56
38 ## Delete system hook 57 ## Delete system hook
39 58
doc/api/user_teams.md
@@ -1,209 +0,0 @@ @@ -1,209 +0,0 @@
1 -## User teams  
2 -  
3 -### List user teams  
4 -  
5 -Get a list of user teams viewable by the authenticated user.  
6 -  
7 -```  
8 -GET /user_teams  
9 -```  
10 -  
11 -```json  
12 -[  
13 - {  
14 - id: 1,  
15 - name: "User team 1",  
16 - path: "user_team1",  
17 - owner_id: 1  
18 - },  
19 - {  
20 - id: 2,  
21 - name: "User team 2",  
22 - path: "user_team2",  
23 - owner_id: 1  
24 - }  
25 -]  
26 -```  
27 -  
28 -  
29 -### Get single user team  
30 -  
31 -Get a specific user team, identified by user team ID, which is viewable by the authenticated user.  
32 -  
33 -```  
34 -GET /user_teams/:id  
35 -```  
36 -  
37 -Parameters:  
38 -  
39 -+ `id` (required) - The ID of a user_team  
40 -  
41 -```json  
42 -{  
43 - id: 1,  
44 - name: "User team 1",  
45 - path: "user_team1",  
46 - owner_id: 1  
47 -}  
48 -```  
49 -  
50 -  
51 -### Create user team  
52 -  
53 -Creates new user team owned by user. Available only for admins.  
54 -  
55 -```  
56 -POST /user_teams  
57 -```  
58 -  
59 -Parameters:  
60 -  
61 -+ `name` (required) - new user team name  
62 -+ `path` (required) - new user team internal name  
63 -  
64 -  
65 -  
66 -## User team members  
67 -  
68 -### List user team members  
69 -  
70 -Get a list of project team members.  
71 -  
72 -```  
73 -GET /user_teams/:id/members  
74 -```  
75 -  
76 -Parameters:  
77 -  
78 -+ `id` (required) - The ID of a user_team  
79 -  
80 -  
81 -### Get user team member  
82 -  
83 -Gets a user team member.  
84 -  
85 -```  
86 -GET /user_teams/:id/members/:user_id  
87 -```  
88 -  
89 -Parameters:  
90 -  
91 -+ `id` (required) - The ID of a user_team  
92 -+ `user_id` (required) - The ID of a user  
93 -  
94 -```json  
95 -{  
96 - id: 2,  
97 - username: "john_doe",  
98 - email: "joh@doe.org",  
99 - name: "John Doe",  
100 - state: "active",  
101 - created_at: "2012-10-22T14:13:35Z",  
102 - access_level: 30  
103 -}  
104 -```  
105 -  
106 -  
107 -### Add user team member  
108 -  
109 -Adds a user to a user team.  
110 -  
111 -```  
112 -POST /user_teams/:id/members  
113 -```  
114 -  
115 -Parameters:  
116 -  
117 -+ `id` (required) - The ID of a user team  
118 -+ `user_id` (required) - The ID of a user to add  
119 -+ `access_level` (required) - Project access level  
120 -  
121 -  
122 -### Remove user team member  
123 -  
124 -Removes user from user team.  
125 -  
126 -```  
127 -DELETE /user_teams/:id/members/:user_id  
128 -```  
129 -  
130 -Parameters:  
131 -  
132 -+ `id` (required) - The ID of a user team  
133 -+ `user_id` (required) - The ID of a team member  
134 -  
135 -## User team projects  
136 -  
137 -### List user team projects  
138 -  
139 -Get a list of project team projects.  
140 -  
141 -```  
142 -GET /user_teams/:id/projects  
143 -```  
144 -  
145 -Parameters:  
146 -  
147 -+ `id` (required) - The ID of a user_team  
148 -  
149 -  
150 -### Get user team project  
151 -  
152 -Gets a user team project.  
153 -  
154 -```  
155 -GET /user_teams/:id/projects/:project_id  
156 -```  
157 -  
158 -Parameters:  
159 -  
160 -+ `id` (required) - The ID of a user_team  
161 -+ `project_id` (required) - The ID of a user  
162 -  
163 -```json  
164 -{  
165 - id: 12,  
166 - name: "project1",  
167 - description: null,  
168 - default_branch: "develop",  
169 - public: false,  
170 - path: "project1",  
171 - path_with_namespace: "group1/project1",  
172 - issues_enabled: false,  
173 - merge_requests_enabled: true,  
174 - wall_enabled: true,  
175 - wiki_enabled: false,  
176 - created_at: "2013-03-11T12:59:08Z",  
177 - greatest_access_level: 30  
178 -}  
179 -```  
180 -  
181 -  
182 -### Add user team project  
183 -  
184 -Adds a project to a user team.  
185 -  
186 -```  
187 -POST /user_teams/:id/projects  
188 -```  
189 -  
190 -Parameters:  
191 -  
192 -+ `id` (required) - The ID of a user team  
193 -+ `project_id` (required) - The ID of a project to add  
194 -+ `greatest_access_level` (required) - Maximum project access level  
195 -  
196 -  
197 -### Remove user team project  
198 -  
199 -Removes project from user team.  
200 -  
201 -```  
202 -DELETE /user_teams/:id/projects/:project_id  
203 -```  
204 -  
205 -Parameters:  
206 -  
207 -+ `id` (required) - The ID of a user team  
208 -+ `project_id` (required) - The ID of a team project  
209 -  
doc/api/users.md
@@ -43,7 +43,8 @@ GET /users @@ -43,7 +43,8 @@ GET /users
43 "theme_id": 1, 43 "theme_id": 1,
44 "color_scheme_id": 3, 44 "color_scheme_id": 3,
45 "is_admin": false, 45 "is_admin": false,
46 - "can_create_group": true 46 + "can_create_group": true,
  47 + "can_create_project": true
47 } 48 }
48 ] 49 ]
49 ``` 50 ```
@@ -78,7 +79,8 @@ Parameters: @@ -78,7 +79,8 @@ Parameters:
78 "theme_id": 1, 79 "theme_id": 1,
79 "color_scheme_id": 2, 80 "color_scheme_id": 2,
80 "is_admin": false, 81 "is_admin": false,
81 - "can_create_group": true 82 + "can_create_group": true,
  83 + "can_create_project": true
82 } 84 }
83 ``` 85 ```
84 86
doc/install/databases.md
@@ -58,7 +58,7 @@ GitLab supports the following databases: @@ -58,7 +58,7 @@ GitLab supports the following databases:
58 sudo -u postgres psql -d template1 58 sudo -u postgres psql -d template1
59 59
60 # Create a user for GitLab. (change $password to a real password) 60 # Create a user for GitLab. (change $password to a real password)
61 - template1=# CREATE USER git WITH PASSWORD '$password'; 61 + template1=# CREATE USER git;
62 62
63 # Create the GitLab production database & grant all privileges on database 63 # Create the GitLab production database & grant all privileges on database
64 template1=# CREATE DATABASE gitlabhq_production OWNER git; 64 template1=# CREATE DATABASE gitlabhq_production OWNER git;
doc/install/installation.md
@@ -216,18 +216,18 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup. @@ -216,18 +216,18 @@ Make sure to edit both `gitlab.yml` and `unicorn.rb` to match your setup.
216 # Mysql 216 # Mysql
217 sudo -u git cp config/database.yml.mysql config/database.yml 217 sudo -u git cp config/database.yml.mysql config/database.yml
218 218
219 - or  
220 -  
221 - # PostgreSQL  
222 - sudo -u git cp config/database.yml.postgresql config/database.yml  
223 -  
224 # Make sure to update username/password in config/database.yml. 219 # Make sure to update username/password in config/database.yml.
225 # You only need to adapt the production settings (first part). 220 # You only need to adapt the production settings (first part).
226 # If you followed the database guide then please do as follows: 221 # If you followed the database guide then please do as follows:
227 - # Change 'root' to 'gitlab'  
228 # Change 'secure password' with the value you have given to $password 222 # Change 'secure password' with the value you have given to $password
229 # You can keep the double quotes around the password 223 # You can keep the double quotes around the password
230 sudo -u git -H editor config/database.yml 224 sudo -u git -H editor config/database.yml
  225 +
  226 + or
  227 +
  228 + # PostgreSQL
  229 + sudo -u git cp config/database.yml.postgresql config/database.yml
  230 +
231 231
232 # Make config/database.yml readable to git only 232 # Make config/database.yml readable to git only
233 sudo -u git -H chmod o-rwx config/database.yml 233 sudo -u git -H chmod o-rwx config/database.yml