Commit 7e7f5286 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'master' of github.com:gitlabhq/gitlabhq

parents 6159ec56 4cfafd44
...@@ -11,6 +11,7 @@ v 7.3.0 ...@@ -11,6 +11,7 @@ v 7.3.0
- Store session Redis keys in 'session:gitlab:' namespace - Store session Redis keys in 'session:gitlab:' namespace
- Deprecate LDAP account takeover based on partial LDAP email / GitLab username match - Deprecate LDAP account takeover based on partial LDAP email / GitLab username match
- Keyboard shortcuts for productivity (Robert Schilling) - Keyboard shortcuts for productivity (Robert Schilling)
- API: filter issues by state (Julien Bianchi)
v 7.2.0 v 7.2.0
- Explore page - Explore page
......
...@@ -7,8 +7,14 @@ Get all issues created by authenticated user. This function takes pagination par ...@@ -7,8 +7,14 @@ Get all issues created by authenticated user. This function takes pagination par
``` ```
GET /issues GET /issues
GET /issues?state=opened
GET /issues?state=closed
``` ```
Parameters:
- `state` (optional) - Return `all` issues or just those that are `opened` or `closed`
```json ```json
[ [
{ {
...@@ -80,11 +86,14 @@ to return the list of project issues. ...@@ -80,11 +86,14 @@ to return the list of project issues.
``` ```
GET /projects/:id/issues GET /projects/:id/issues
GET /projects/:id/issues?state=opened
GET /projects/:id/issues?state=closed
``` ```
Parameters: Parameters:
- `id` (required) - The ID of a project - `id` (required) - The ID of a project
- `state` (optional) - Return `all` issues or just those that are `opened` or `closed`
## Single issue ## Single issue
......
...@@ -13,9 +13,9 @@ This is the directory structure you will end up with following the instructions ...@@ -13,9 +13,9 @@ This is the directory structure you will end up with following the instructions
* `/home/git/.ssh` - contains openssh settings. Specifically the `authorized_keys` file managed by gitlab-shell. * `/home/git/.ssh` - contains openssh settings. Specifically the `authorized_keys` file managed by gitlab-shell.
* `/home/git/gitlab` - GitLab core software. * `/home/git/gitlab` - GitLab core software.
* `/home/git/gitlab-satellites` - checked out repositories for merge requests and file editing from web UI. This can be treated as a temporary files directory. * `/home/git/gitlab-satellites` - checked out repositories for merge requests and file editing from web UI. This can be treated as a temporary files directory.
* `/home/git/gitlab-shell` - Core add-on component of gitlab. Maintains SSH cloning and other functionality. * `/home/git/gitlab-shell` - Core add-on component of GitLab. Maintains SSH cloning and other functionality.
* `/home/git/repositories` - bare repositories for all projects organized by namespace. This is where the git repositories which are pushed/pulled are maintained for all projects. **This area is critical data for projects. [Keep a backup](../raketasks/backup_restore.md)** * `/home/git/repositories` - bare repositories for all projects organized by namespace. This is where the git repositories which are pushed/pulled are maintained for all projects. **This area is critical data for projects. [Keep a backup](../raketasks/backup_restore.md)**
*Note: the default locations for gitlab-satellites and repositories can be configured in `config/gitlab.yml` of gitlab and `config.yml` of gitlab-shell.* *Note: the default locations for gitlab-satellites and repositories can be configured in `config/gitlab.yml` of GitLab and `config.yml` of gitlab-shell.*
To see a more in-depth overview see the [GitLab architecture doc](../development/architecture.md). To see a more in-depth overview see the [GitLab architecture doc](../development/architecture.md).
...@@ -73,7 +73,6 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production ...@@ -73,7 +73,6 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
```bash ```bash
sudo rm /etc/init.d/gitlab sudo rm /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
## 7. Start application ## 7. Start application
......
...@@ -108,7 +108,6 @@ sudo -u git -H bundle install --without development test postgres --deployment ...@@ -108,7 +108,6 @@ sudo -u git -H bundle install --without development test postgres --deployment
# PostgreSQL installations (note: the line below states '--without ... mysql') # PostgreSQL installations (note: the line below states '--without ... mysql')
sudo -u git -H bundle install --without development test mysql --deployment sudo -u git -H bundle install --without development test mysql --deployment
# Run database migrations # Run database migrations
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
...@@ -120,6 +119,9 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS ...@@ -120,6 +119,9 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
# Close access to gitlab-satellites for others # Close access to gitlab-satellites for others
sudo chmod u+rwx,g+rx,o-rwx /home/git/gitlab-satellites sudo chmod u+rwx,g+rx,o-rwx /home/git/gitlab-satellites
# Update init.d script
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
``` ```
## 7. Update config files ## 7. Update config files
...@@ -146,18 +148,12 @@ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers ...@@ -146,18 +148,12 @@ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
``` ```
## 8. Update Init script ## 8. Start application
```bash
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
```
## 9. Start application
sudo service gitlab start sudo service gitlab start
sudo service nginx restart sudo service nginx restart
## 10. Check application status ## 9. Check application status
Check if GitLab and its environment are configured correctly: Check if GitLab and its environment are configured correctly:
...@@ -170,7 +166,7 @@ To make sure you didn't miss anything run a more thorough check with: ...@@ -170,7 +166,7 @@ To make sure you didn't miss anything run a more thorough check with:
If all items are green, then congratulations upgrade complete! If all items are green, then congratulations upgrade complete!
## 11. Update OmniAuth configuration ## 10. Update OmniAuth configuration
When using Google omniauth login, changes of the Google account required. When using Google omniauth login, changes of the Google account required.
Ensure that `Contacts API` and the `Google+ API` are enabled in the [Google Developers Console](https://console.developers.google.com/). Ensure that `Contacts API` and the `Google+ API` are enabled in the [Google Developers Console](https://console.developers.google.com/).
......
...@@ -88,7 +88,6 @@ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab ...@@ -88,7 +88,6 @@ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
```bash ```bash
sudo rm /etc/init.d/gitlab sudo rm /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
## 8. Start application ## 8. Start application
......
...@@ -74,7 +74,6 @@ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers ...@@ -74,7 +74,6 @@ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers
```bash ```bash
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
## 7. Start application ## 7. Start application
......
...@@ -62,7 +62,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS ...@@ -62,7 +62,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
# Update init.d script # Update init.d script
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
# Close access to gitlab-satellites for others # Close access to gitlab-satellites for others
sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
......
...@@ -93,7 +93,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS ...@@ -93,7 +93,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
# Update init.d script # Update init.d script
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
### 6. Update config files ### 6. Update config files
......
...@@ -93,7 +93,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS ...@@ -93,7 +93,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
# Update init.d script # Update init.d script
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
### 6. Update config files ### 6. Update config files
......
...@@ -77,7 +77,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS ...@@ -77,7 +77,6 @@ sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS
# Update init.d script # Update init.d script
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
``` ```
### 6. Update config files ### 6. Update config files
......
...@@ -3,13 +3,28 @@ module API ...@@ -3,13 +3,28 @@ module API
class Issues < Grape::API class Issues < Grape::API
before { authenticate! } before { authenticate! }
helpers do
def filter_issues_state(issues, state = nil)
case state
when 'opened' then issues.opened
when 'closed' then issues.closed
else issues
end
end
end
resource :issues do resource :issues do
# Get currently authenticated user's issues # Get currently authenticated user's issues
# #
# Example Request: # Parameters:
# state (optional) - Return "opened" or "closed" issues
#
# Example Requests:
# GET /issues # GET /issues
# GET /issues?state=opened
# GET /issues?state=closed
get do get do
present paginate(current_user.issues), with: Entities::Issue present paginate(filter_issues_state(current_user.issues, params['state'])), with: Entities::Issue
end end
end end
...@@ -18,10 +33,14 @@ module API ...@@ -18,10 +33,14 @@ module API
# #
# Parameters: # Parameters:
# id (required) - The ID of a project # id (required) - The ID of a project
# Example Request: # state (optional) - Return "opened" or "closed" issues
#
# Example Requests:
# GET /projects/:id/issues # GET /projects/:id/issues
# GET /projects/:id/issues?state=opened
# GET /projects/:id/issues?state=closed
get ":id/issues" do get ":id/issues" do
present paginate(user_project.issues), with: Entities::Issue present paginate(filter_issues_state(user_project.issues, params['state'])), with: Entities::Issue
end end
# Get a single project issue # Get a single project issue
......
...@@ -4,6 +4,7 @@ describe API::API, api: true do ...@@ -4,6 +4,7 @@ describe API::API, api: true do
include ApiHelpers include ApiHelpers
let(:user) { create(:user) } let(:user) { create(:user) }
let!(:project) { create(:project, namespace: user.namespace ) } let!(:project) { create(:project, namespace: user.namespace ) }
let!(:closed_issue) { create(:closed_issue, author: user, assignee: user, project: project, state: :closed) }
let!(:issue) { create(:issue, author: user, assignee: user, project: project) } let!(:issue) { create(:issue, author: user, assignee: user, project: project) }
let!(:label) do let!(:label) do
create(:label, title: 'label', color: '#FFAABB', project: project) create(:label, title: 'label', color: '#FFAABB', project: project)
...@@ -32,6 +33,31 @@ describe API::API, api: true do ...@@ -32,6 +33,31 @@ describe API::API, api: true do
response.headers['Link'].should == response.headers['Link'].should ==
'<http://www.example.com/api/v3/issues?page=1&per_page=3>; rel="first", <http://www.example.com/api/v3/issues?page=1&per_page=3>; rel="last"' '<http://www.example.com/api/v3/issues?page=1&per_page=3>; rel="first", <http://www.example.com/api/v3/issues?page=1&per_page=3>; rel="last"'
end end
it 'should return an array of closed issues' do
get api('/issues?state=closed', user)
response.status.should == 200
json_response.should be_an Array
json_response.length.should == 1
json_response.first['id'].should == closed_issue.id
end
it 'should return an array of opened issues' do
get api('/issues?state=opened', user)
response.status.should == 200
json_response.should be_an Array
json_response.length.should == 1
json_response.first['id'].should == issue.id
end
it 'should return an array of all issues' do
get api('/issues?state=all', user)
response.status.should == 200
json_response.should be_an Array
json_response.length.should == 2
json_response.first['id'].should == issue.id
json_response.second['id'].should == closed_issue.id
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment