From e9ef274bb24218f49d6a7e12210df223150434f7 Mon Sep 17 00:00:00 2001 From: Antonio Huete Jimenez Date: Fri, 19 Jun 2015 09:01:35 +0200 Subject: [PATCH 01/80] Use whoami instead of $USER - Use whoami instead of relying on the existence of $USER enviroment variable which is not always present --- lib/support/init.d/gitlab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/support/init.d/gitlab b/lib/support/init.d/gitlab index 946902e2f6..a3455728a9 100755 --- a/lib/support/init.d/gitlab +++ b/lib/support/init.d/gitlab @@ -41,7 +41,7 @@ shell_path="/bin/bash" test -f /etc/default/gitlab && . /etc/default/gitlab # Switch to the app_user if it is not he/she who is running the script. -if [ "$USER" != "$app_user" ]; then +if [ `whoami` != "$app_user" ]; then eval su - "$app_user" -s $shell_path -c $(echo \")$0 "$@"$(echo \"); exit; fi From ec72aaeae7c478c671c11bd678c3bd22d79e1549 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Thu, 9 Jul 2015 15:33:42 -0700 Subject: [PATCH 02/80] added new doc about creating a new branch --- doc/gitlab-basics/README.md | 2 ++ doc/gitlab-basics/basic-git-commands.md | 29 ++++++++++------- doc/gitlab-basics/command-line-commands.md | 30 ++++++++++-------- doc/gitlab-basics/create-branch.md | 37 ++++++++++++++++++++++ doc/gitlab-basics/create-project.md | 8 ++--- doc/gitlab-basics/create-your-ssh-keys.md | 20 ++++++------ doc/gitlab-basics/start-using-git.md | 36 +++++++++------------ 7 files changed, 100 insertions(+), 62 deletions(-) create mode 100644 doc/gitlab-basics/create-branch.md diff --git a/doc/gitlab-basics/README.md b/doc/gitlab-basics/README.md index 3e4400b544..63fa7a90a2 100644 --- a/doc/gitlab-basics/README.md +++ b/doc/gitlab-basics/README.md @@ -13,3 +13,5 @@ Step-by-step guides on the basics of working with Git and GitLab. * [Create a project](create-project.md) * [Create a group](create-group.md) + +* [Create a branch](create-branch.md) diff --git a/doc/gitlab-basics/basic-git-commands.md b/doc/gitlab-basics/basic-git-commands.md index ed210ba542..52465c2431 100644 --- a/doc/gitlab-basics/basic-git-commands.md +++ b/doc/gitlab-basics/basic-git-commands.md @@ -1,58 +1,63 @@ # Basic Git commands -* Go to the master branch to pull the latest changes from there +### Go to the master branch to pull the latest changes from there ``` git checkout master ``` -* Download the latest changes in the project, so that you work on an up-to-date copy (this is important to do every time you work on a project), while you setup tracking branches +### Download the latest changes in the project +This is for you to work on an up-to-date copy (it is important to do every time you work on a project), while you setup tracking branches. ``` git pull REMOTE NAME-OF-BRANCH -u ``` (REMOTE: origin) (NAME-OF-BRANCH: could be "master" or an existing branch) -* Create a branch (remember that spaces won't be recognized, you need to use a hyphen or underscore) +### Create a branch +Spaces won't be recognized, so you need to use a hyphen or underscore. ``` git checkout -b NAME-OF-BRANCH ``` -* Work on a branch that has already been created +### Work on a branch that has already been created ``` git checkout NAME-OF-BRANCH ``` -* To see the changes you've made (it's important to be aware of what's happening and what's the status of your changes) +### View the changes you've made +It's important to be aware of what's happening and what's the status of your changes. ``` git status ``` -* Add changes to commit (you'll be able to see your changes in red when you type "git status") +### Add changes to commit +You'll see your changes in red when you type "git status". ``` git add CHANGES IN RED git commit -m "DESCRIBE THE INTENTION OF THE COMMIT" ``` -* Send changes to gitlab.com +### Send changes to gitlab.com ``` -git push origin NAME-OF-BRANCH +git push REMOTE NAME-OF-BRANCH ``` -* Throw away all changes in the Git repository, but leave unstaged things +### Delete all changes in the Git repository, but leave unstaged things ``` git checkout . ``` -* Delete all changes in the Git repository, including untracked files +### Delete all changes in the Git repository, including untracked files ``` git clean -f ``` -* Remove all the changes that you don't want to send to gitlab.com +### Remove all the changes that you don't want to send to gitlab.com ``` git add NAME-OF-FILE -all ``` -* Merge created branch with master branch. You need to be in the created branch +### Merge created branch with master branch +You need to be in the created branch. ``` git checkout NAME-OF-BRANCH git merge master diff --git a/doc/gitlab-basics/command-line-commands.md b/doc/gitlab-basics/command-line-commands.md index a596bf20c7..a8223a9b16 100644 --- a/doc/gitlab-basics/command-line-commands.md +++ b/doc/gitlab-basics/command-line-commands.md @@ -2,46 +2,47 @@ ## Start working on your project -* In Git, when you copy a project you say you "clone" it. To work on a git project locally (from your own computer), you will need to clone it. To do this, sign in to [GitLab.com](https://gitlab.com) +In Git, when you copy a project you say you "clone" it. To work on a git project locally (from your own computer), you will need to clone it. To do this, sign in to [GitLab.com](https://gitlab.com). -* When you are on your Dashboard, click on the project that you'd like to clone, which you'll find at the right side of your screen +When you are on your Dashboard, click on the project that you'd like to clone, which you'll find at the right side of your screen. ![Select a project](basicsimages/select_project.png) -* To work in the project, you can copy a link to the Git repository through a SSH or a HTTPS protocol. SSH is easier to use after it's been [setup](create-your-ssh-keys.md). When you're in the project, click on the HTTPS or SSH button at the right side of your screen. Then copy the link (you'll have to paste it on your shell in the next step) +To work in the project, you can copy a link to the Git repository through a SSH or a HTTPS protocol. SSH is easier to use after it's been [setup](create-your-ssh-keys.md). When you're in the project, click on the HTTPS or SSH button at the right side of your screen. Then copy the link (you'll have to paste it on your shell in the next step). ![Copy the HTTPS or SSH](basicsimages/https.png) ## On the command line -* To clone your project, go to your computer's shell and type the following command +### Clone your project +Go to your computer's shell and type the following command: ``` git clone PASTE HTTPS OR SSH HERE ``` -* A clone of the project will be created in your computer +A clone of the project will be created in your computer. -* Go into a project, directory or file to work in it +### Go into a project, directory or file to work in it ``` cd NAME-OF-PROJECT-OR-FILE ``` -* Go back one directory or file +### Go back one directory or file ``` cd ../ ``` -* To see what’s in the directory that you are in +### View what’s in the directory that you are in ``` ls ``` -* Create a directory +### Create a directory ``` mkdir NAME-OF-YOUR-DIRECTORY ``` -* Create a README.md or file in directory +### Create a README.md or file in directory ``` touch README.md nano README.md @@ -51,22 +52,23 @@ nano README.md #### Press: enter ``` -* Remove a file +### Remove a file ``` rm NAME-OF-FILE ``` -* Remove a directory and all of its contents +### Remove a directory and all of its contents ``` rm -rf NAME-OF-DIRECTORY ``` -* View history in the command line +### View history in the command line ``` history ``` -* Carry out commands for which the account you are using lacks authority. (You will be asked for an administrator’s password) +### Carry out commands for which the account you are using lacks authority +You will be asked for an administrator’s password. ``` sudo ``` diff --git a/doc/gitlab-basics/create-branch.md b/doc/gitlab-basics/create-branch.md new file mode 100644 index 0000000000..ea37bc377e --- /dev/null +++ b/doc/gitlab-basics/create-branch.md @@ -0,0 +1,37 @@ +# How to create a branch + +To add changes to your project in GitLab, you should create a branch. + +To create a new branch, sign in to [gitlab.com](https://gitlab.com). + +Select a project on the right side of your screen: + +![Select a project](basicsimages/select_project.png) + +Click on "commits" on the menu on the left side of your screen: + +![Commits](basicsimages/commits.png) + +Click on the "branches" tab: + +![Branches](basicsimages/branches.png) + +Click on the "new branch" button on the right side of the screen: + +![New branch](basicsimages/newbranch.png) + +Fill out the information required: + +1. Add a name for your new branch (you can't add spaces, so you can use hyphens or underscores) + +1. On the "create from" space, add the word: master or the name of the master branch + +1. Click on the button "create branch" + +![Branch info](basicsimages/branch_info.png) + +After you created a new branch, click on the files on which you'll be working. + +You will be able to find and select the name of your branch in the white box next to the project's name: + +![Branch name](basicsimages/branch_name.png) diff --git a/doc/gitlab-basics/create-project.md b/doc/gitlab-basics/create-project.md index e3963f6601..90d40cb6c5 100644 --- a/doc/gitlab-basics/create-project.md +++ b/doc/gitlab-basics/create-project.md @@ -1,14 +1,12 @@ # How to create a project in GitLab -## Create a project +To create a new project, sign in to [GitLab.com](https://gitlab.com). -* Sign in to [GitLab.com](https://gitlab.com) - -* Go to your Dashboard and click on "new project" on the right side of your screen +Go to your Dashboard and click on "new project" on the right side of your screen. ![Create a project](basicsimages/new_project.png) -* Fill out the required information +Fill out the required information: 1. Project path or the name of your project (you can't add spaces, so you can use hyphens or underscores) diff --git a/doc/gitlab-basics/create-your-ssh-keys.md b/doc/gitlab-basics/create-your-ssh-keys.md index cb699588ca..dcd3e6ffb3 100644 --- a/doc/gitlab-basics/create-your-ssh-keys.md +++ b/doc/gitlab-basics/create-your-ssh-keys.md @@ -4,34 +4,34 @@ You need to connect your computer to your GitLab account through SSH Keys. They ## Generate your SSH Key -* Create an account on GitLab. Sign up and check your email for your confirmation link +Create an account on GitLab. Sign up and check your email for your confirmation link. -* After you confirm, go to [GitLab.com](https://about.gitlab.com/) and sign in to your account +After you confirm, go to [GitLab.com](https://about.gitlab.com/) and sign in to your account. ## Add your SSH Key -* At the top right corner, click on "profile settings" +At the top right corner, click on "profile settings": ![profile settings](basicsimages/profile_settings.png) -* On the left side menu click on "SSH Keys" +On the left side menu click on "SSH Keys": ![SSH Keys](basicsimages/shh_keys.png) -* Then click on the green button "Add SSH Key" +Then click on the green button "Add SSH Key": ![Add SSH Key](basicsimages/add_sshkey.png) -* There, you should paste the SSH Key that your commandline will generate for you. Below you'll find the steps to generate it +There, you should paste the SSH Key that your command line will generate for you. Below you'll find the steps to generate it: ![Paste SSH Key](basicsimages/paste_sshkey.png) -## To generate an SSH Key on your commandline +## To generate an SSH Key on your command line -* Go to your [commandline](start-using-git.md) and follow the [instructions](../ssh/README.md) to generate it +Go to your [command line](start-using-git.md) and follow the [instructions](../ssh/README.md) to generate it. -* Copy the SSH Key that your commandline created and paste it on the "Key" box on the GitLab page. The title will be added automatically +Copy the SSH Key that your command line created and paste it on the "Key" box on the GitLab page. The title will be added automatically. ![Paste SSH Key](basicsimages/key.png) -* Now, you'll be able to use Git over SSH, instead of Git over HTTP. +Now, you'll be able to use Git over SSH, instead of Git over HTTP. diff --git a/doc/gitlab-basics/start-using-git.md b/doc/gitlab-basics/start-using-git.md index 21d93ed2e4..5b1c6c1cd4 100644 --- a/doc/gitlab-basics/start-using-git.md +++ b/doc/gitlab-basics/start-using-git.md @@ -1,10 +1,10 @@ -# Start using Git on the commandline +# Start using Git on the command line -If you want to start using a Git and GitLab, make sure that you have created an account on [GitLab.com](https://about.gitlab.com/) +If you want to start using a Git and GitLab, make sure that you have created an account on [GitLab.com](https://about.gitlab.com/). ## Open a shell -* Depending on your operating system, find the shell of your preference. Here are some suggestions +Depending on your operating system, find the shell of your preference. Here are some suggestions. - [Terminal](http://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line) on Mac OSX @@ -14,54 +14,48 @@ If you want to start using a Git and GitLab, make sure that you have created an ## Check if Git has already been installed -* Git is usually preinstalled on Mac and Linux - -* Type the following command and then press enter +Git is usually preinstalled on Mac and Linux. +Type the following command and then press enter: ``` git --version ``` -* You should receive a message that will tell you which Git version you have in your computer. If you don’t receive a "Git version" message, it means that you need to [download Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +You should receive a message that will tell you which Git version you have in your computer. If you don’t receive a "Git version" message, it means that you need to [download Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). -* If Git doesn't automatically download, there's an option on the website to [download manually](https://git-scm.com/downloads). Then follow the steps on the installation window +If Git doesn't automatically download, there's an option on the website to [download manually](https://git-scm.com/downloads). Then follow the steps on the installation window. -* After you finished installing, open a new shell and type "git --version" again to verify that it was correctly installed +After you finished installing, open a new shell and type "git --version" again to verify that it was correctly installed. ## Add your Git username and set your email -* It is important because every Git commit that you create will use this information - -* On your shell, type the following command to add your username +It is important because every Git commit that you create will use this information. +On your shell, type the following command to add your username: ``` git config --global user.name ADD YOUR USERNAME ``` -* Then verify that you have the correct username - +Then verify that you have the correct username: ``` git config --global user.name ``` -* To set your email address, type the following command - +To set your email address, type the following command: ``` git config --global user.email ADD YOUR EMAIL ``` -* To verify that you entered your email correctly, type - +To verify that you entered your email correctly, type: ``` git config --global user.email ``` -* You'll need to do this only once because you are using the "--global" option. It tells Git to always use this information for anything you do on that system. If you want to override this with a different username or email address for specific projects, you can run the command without the "--global" option when you’re in that project +You'll need to do this only once because you are using the "--global" option. It tells Git to always use this information for anything you do on that system. If you want to override this with a different username or email address for specific projects, you can run the command without the "--global" option when you’re in that project. ## Check your information -* To view the information that you entered, type - +To view the information that you entered, type: ``` git config --global --list ``` From 414cacd7f47c8c89a6a270928bbf9c8d8dcbd3ab Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 9 Jul 2015 13:21:37 -0400 Subject: [PATCH 03/80] api: expose work_in_progress flag --- doc/api/merge_requests.md | 7 +++++-- lib/api/entities.rb | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index 7b0873a911..24c0b46130 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -49,7 +49,8 @@ Parameters: "state": "active", "created_at": "2012-04-29T08:46:00Z" }, - "description":"fixed login page css paddings" + "description":"fixed login page css paddings", + "work_in_progress": false } ] ``` @@ -94,7 +95,8 @@ Parameters: "state": "active", "created_at": "2012-04-29T08:46:00Z" }, - "description":"fixed login page css paddings" + "description":"fixed login page css paddings", + "work_in_progress": false } ``` @@ -118,6 +120,7 @@ Parameters: "project_id": 4, "title": "Blanditiis beatae suscipit hic assumenda et molestias nisi asperiores repellat et.", "description": "Qui voluptatibus placeat ipsa alias quasi. Deleniti rem ut sint. Optio velit qui distinctio.", + "work_in_progress": false, "state": "reopened", "created_at": "2015-02-02T19:49:39.159Z", "updated_at": "2015-02-02T20:08:49.959Z", diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 31202fa8c1..ecf1412dee 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -171,6 +171,7 @@ module API expose :source_project_id, :target_project_id expose :label_names, as: :labels expose :description + expose :work_in_progress?, as: :work_in_progress expose :milestone, using: Entities::Milestone end From 10e8fd46b1b6b91adb253c08dba4eb53fb2a6f6d Mon Sep 17 00:00:00 2001 From: karen Carias Date: Fri, 10 Jul 2015 16:09:52 -0700 Subject: [PATCH 04/80] fixed info in doc --- doc/gitlab-basics/create-branch.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/gitlab-basics/create-branch.md b/doc/gitlab-basics/create-branch.md index ea37bc377e..b0a26176b3 100644 --- a/doc/gitlab-basics/create-branch.md +++ b/doc/gitlab-basics/create-branch.md @@ -1,10 +1,11 @@ # How to create a branch -To add changes to your project in GitLab, you should create a branch. +A branch is an independent line of development. +New commits are recorded in the history for the current branch, which results in taking the source from someone’s repository (the place where the history of your work is stored) at certain point in time, and apply your own changes to it in the history of the project. -To create a new branch, sign in to [gitlab.com](https://gitlab.com). +To add changes to your GitLab project, you should create a branch. You can do it in your shell or in [GitLab.com](https://gitlab.com). -Select a project on the right side of your screen: +To create a new branch in [GitLab.com](https://gitlab.com), sign in and then select a project on the right side of your screen: ![Select a project](basicsimages/select_project.png) @@ -24,7 +25,7 @@ Fill out the information required: 1. Add a name for your new branch (you can't add spaces, so you can use hyphens or underscores) -1. On the "create from" space, add the word: master or the name of the master branch +1. On the "create from" space, add the the name of the branch you want to branch off from 1. Click on the button "create branch" From bbd3d2c39d2068411f8d8067655d6b139a8a4201 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 13 Jul 2015 11:27:25 +0200 Subject: [PATCH 05/80] Avoid copy of strings in memory for parsing git grep result Signed-off-by: Dmitriy Zaporozhets --- app/models/repository.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 6262b5c4c9..c0bc1829e8 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -442,8 +442,7 @@ class Repository filename = nil startline = 0 - lines = result.lines - lines.each_with_index do |line, index| + result.each_line.each_with_index do |line, index| if line =~ /^.*:.*:\d+:/ ref, filename, startline = line.split(':') startline = startline.to_i - index @@ -451,11 +450,11 @@ class Repository end end - data = lines.map do |line| - line.sub(ref, '').sub(filename, '').sub(/^:-\d+-/, '').sub(/^::\d+:/, '') - end + data = "" - data = data.join("") + result.each_line do |line| + data << line.sub(ref, '').sub(filename, '').sub(/^:-\d+-/, '').sub(/^::\d+:/, '') + end OpenStruct.new( filename: filename, From 6f581841d5c01b39fcc9f5c013541136d861ebcc Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Mon, 13 Jul 2015 18:54:15 +0200 Subject: [PATCH 06/80] Remove author information from "post" in merge_requests API. From both experimenting with the API and reading the source code, this appears to not be used at all. My guess is this was copypasta from somewhere else. --- doc/api/merge_requests.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index 7b0873a911..7624fd3a3e 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -336,14 +336,6 @@ Parameters: ```json { - "author": { - "id": 1, - "username": "admin", - "email": "admin@example.com", - "name": "Administrator", - "blocked": false, - "created_at": "2012-04-29T08:46:00Z" - }, "note": "text1" } ``` From 3d6e67e44ed65eafbf81de3abb6b3c69b2500079 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Mon, 13 Jul 2015 10:36:29 -0700 Subject: [PATCH 07/80] fixed notifications title --- doc/workflow/README.md | 2 +- doc/workflow/notifications.md | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/workflow/README.md b/doc/workflow/README.md index f1959d3013..1f39d02bdf 100644 --- a/doc/workflow/README.md +++ b/doc/workflow/README.md @@ -7,7 +7,7 @@ - [Groups](groups.md) - [Keyboard shortcuts](shortcuts.md) - [Labels](labels.md) -- [Notifications](notifications.md) +- [Notification emails](notifications.md) - [Project Features](project_features.md) - [Project forking workflow](forking_workflow.md) - [Protected branches](protected_branches.md) diff --git a/doc/workflow/notifications.md b/doc/workflow/notifications.md index 17215de677..2b5f06dd1f 100644 --- a/doc/workflow/notifications.md +++ b/doc/workflow/notifications.md @@ -1,6 +1,6 @@ -# GitLab Notifications +# GitLab Notification Emails -GitLab has notifications system in place to notify a user of events important for the workflow. +GitLab has a notification system in place to notify a user of events that are important for the workflow. ## Notification settings @@ -67,5 +67,3 @@ Below is the table of events users can be notified of: | Reopen merge request | Project members [1] | [1] higher than participating | | Merge merge request | MR author [1], MR assignee [2], project members [3] | [1] [2] not disabled, [3] higher than participating | | New comment | Mentioned users [1], users participating [2], project members [3] | [1] [2] not disabled, [3] higher than participating | - - From 3020fa9945c9c15878ce043c961e764e02fa2511 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Mon, 13 Jul 2015 12:44:50 -0700 Subject: [PATCH 08/80] added link to doc --- doc/gitlab-basics/basic-git-commands.md | 5 ----- doc/gitlab-basics/create-branch.md | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/doc/gitlab-basics/basic-git-commands.md b/doc/gitlab-basics/basic-git-commands.md index 52465c2431..2b5767dd2d 100644 --- a/doc/gitlab-basics/basic-git-commands.md +++ b/doc/gitlab-basics/basic-git-commands.md @@ -51,11 +51,6 @@ git checkout . git clean -f ``` -### Remove all the changes that you don't want to send to gitlab.com -``` -git add NAME-OF-FILE -all -``` - ### Merge created branch with master branch You need to be in the created branch. ``` diff --git a/doc/gitlab-basics/create-branch.md b/doc/gitlab-basics/create-branch.md index b0a26176b3..3521de6bea 100644 --- a/doc/gitlab-basics/create-branch.md +++ b/doc/gitlab-basics/create-branch.md @@ -3,9 +3,9 @@ A branch is an independent line of development. New commits are recorded in the history for the current branch, which results in taking the source from someone’s repository (the place where the history of your work is stored) at certain point in time, and apply your own changes to it in the history of the project. -To add changes to your GitLab project, you should create a branch. You can do it in your shell or in [GitLab.com](https://gitlab.com). +To add changes to your GitLab project, you should create a branch. You can do it in your [shell](basic-git-commands.md) or in [GitLab](https://gitlab.com). -To create a new branch in [GitLab.com](https://gitlab.com), sign in and then select a project on the right side of your screen: +To create a new branch in GitLab, sign in and then select a project on the right side of your screen: ![Select a project](basicsimages/select_project.png) From b3ab0e4efb6c242cf39805fb8c94c3e6023d15ec Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Tue, 14 Jul 2015 17:59:36 +0200 Subject: [PATCH 09/80] Revert "Change default admin password from "5iveL!fe" to "password"" This reverts commit 8a01a1222875b190d32769f7a6e7a74720079d2a. --- README.md | 2 +- db/fixtures/development/01_admin.rb | 2 +- db/fixtures/production/001_admin.rb | 2 +- doc/install/installation.md | 2 +- docker/README.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7dc0ffb30e..f8ce5f22ec 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ The recommended way to install GitLab is using the provided [Omnibus packages](h There are various other options to install GitLab, please refer to the [installation page on the GitLab website](https://about.gitlab.com/installation/) for more information. -You can access a new installation with the login **`root`** and password **`password`**, after login you are required to set a unique password. +You can access a new installation with the login **`root`** and password **`5iveL!fe`**, after login you are required to set a unique password. ## Third-party applications diff --git a/db/fixtures/development/01_admin.rb b/db/fixtures/development/01_admin.rb index b25d0dfc70..bba2fc4b18 100644 --- a/db/fixtures/development/01_admin.rb +++ b/db/fixtures/development/01_admin.rb @@ -5,7 +5,7 @@ Gitlab::Seeder.quiet do s.email = 'admin@example.com' s.notification_email = 'admin@example.com' s.username = 'root' - s.password = 'password' + s.password = '5iveL!fe' s.admin = true s.projects_limit = 100 s.confirmed_at = DateTime.now diff --git a/db/fixtures/production/001_admin.rb b/db/fixtures/production/001_admin.rb index 1af8dfc0ef..1c8740f6ba 100644 --- a/db/fixtures/production/001_admin.rb +++ b/db/fixtures/production/001_admin.rb @@ -1,5 +1,5 @@ if ENV['GITLAB_ROOT_PASSWORD'].blank? - password = 'password' + password = '5iveL!fe' expire_time = Time.now else password = ENV['GITLAB_ROOT_PASSWORD'] diff --git a/doc/install/installation.md b/doc/install/installation.md index cf58abea4e..8b918cba13 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -404,7 +404,7 @@ NOTE: Supply `SANITIZE=true` environment variable to `gitlab:check` to omit proj Visit YOUR_SERVER in your web browser for your first GitLab login. The setup has created a default admin account for you. You can use it to log in: root - password + 5iveL!fe **Important Note:** On login you'll be prompted to change the password. diff --git a/docker/README.md b/docker/README.md index 293ca79f91..23093d3575 100644 --- a/docker/README.md +++ b/docker/README.md @@ -10,7 +10,7 @@ It might take a while before the docker container is responding to queries. You can check the status with something like `sudo docker logs -f gitlab`. -You can login to the web interface with username `root` and password `password`. +You can login to the web interface with username `root` and password `5iveL!fe`. Next time, you can just use docker start and stop to run the container. From 997a3b1d872f6b6b198582677acd67595bb15029 Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Tue, 14 Jul 2015 18:02:41 +0200 Subject: [PATCH 10/80] Revert password change changelog entry. --- CHANGELOG | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 97d4671bd0..12564b3bb5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -15,7 +15,6 @@ v 7.13.0 (unreleased) - Add `two_factor_enabled` field to admin user API (Stan Hu) - Fix invalid timestamps in RSS feeds (Rowan Wookey) - Fix downloading of patches on public merge requests when user logged out (Stan Hu) - - The password for the default administrator (root) account has been changed from "5iveL!fe" to "password". - Fix Error 500 when relative submodule resolves to a namespace that has a different name from its path (Stan Hu) - Extract the longest-matching ref from a commit path when multiple matches occur (Stan Hu) - Update maintenance documentation to explain no need to recompile asssets for omnibus installations (Stan Hu) From 753f34c8fa91e0caa9a305d49c28ef6dd9447be2 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 14 Jul 2015 19:46:51 +0200 Subject: [PATCH 11/80] Fix docker image --- docker/Dockerfile | 4 +++- docker/assets/wrapper | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 86f6c896a6..05521af696 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -30,7 +30,9 @@ RUN ( \ echo "" && \ echo "# Docker options" && \ echo "# Prevent Postgres from trying to allocate 25% of total memory" && \ - echo "postgresql['shared_buffers'] = '1MB'" ) >> /etc/gitlab/gitlab.rb + echo "postgresql['shared_buffers'] = '1MB'" ) >> /etc/gitlab/gitlab.rb && \ + mkdir -p /assets/ && \ + cp /etc/gitlab/gitlab.rb /assets/gitlab.rb # Expose web & ssh EXPOSE 443 80 22 diff --git a/docker/assets/wrapper b/docker/assets/wrapper index 966b2cab4a..8bc8370fbc 100755 --- a/docker/assets/wrapper +++ b/docker/assets/wrapper @@ -13,4 +13,9 @@ function entrypoint() { gitlab-ctl tail # tail all logs } +if [[ ! -e /etc/gitlab/gitlab.rb ]]; then + cp /assets/gitlab.rb /etc/gitlab/gitlab.rb + chmod 0600 /etc/gitlab/gitlab.rb +fi + entrypoint From d93911901bb14bab9c4ff57b3cad24838fc3d050 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 15 Jul 2015 11:14:15 +0000 Subject: [PATCH 12/80] Add missing changelog item --- CHANGELOG-EE | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG-EE b/CHANGELOG-EE index 8973f756a1..8469779e6f 100644 --- a/CHANGELOG-EE +++ b/CHANGELOG-EE @@ -1,6 +1,7 @@ v 7.13 (Unrelease) - Fix git hook validation on initial push to master branch. - Reset approvals on push + - Fix 500 error when the source project of an MR is deleted v 7.12.2 - Fixed the alignment of project settings icons @@ -171,4 +172,4 @@ v 6.2.0 - Use omniauth-ldap nickname attribute as GitLab username - Improve group sharing UI for installation with many groups - Fix empty LDAP group raises exception - - Respect LDAP user filter for git access + - Respect LDAP user filter for git access \ No newline at end of file From 82bb5c5e03858db094654a5ecced67a193be7931 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Wed, 15 Jul 2015 13:53:40 +0200 Subject: [PATCH 13/80] Expire Rails cache entries after two weeks This should help prevent endless Redis growth. --- CHANGELOG | 3 +++ config/application.rb | 1 + 2 files changed, 4 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 12564b3bb5..3dcf76e23d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ Please view this file on the master branch, on stable branches it's out of date. +v 7.14.0 (unreleased) + - Expire Rails cache entries after two weeks to prevent endless Redis growth + v 7.13.0 (unreleased) - Only enable HSTS header for HTTPS and port 443 (Stan Hu) - Fix user autocomplete for unauthenticated users accessing public projects (Stan Hu) diff --git a/config/application.rb b/config/application.rb index 7e899cc3b5..a96e22211e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -96,6 +96,7 @@ module Gitlab end redis_config_hash[:namespace] = 'cache:gitlab' + redis_config_hash[:expires_in] = 2.weeks # Cache should not grow forever config.cache_store = :redis_store, redis_config_hash # This is needed for gitlab-shell From d2479a25c761f2517f94048e6da888186317142b Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Wed, 15 Jul 2015 16:59:31 +0300 Subject: [PATCH 14/80] Time ago fix for compare page --- app/views/projects/merge_requests/branch_from.js.haml | 1 + app/views/projects/merge_requests/branch_to.js.haml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/views/projects/merge_requests/branch_from.js.haml b/app/views/projects/merge_requests/branch_from.js.haml index 8372afa61b..9210798f39 100644 --- a/app/views/projects/merge_requests/branch_from.js.haml +++ b/app/views/projects/merge_requests/branch_from.js.haml @@ -1,2 +1,3 @@ :plain $(".mr_source_commit").html("#{commit_to_html(@commit, @source_project, false)}"); + $('.js-timeago').timeago() diff --git a/app/views/projects/merge_requests/branch_to.js.haml b/app/views/projects/merge_requests/branch_to.js.haml index f7ede0ded5..32fe2d535f 100644 --- a/app/views/projects/merge_requests/branch_to.js.haml +++ b/app/views/projects/merge_requests/branch_to.js.haml @@ -1,2 +1,3 @@ :plain $(".mr_target_commit").html("#{commit_to_html(@commit, @target_project, false)}"); + $('.js-timeago').timeago() From 6096c0296d37287ca2612a7c88c120edc0e5dbb3 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Wed, 15 Jul 2015 11:13:40 -0700 Subject: [PATCH 15/80] added note about chef --- docker/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/README.md b/docker/README.md index 293ca79f91..d684f75dda 100644 --- a/docker/README.md +++ b/docker/README.md @@ -165,3 +165,4 @@ sudo docker push gitlab/gitlab-ce:latest Please see the [troubleshooting](troubleshooting.md) file in this directory. Note: We use `fig.yml` to have compatibility with fig and because docker-compose also supports it. +Our docker image runs chef at every start to generate GitLab configuration. From 4944df86fad5adc69451be519cf3a26407c718eb Mon Sep 17 00:00:00 2001 From: karen Carias Date: Wed, 15 Jul 2015 16:40:20 -0700 Subject: [PATCH 16/80] added additional space --- docker/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/README.md b/docker/README.md index d684f75dda..dbd30682d3 100644 --- a/docker/README.md +++ b/docker/README.md @@ -165,4 +165,5 @@ sudo docker push gitlab/gitlab-ce:latest Please see the [troubleshooting](troubleshooting.md) file in this directory. Note: We use `fig.yml` to have compatibility with fig and because docker-compose also supports it. + Our docker image runs chef at every start to generate GitLab configuration. From c8758357b16c9b8d648c6be1bed9e002c73cd0de Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 16 Jul 2015 12:13:09 +0000 Subject: [PATCH 17/80] Document should start from h1 title. Also put badges on top for easier tracking --- README.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f8ce5f22ec..8b14d6a6b1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,14 @@ +# GitLab + +[![build status](https://ci.gitlab.com/projects/1/status.png?ref=master)](https://ci.gitlab.com/projects/1?ref=master) +[![Build Status](https://semaphoreapp.com/api/v1/projects/2f1a5809-418b-4cc2-a1f4-819607579fe7/243338/badge.png)](https://semaphoreapp.com/gitlabhq/gitlabhq) +[![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.svg)](https://codeclimate.com/github/gitlabhq/gitlabhq) +[![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq?branch=master) + ## Canonical source The source of GitLab Community Edition is [hosted on GitLab.com](https://gitlab.com/gitlab-org/gitlab-ce/) and there are mirrors to make [contributing](CONTRIBUTING.md) as easy as possible. -# ![logo](https://about.gitlab.com/images/gitlab_logo.png) GitLab - ## Open source software to collaborate on code To see how GitLab looks please see the [features page on our website](https://about.gitlab.com/features/). @@ -23,16 +28,6 @@ There are two editions of GitLab. *GitLab Enterprise Edition (EE)* includes [extra features](https://about.gitlab.com/features/#compare) that are most useful for organizations with more than 100 users. To use EE and get official support please [become a subscriber](https://about.gitlab.com/pricing/). -## Code status - -- [![build status](https://ci.gitlab.com/projects/1/status.png?ref=master)](https://ci.gitlab.com/projects/1?ref=master) on ci.gitlab.com (master branch) - -- [![Build Status](https://semaphoreapp.com/api/v1/projects/2f1a5809-418b-4cc2-a1f4-819607579fe7/243338/badge.png)](https://semaphoreapp.com/gitlabhq/gitlabhq) - -- [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.svg)](https://codeclimate.com/github/gitlabhq/gitlabhq) - -- [![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq?branch=master) - ## Website On [about.gitlab.com](https://about.gitlab.com/) you can find more information about: From 53d40b8ab1275fa39e1ae4b82a228ccf731045f9 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Thu, 16 Jul 2015 11:18:10 -0700 Subject: [PATCH 18/80] changed some text --- doc/gitlab-basics/create-branch.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/gitlab-basics/create-branch.md b/doc/gitlab-basics/create-branch.md index 3521de6bea..a8afbfe53d 100644 --- a/doc/gitlab-basics/create-branch.md +++ b/doc/gitlab-basics/create-branch.md @@ -3,7 +3,7 @@ A branch is an independent line of development. New commits are recorded in the history for the current branch, which results in taking the source from someone’s repository (the place where the history of your work is stored) at certain point in time, and apply your own changes to it in the history of the project. -To add changes to your GitLab project, you should create a branch. You can do it in your [shell](basic-git-commands.md) or in [GitLab](https://gitlab.com). +To add changes to your GitLab project, you should create a branch. You can do it in your [shell](basic-git-commands.md) or in GitLab. To create a new branch in GitLab, sign in and then select a project on the right side of your screen: @@ -31,8 +31,8 @@ Fill out the information required: ![Branch info](basicsimages/branch_info.png) -After you created a new branch, click on the files on which you'll be working. - -You will be able to find and select the name of your branch in the white box next to the project's name: +### Note: + +You will be able to find and select the name of your branch in the white box next to a project's name: ![Branch name](basicsimages/branch_name.png) From 2590b16cb4c383221a7cef04a43802d43330ff1b Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Fri, 17 Jul 2015 09:50:37 +0000 Subject: [PATCH 19/80] Improve the layout of the readme. --- README.md | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8b14d6a6b1..5034a5e0b4 100644 --- a/README.md +++ b/README.md @@ -41,14 +41,6 @@ On [about.gitlab.com](https://about.gitlab.com/) you can find more information a ## Requirements -GitLab requires the following software: - -- Ubuntu/Debian/CentOS/RHEL -- Ruby (MRI) 2.0 or 2.1 -- Git 1.7.10+ -- Redis 2.0+ -- MySQL or PostgreSQL - Please see the [requirements documentation](doc/install/requirements.md) for system requirements and more information about the supported operating systems. ## Installation @@ -59,6 +51,28 @@ There are various other options to install GitLab, please refer to the [installa You can access a new installation with the login **`root`** and password **`5iveL!fe`**, after login you are required to set a unique password. +## Install a development environment + +To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). +If you do not use the GitLab Development Kit you need to install and setup all the dependencies yourself, this is a lot of work and error prone. +One small thing you also have to do when installing it yourself is to copy the example development unicorn configuration file: + + cp config/unicorn.rb.example.development config/unicorn.rb + +Instructions on how to start GitLab and how to run the tests can be found in the [development section of the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit#development). + +## Software stack + +GitLab is a Ruby on Rails application that runs on the following software: + +- Ubuntu/Debian/CentOS/RHEL +- Ruby (MRI) 2.0 or 2.1 +- Git 1.7.10+ +- Redis 2.0+ +- MySQL or PostgreSQL + +For more information please see the [architecture documentation](http://doc.gitlab.com/ce/development/architecture.html). + ## Third-party applications There are a lot of [third-party applications integrating with GitLab](https://about.gitlab.com/applications/). These include GUI Git clients, mobile applications and API wrappers for various languages. @@ -71,16 +85,6 @@ Since 2011 a minor or major version of GitLab is released on the 22nd of every m For upgrading information please see our [update page](https://about.gitlab.com/update/). -## Install a development environment - -To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). -If you do not use the GitLab Development Kit you need to install and setup all the dependencies yourself, this is a lot of work and error prone. -One small thing you also have to do when installing it yourself is to copy the example development unicorn configuration file: - - cp config/unicorn.rb.example.development config/unicorn.rb - -Instructions on how to start GitLab and how to run the tests can be found in the [development section of the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit#development). - ## Documentation All documentation can be found on [doc.gitlab.com/ce/](http://doc.gitlab.com/ce/). From 5d168588c07b230f4698142e568b56b1938c56c5 Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Fri, 17 Jul 2015 09:52:41 +0000 Subject: [PATCH 20/80] Update installation instructions. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5034a5e0b4..7452078616 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,9 @@ Please see the [requirements documentation](doc/install/requirements.md) for sys ## Installation -The recommended way to install GitLab is using the provided [Omnibus packages](https://about.gitlab.com/downloads/). Compared to an installation from source, this is faster and less error prone. Just select your operating system, download the respective package (Debian or RPM) and install it using the system's package manager. +The recommended way to install GitLab is with the [Omnibus packages](https://about.gitlab.com/downloads/) on our package server. +Compared to an installation from source, this is faster and less error prone. +Just select your operating system, download the respective package (Debian or RPM) and install it using the system's package manager. There are various other options to install GitLab, please refer to the [installation page on the GitLab website](https://about.gitlab.com/installation/) for more information. From 95400db9c8008a7abb3dd5f876710d855a7082a7 Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Fri, 17 Jul 2015 09:56:34 +0000 Subject: [PATCH 21/80] Clean up editions paragraph --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7452078616..bd663b30f3 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,12 @@ To see how GitLab looks please see the [features page on our website](https://ab ## Editions -There are two editions of GitLab. -*GitLab [Community Edition](https://about.gitlab.com/features/) (CE)* is available without any costs under an MIT license. +There are two editions of GitLab: -*GitLab Enterprise Edition (EE)* includes [extra features](https://about.gitlab.com/features/#compare) that are most useful for organizations with more than 100 users. -To use EE and get official support please [become a subscriber](https://about.gitlab.com/pricing/). +- GitLab Community Edition (CE) is available freely under the MIT Expat license. +- GitLab Enterprise Edition (EE) includes [extra features](https://about.gitlab.com/features/#compare) that are more useful for organizations with more than 100 users. To use EE and get official support please [become a subscriber](https://about.gitlab.com/pricing/). + +Included with the GitLab Omnibus Packages is [GitLab CI](https://about.gitlab.com/gitlab-ci/) that can easily build, test and deploy code. ## Website From 881fbe5070331f934fff3441dbc0e65377b030bf Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Jul 2015 13:59:40 +0200 Subject: [PATCH 22/80] Add more seed projects. Control amount with SIZE env variable Signed-off-by: Dmitriy Zaporozhets --- db/fixtures/development/04_project.rb | 35 ++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/db/fixtures/development/04_project.rb b/db/fixtures/development/04_project.rb index 8783977092..8f71198e47 100644 --- a/db/fixtures/development/04_project.rb +++ b/db/fixtures/development/04_project.rb @@ -11,9 +11,42 @@ Sidekiq::Testing.inline! do 'https://github.com/twitter/flight.git', 'https://github.com/twitter/typeahead.js.git', 'https://github.com/h5bp/html5-boilerplate.git', + 'https://github.com/google/material-design-lite.git', + 'https://github.com/jlevy/the-art-of-command-line.git', + 'https://github.com/FreeCodeCamp/freecodecamp.git', + 'https://github.com/google/deepdream.git', + 'https://github.com/jtleek/datasharing.git', + 'https://github.com/WebAssembly/design.git', + 'https://github.com/airbnb/javascript.git', + 'https://github.com/tessalt/echo-chamber-js.git', + 'https://github.com/atom/atom.git', + 'https://github.com/ipselon/react-ui-builder.git', + 'https://github.com/mattermost/platform.git', + 'https://github.com/purifycss/purifycss.git', + 'https://github.com/facebook/nuclide.git', + 'https://github.com/wbkd/awesome-d3.git', + 'https://github.com/kilimchoi/engineering-blogs.git', + 'https://github.com/gilbarbara/logos.git', + 'https://github.com/gaearon/redux.git', + 'https://github.com/awslabs/s2n.git', + 'https://github.com/arkency/reactjs_koans.git', + 'https://github.com/twbs/bootstrap.git', + 'https://github.com/chjj/ttystudio.git', + 'https://github.com/DrBoolean/mostly-adequate-guide.git', + 'https://github.com/octocat/Spoon-Knife.git', + 'https://github.com/opencontainers/runc.git', + 'https://github.com/googlesamples/android-topeka.git' ] - project_urls.each_with_index do |url, i| + # You can specify how many projects you need during seed execution + size = if ENV['SIZE'].present? + ENV['SIZE'].to_i + else + 8 + end + + + project_urls.first(size).each_with_index do |url, i| group_path, project_path = url.split('/')[-2..-1] group = Group.find_by(path: group_path) From 67ca5a53f6df0c3d0f2598c777491c0548d76e50 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Jul 2015 14:50:03 +0200 Subject: [PATCH 23/80] Build missing cache items in background job after each push Signed-off-by: Dmitriy Zaporozhets --- app/models/repository.rb | 23 +++++++++++++++++++++-- app/services/git_push_service.rb | 1 + app/services/git_tag_push_service.rb | 6 +++--- app/workers/project_cache_worker.rb | 9 +++++++++ lib/repository_cache.rb | 4 ++++ 5 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 app/workers/project_cache_worker.rb diff --git a/app/models/repository.rb b/app/models/repository.rb index 6262b5c4c9..bca14aa1a3 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -130,13 +130,32 @@ class Repository cache.fetch(:size) { raw_repository.size } end - def expire_cache + def cache_keys %i(size branch_names tag_names commit_count graph_log - readme version contribution_guide changelog license).each do |key| + readme version contribution_guide changelog license) + end + + def build_cache + cache_keys.each do |key| + unless cache.exist?(key) + send(key) + end + end + end + + def expire_cache + cache_keys.each do |key| cache.expire(key) end end + def rebuild_cache + cache_keys.each do |key| + cache.expire(key) + send(key) + end + end + def graph_log cache.fetch(:graph_log) do commits = raw_repository.log(limit: 6000, skip_merges: true, diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index 6135ae6500..c36113329e 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -61,6 +61,7 @@ class GitPushService EventCreateService.new.push(project, user, @push_data) project.execute_hooks(@push_data.dup, :push_hooks) project.execute_services(@push_data.dup, :push_hooks) + ProjectCacheWorker.perform_async(project.id) end protected diff --git a/app/services/git_tag_push_service.rb b/app/services/git_tag_push_service.rb index 075a6118da..1cc42b0b0a 100644 --- a/app/services/git_tag_push_service.rb +++ b/app/services/git_tag_push_service.rb @@ -2,15 +2,15 @@ class GitTagPushService attr_accessor :project, :user, :push_data def execute(project, user, oldrev, newrev, ref) - @project, @user = project, user + project.repository.expire_cache + @project, @user = project, user @push_data = build_push_data(oldrev, newrev, ref) EventCreateService.new.push(project, user, @push_data) project.execute_hooks(@push_data.dup, :tag_push_hooks) project.execute_services(@push_data.dup, :tag_push_hooks) - - project.repository.expire_cache + ProjectCacheWorker.perform_async(project.id) true end diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb new file mode 100644 index 0000000000..4c14565dce --- /dev/null +++ b/app/workers/project_cache_worker.rb @@ -0,0 +1,9 @@ +class ProjectCacheWorker + include Sidekiq::Worker + + sidekiq_options queue: :default + + def perform(project_id) + Project.find(project_id).repository.build_cache + end +end diff --git a/lib/repository_cache.rb b/lib/repository_cache.rb index fa016a170c..639687067e 100644 --- a/lib/repository_cache.rb +++ b/lib/repository_cache.rb @@ -18,4 +18,8 @@ class RepositoryCache def fetch(key, &block) backend.fetch(cache_key(key), &block) end + + def exist?(key) + backend.exist?(key) + end end From f0116f13354fa1e57e3ba8013ea67d3b0e193375 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Jul 2015 15:22:56 +0200 Subject: [PATCH 24/80] Store commit count in project table Signed-off-by: Dmitriy Zaporozhets --- app/helpers/projects_helper.rb | 14 ++++++++++++++ app/models/project.rb | 4 ++++ app/models/repository.rb | 12 ------------ app/services/git_push_service.rb | 1 - app/views/explore/projects/_project.html.haml | 2 +- app/views/projects/show.html.haml | 2 +- app/workers/project_cache_worker.rb | 5 ++++- app/workers/repository_import_worker.rb | 2 +- .../20150717130904_add_commits_count_to_project.rb | 5 +++++ db/schema.rb | 3 ++- lib/repository_cache.rb | 6 +++++- 11 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 db/migrate/20150717130904_add_commits_count_to_project.rb diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 78f24dbd7e..f61baf0052 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -276,4 +276,18 @@ module ProjectsHelper def readme_cache_key [@project.id, @project.commit.sha, "readme"].join('-') end + + def round_commit_count(project) + count = project.commit_count + + if count > 10000 + '10000+' + elsif count > 5000 + '5000+' + elsif count > 1000 + '1000+' + else + count + end + end end diff --git a/app/models/project.rb b/app/models/project.rb index b161cbe86b..ff372ea9aa 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -683,6 +683,10 @@ class Project < ActiveRecord::Base update_attribute(:repository_size, repository.size) end + def update_commit_count + update_attribute(:commit_count, repository.commit_count) + end + def forks_count ForkedProjectLink.where(forked_from_project_id: self.id).count end diff --git a/app/models/repository.rb b/app/models/repository.rb index bca14aa1a3..2985619fd2 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -94,18 +94,6 @@ class Repository gitlab_shell.rm_tag(path_with_namespace, tag_name) end - def round_commit_count - if commit_count > 10000 - '10000+' - elsif commit_count > 5000 - '5000+' - elsif commit_count > 1000 - '1000+' - else - commit_count - end - end - def branch_names cache.fetch(:branch_names) { raw_repository.branch_names } end diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index c36113329e..3511392d1d 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -21,7 +21,6 @@ class GitPushService project.ensure_satellite_exists project.repository.expire_cache - project.update_repository_size if push_remove_branch?(ref, newrev) @push_commits = [] diff --git a/app/views/explore/projects/_project.html.haml b/app/views/explore/projects/_project.html.haml index d65fb52937..d769c91545 100644 --- a/app/views/explore/projects/_project.html.haml +++ b/app/views/explore/projects/_project.html.haml @@ -14,7 +14,7 @@ .repo-info - unless project.empty_repo? - = link_to pluralize(project.repository.round_commit_count, 'commit'), namespace_project_commits_path(project.namespace, project, project.default_branch) + = link_to pluralize(round_commit_count(project), 'commit'), namespace_project_commits_path(project.namespace, project, project.default_branch) · = link_to pluralize(project.repository.branch_names.count, 'branch'), namespace_project_branches_path(project.namespace, project) · diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 98d9053eb1..b90cadfb1e 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -13,7 +13,7 @@ %ul.nav.nav-pills %li = link_to namespace_project_commits_path(@project.namespace, @project, @ref || @repository.root_ref) do - = pluralize(number_with_delimiter(@repository.commit_count), 'commit') + = pluralize(number_with_delimiter(@project.commit_count), 'commit') %li = link_to namespace_project_branches_path(@project.namespace, @project) do = pluralize(number_with_delimiter(@repository.branch_names.count), 'branch') diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index 4c14565dce..61416d634b 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -4,6 +4,9 @@ class ProjectCacheWorker sidekiq_options queue: :default def perform(project_id) - Project.find(project_id).repository.build_cache + project = Project.find(project_id) + project.update_repository_size + project.update_commit_count + project.repository.build_cache end end diff --git a/app/workers/repository_import_worker.rb b/app/workers/repository_import_worker.rb index e6a50afedb..94832872d1 100644 --- a/app/workers/repository_import_worker.rb +++ b/app/workers/repository_import_worker.rb @@ -28,7 +28,7 @@ class RepositoryImportWorker project.import_finish project.save project.satellite.create unless project.satellite.exists? - project.update_repository_size + ProjectCacheWorker.perform_async(project.id) Gitlab::BitbucketImport::KeyDeleter.new(project).execute if project.import_type == 'bitbucket' end end diff --git a/db/migrate/20150717130904_add_commits_count_to_project.rb b/db/migrate/20150717130904_add_commits_count_to_project.rb new file mode 100644 index 0000000000..9b46daa593 --- /dev/null +++ b/db/migrate/20150717130904_add_commits_count_to_project.rb @@ -0,0 +1,5 @@ +class AddCommitsCountToProject < ActiveRecord::Migration + def change + add_column :projects, :commit_count, :integer, default: 0 + end +end diff --git a/db/schema.rb b/db/schema.rb index d6c34a77ee..a63c2d0582 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150713160110) do +ActiveRecord::Schema.define(version: 20150717130904) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -374,6 +374,7 @@ ActiveRecord::Schema.define(version: 20150713160110) do t.integer "star_count", default: 0, null: false t.string "import_type" t.string "import_source" + t.integer "commit_count", default: 0 end add_index "projects", ["created_at", "id"], name: "index_projects_on_created_at_and_id", using: :btree diff --git a/lib/repository_cache.rb b/lib/repository_cache.rb index 639687067e..8ddc351129 100644 --- a/lib/repository_cache.rb +++ b/lib/repository_cache.rb @@ -20,6 +20,10 @@ class RepositoryCache end def exist?(key) - backend.exist?(key) + backend.exist?(cache_key(key)) + end + + def read(key) + backend.read(cache_key(key)) end end From c3e35917fbfbe64a068e387207aa510d76852e61 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Fri, 17 Jul 2015 15:26:09 +0200 Subject: [PATCH 25/80] Validate format of project_url and token for GitLab CI service. --- app/models/project_services/gitlab_ci_service.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb index c284e19fe5..5aaa4e85cb 100644 --- a/app/models/project_services/gitlab_ci_service.rb +++ b/app/models/project_services/gitlab_ci_service.rb @@ -22,8 +22,12 @@ class GitlabCiService < CiService API_PREFIX = "api/v1" prop_accessor :project_url, :token - validates :project_url, presence: true, if: :activated? - validates :token, presence: true, if: :activated? + validates :project_url, + presence: true, + format: { with: /\A#{URI.regexp(%w(http https))}\z/, message: "should be a valid url" }, if: :activated? + validates :token, + presence: true, + format: { with: /\A([A-Za-z0-9]+)\z/ }, if: :activated? after_save :compose_service_hook, if: :activated? From df2bb60f90315a77718b9122e9d06f5655750640 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 14 Jul 2015 15:20:38 -0700 Subject: [PATCH 26/80] Add support for destroying project milestones Closes https://github.com/gitlabhq/gitlabhq/issues/1504 --- CHANGELOG | 3 ++ .../projects/milestones_controller.rb | 7 ++++- .../projects/milestones/_milestone.html.haml | 4 +++ app/views/projects/milestones/show.html.haml | 3 ++ config/routes.rb | 2 +- features/project/issues/milestones.feature | 4 +++ features/steps/project/issues/milestones.rb | 8 ++++++ .../projects/milestones_controller_spec.rb | 28 +++++++++++++++++++ 8 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 spec/controllers/projects/milestones_controller_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 12564b3bb5..e3b4ad130b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ Please view this file on the master branch, on stable branches it's out of date. +v 7.14.0 (unreleased) + - Add support for destroying project milestones (Stan Hu) + v 7.13.0 (unreleased) - Only enable HSTS header for HTTPS and port 443 (Stan Hu) - Fix user autocomplete for unauthenticated users accessing public projects (Stan Hu) diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb index 61689488d1..9efe9704d1 100644 --- a/app/controllers/projects/milestones_controller.rb +++ b/app/controllers/projects/milestones_controller.rb @@ -64,7 +64,12 @@ class Projects::MilestonesController < Projects::ApplicationController end def destroy - return access_denied! unless can?(current_user, :admin_milestone, @milestone) + return access_denied! unless can?(current_user, :admin_milestone, @project) + + update_params = { milestone: nil } + @milestone.issues.each do |issue| + Issues::UpdateService.new(@project, current_user, update_params).execute(issue) + end @milestone.destroy diff --git a/app/views/projects/milestones/_milestone.html.haml b/app/views/projects/milestones/_milestone.html.haml index 14a0580f96..2ce5358fa7 100644 --- a/app/views/projects/milestones/_milestone.html.haml +++ b/app/views/projects/milestones/_milestone.html.haml @@ -5,6 +5,10 @@ %i.fa.fa-pencil-square-o Edit = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, milestone, milestone: {state_event: :close }), method: :put, remote: true, class: "btn btn-sm btn-close" + = link_to namespace_project_milestone_path(milestone.project.namespace, milestone.project, milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-sm btn-remove" do + %i.fa.fa-trash-o + Remove + %h4 = link_to_gfm truncate(milestone.title, length: 100), namespace_project_milestone_path(milestone.project.namespace, milestone.project, milestone) - if milestone.expired? and not milestone.closed? diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml index 5947498e37..7b1681df33 100644 --- a/app/views/projects/milestones/show.html.haml +++ b/app/views/projects/milestones/show.html.haml @@ -19,6 +19,9 @@ = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-grouped" - else = link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-grouped" + = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-remove" do + %i.fa.fa-trash-o + Remove %hr - if @milestone.issues.any? && @milestone.can_be_closed? diff --git a/config/routes.rb b/config/routes.rb index 055d59a0c9..2e16c3ecb3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -481,7 +481,7 @@ Gitlab::Application.routes.draw do end end - resources :milestones, except: [:destroy], constraints: { id: /\d+/ } do + resources :milestones, constraints: { id: /\d+/ } do member do put :sort_issues put :sort_merge_requests diff --git a/features/project/issues/milestones.feature b/features/project/issues/milestones.feature index 9ac65b1257..bfbaaec5a3 100644 --- a/features/project/issues/milestones.feature +++ b/features/project/issues/milestones.feature @@ -17,6 +17,10 @@ Feature: Project Issues Milestones And I submit new milestone "v2.3" Then I should see milestone "v2.3" + Scenario: I delete new milestone + Given I click link to remove milestone "v2.2" + And I should see no milestones + @javascript Scenario: Listing closed issues Given the milestone has open and closed issues diff --git a/features/steps/project/issues/milestones.rb b/features/steps/project/issues/milestones.rb index 708c524394..61e62c2adb 100644 --- a/features/steps/project/issues/milestones.rb +++ b/features/steps/project/issues/milestones.rb @@ -56,4 +56,12 @@ class Spinach::Features::ProjectIssuesMilestones < Spinach::FeatureSteps step 'I should see 3 issues' do expect(page).to have_selector('#tab-issues li.issue-row', count: 4) end + + step 'I click link to remove milestone "v2.2"' do + click_link 'Remove' + end + + step 'I should see no milestones' do + expect(page).to have_content('No milestones to show') + end end diff --git a/spec/controllers/projects/milestones_controller_spec.rb b/spec/controllers/projects/milestones_controller_spec.rb new file mode 100644 index 0000000000..d3868c1320 --- /dev/null +++ b/spec/controllers/projects/milestones_controller_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe Projects::MilestonesController do + let(:project) { create(:project) } + let(:user) { create(:user) } + let(:milestone) { create(:milestone, project: project) } + let(:issue) { create(:issue, project: project, milestone: milestone) } + + before do + sign_in(user) + project.team << [user, :master] + controller.instance_variable_set(:@project, project) + end + + describe "#destroy" do + it "should remove milestone" do + expect(issue.milestone_id).to eq(milestone.id) + delete :destroy, namespace_id: project.namespace.id, project_id: project.id, id: milestone.id, format: :js + expect(response).to be_success + expect { Milestone.find(milestone.id) }.to raise_exception(ActiveRecord::RecordNotFound) + issue.reload + expect(issue.milestone_id).to eq(nil) + # Check system note left for milestone removal + last_note = project.issues.find(issue.id).notes[-1].note + expect(last_note).to eq('Milestone removed') + end + end +end From 302c52551a0155f3955144690f1b67ac4ef98282 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Fri, 17 Jul 2015 15:58:26 +0200 Subject: [PATCH 27/80] Fix failing specs after adding format verification for token and project url in gitlab ci service. --- spec/requests/api/projects_spec.rb | 2 +- spec/requests/api/services_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 4178bb2e83..5bd8206b89 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -89,7 +89,7 @@ describe API::API, api: true do it 'returns projects in the correct order when ci_enabled_first parameter is passed' do [project, project2, project3].each{ |project| project.build_missing_services } - project2.gitlab_ci_service.update(active: true, token: "token", project_url: "url") + project2.gitlab_ci_service.update(active: true, token: "token", project_url: "http://ci.example.com/projects/1") get api('/projects', user), { ci_enabled_first: 'true' } expect(response.status).to eq(200) expect(json_response).to be_an Array diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb index 51c543578d..cedb5f15ea 100644 --- a/spec/requests/api/services_spec.rb +++ b/spec/requests/api/services_spec.rb @@ -7,7 +7,7 @@ describe API::API, api: true do describe "POST /projects/:id/services/gitlab-ci" do it "should update gitlab-ci settings" do - put api("/projects/#{project.id}/services/gitlab-ci", user), token: 'secret-token', project_url: "http://ci.example.com/projects/1" + put api("/projects/#{project.id}/services/gitlab-ci", user), token: 'secrettoken', project_url: "http://ci.example.com/projects/1" expect(response.status).to eq(200) end From 67654a44d13632e2bc8c5637baef4459a58d65b1 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Jul 2015 16:03:38 +0200 Subject: [PATCH 28/80] Avoid cache building for super-weird case when repository root_ref is nil Signed-off-by: Dmitriy Zaporozhets --- app/workers/project_cache_worker.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index 61416d634b..55cb6af232 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -7,6 +7,9 @@ class ProjectCacheWorker project = Project.find(project_id) project.update_repository_size project.update_commit_count - project.repository.build_cache + + if project.repository.root_ref + project.repository.build_cache + end end end From 559c363b1e0063550cf97de4f737daed9e0f3005 Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Fri, 17 Jul 2015 16:32:06 +0200 Subject: [PATCH 29/80] The release manager owns the stable branches I think this helps the release manager because it means they don't have to worry about others pushing commits at the last minute. --- doc/release/monthly.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/release/monthly.md b/doc/release/monthly.md index 3bc9218721..ca9696e957 100644 --- a/doc/release/monthly.md +++ b/doc/release/monthly.md @@ -6,6 +6,7 @@ It starts 7 working days before the release. The release manager doesn't have to perform all the work but must ensure someone is assigned. The current release manager must schedule the appointment of the next release manager. The new release manager should create overall issue to track the progress. +The release manager should be the only person pushing/merging commits to the x-y-stable branches. ## Release Manager From 5bac64552d7852691edb3fed80723bc74ee62e33 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 17 Jul 2015 07:32:17 -0700 Subject: [PATCH 30/80] Fix bug where clicking on the link icon on a file would result in "L#undefined" in the URL Closes #2002 --- app/assets/javascripts/line_highlighter.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/line_highlighter.js.coffee b/app/assets/javascripts/line_highlighter.js.coffee index a8b3c1fa33..e604e6025c 100644 --- a/app/assets/javascripts/line_highlighter.js.coffee +++ b/app/assets/javascripts/line_highlighter.js.coffee @@ -70,7 +70,7 @@ class @LineHighlighter @clearHighlight() - lineNumber = $(event.target).data('line-number') + lineNumber = $(event.target).closest('a').data('line-number') current = @hashToRange(@_hash) unless current[0] && event.shiftKey From 114465c3b22c05c83743de319605ca072a122468 Mon Sep 17 00:00:00 2001 From: Job van der Voort Date: Fri, 17 Jul 2015 16:47:54 +0200 Subject: [PATCH 31/80] new documentation on merge request approvals --- doc/workflow/README.md | 2 +- doc/workflow/approval_for_merge_requests.md | 18 ----- .../approval_for_merge_requests/mr.png | Bin 169187 -> 0 bytes .../approval_for_merge_requests/settings.png | Bin 146958 -> 0 bytes doc/workflow/merge_request_approvals.md | 66 ++++++++++++++++++ .../1_named_approval.png | Bin 0 -> 35216 bytes .../merge_request_approvals/2_approvals.png | Bin 0 -> 31572 bytes .../2_named_approvals.png | Bin 0 -> 47499 bytes .../merge_request_approvals/approvals_mr.png | Bin 0 -> 36522 bytes .../approvals_settings.png | Bin 0 -> 57958 bytes 10 files changed, 67 insertions(+), 19 deletions(-) delete mode 100644 doc/workflow/approval_for_merge_requests.md delete mode 100644 doc/workflow/approval_for_merge_requests/mr.png delete mode 100644 doc/workflow/approval_for_merge_requests/settings.png create mode 100644 doc/workflow/merge_request_approvals.md create mode 100644 doc/workflow/merge_request_approvals/1_named_approval.png create mode 100644 doc/workflow/merge_request_approvals/2_approvals.png create mode 100644 doc/workflow/merge_request_approvals/2_named_approvals.png create mode 100644 doc/workflow/merge_request_approvals/approvals_mr.png create mode 100644 doc/workflow/merge_request_approvals/approvals_settings.png diff --git a/doc/workflow/README.md b/doc/workflow/README.md index f938a74e3c..e45697a617 100644 --- a/doc/workflow/README.md +++ b/doc/workflow/README.md @@ -1,6 +1,5 @@ # Workflow -- [Approval for merge requests](approval_for_merge_requests.md) - [Authorization for merge requests](authorization_for_merge_requests.md) - [Change your time zone](timezone.md) - [Feature branch workflow](workflow.md) @@ -10,6 +9,7 @@ - [Keyboard shortcuts](shortcuts.md) - [Labels](labels.md) - [Manage large binaries with git annex](git_annex.md) +- [Merge Request Approvals](merge_request_approvals.md) - [Notifications](notifications.md) - [Project Features](project_features.md) - [Project forking workflow](forking_workflow.md) diff --git a/doc/workflow/approval_for_merge_requests.md b/doc/workflow/approval_for_merge_requests.md deleted file mode 100644 index a093777c74..0000000000 --- a/doc/workflow/approval_for_merge_requests.md +++ /dev/null @@ -1,18 +0,0 @@ -# Approval for merge requests - -Usually you accept merge request if it is ready and reviewed. But in certain -cases you want to be sure that every merge request will be reviewed by several -people before it gets merged. You can use GitLab approve feature for enforcing such -workflow. To enable it you should go to project settings page and set -"Approvals required" field to numeric value. For example if you set it to number 3 -that means each merge request should receive 3 approves from different people -before it can be merged via user interface. - - -![approve_setting](approval_for_merge_requests/settings.png) - -After you set approves value you can see on merge request page "Approve" button -instead of "Accept" one. As soon as merge request get enough approvals it will -be available for merge with user interface. - -![approve_merge_request](approval_for_merge_requests/mr.png) diff --git a/doc/workflow/approval_for_merge_requests/mr.png b/doc/workflow/approval_for_merge_requests/mr.png deleted file mode 100644 index 59addfd7f9e3dafc9062e18a570db41462a40bef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169187 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

dZu!ztd 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 literal 0 HcmV?d00001 From 3cc78d89984d9c9df8372c52b7bba38e6226f9f2 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Tue, 7 Jul 2015 18:24:27 +0300 Subject: [PATCH 32/80] Approvers: UI for project settings --- CHANGELOG-EE | 1 + .../projects/approvers_controller.rb | 14 +++++ .../projects/merge_requests_controller.rb | 7 ++- app/controllers/projects_controller.rb | 2 +- app/helpers/merge_requests_helper.rb | 38 +++++++++++++ app/models/approver.rb | 4 ++ app/models/merge_request.rb | 33 ++++++++++- app/models/project.rb | 7 +++ .../_merge_request_settings.html.haml | 28 +++++++++ app/views/projects/edit.html.haml | 2 +- .../widget/open/_approve.html.haml | 8 +-- app/views/shared/issuable/_form.html.haml | 27 +++++++++ config/routes.rb | 3 + .../20150707222220_add_approvers_table.rb | 14 +++++ db/schema.rb | 11 ++++ features/project/merge_requests.feature | 15 +++++ features/steps/project/merge_requests.rb | 36 ++++++++++++ spec/helpers/merge_request_helper_spec.rb | 57 +++++++++++++++++++ spec/models/merge_request_spec.rb | 24 ++++++++ 19 files changed, 322 insertions(+), 9 deletions(-) create mode 100644 app/controllers/projects/approvers_controller.rb create mode 100644 app/models/approver.rb create mode 100644 db/migrate/20150707222220_add_approvers_table.rb diff --git a/CHANGELOG-EE b/CHANGELOG-EE index 8469779e6f..ef9a625dc4 100644 --- a/CHANGELOG-EE +++ b/CHANGELOG-EE @@ -2,6 +2,7 @@ v 7.13 (Unrelease) - Fix git hook validation on initial push to master branch. - Reset approvals on push - Fix 500 error when the source project of an MR is deleted + - Ability to define merge request approvers v 7.12.2 - Fixed the alignment of project settings icons diff --git a/app/controllers/projects/approvers_controller.rb b/app/controllers/projects/approvers_controller.rb new file mode 100644 index 0000000000..27f39aaa92 --- /dev/null +++ b/app/controllers/projects/approvers_controller.rb @@ -0,0 +1,14 @@ +class Projects::ApproversController < ApplicationController + def destroy + if params[:merge_request_id] + authorize_create_merge_request! + merge_request = project.merge_requests.find_by!(iid: params[:merge_request_id]) + merge_request.approvers.find(params[:id]).destroy + else + authorize_admin_project! + project.approvers.find(params[:id]).destroy + end + + redirect_to :back + end +end diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index b954f85420..526f7bafc7 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -149,6 +149,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController def automerge return access_denied! unless @merge_request.can_be_merged_by?(current_user) + return render_404 unless @merge_request.approved? if @merge_request.automergeable? AutoMergeWorker.perform_async(@merge_request.id, current_user.id, params) @@ -201,6 +202,10 @@ class Projects::MergeRequestsController < Projects::ApplicationController end def approve + unless @merge_request.can_approve?(current_user) + return render_404 + end + @approval = @merge_request.approvals.new @approval.user = current_user @@ -286,7 +291,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController def merge_request_params params.require(:merge_request).permit( :title, :assignee_id, :source_project_id, :source_branch, - :target_project_id, :target_branch, :milestone_id, + :target_project_id, :target_branch, :milestone_id, :approver_ids, :state_event, :description, :task_num, label_ids: [] ) end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 8fbd2b31c3..39ddb74e10 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -195,7 +195,7 @@ class ProjectsController < ApplicationController :issues_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, :default_branch, :wiki_enabled, :merge_requests_template, :visibility_level, :merge_requests_rebase_enabled, :import_url, :last_activity_at, :namespace_id, :avatar, :merge_requests_rebase_default, - :approvals_before_merge + :approvals_before_merge, :approver_ids ) end diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb index 2ac3dd03bd..c148ab2d08 100644 --- a/app/helpers/merge_requests_helper.rb +++ b/app/helpers/merge_requests_helper.rb @@ -68,4 +68,42 @@ module MergeRequestsHelper } ) end + + def render_items_list(items, separator = "and") + items_cnt = items.size + + case items_cnt + when 1 + items.first + when 2 + "#{items.first} #{separator} #{items.last}" + else + last_item = items.pop + "#{items.join(", ")} #{separator} #{last_item}" + end + end + + def render_require_section(merge_request) + str = if merge_request.approvals_left == 1 + "Requires one more approval" + else + "Requires #{merge_request.approvals_left} more approvals" + end + + if merge_request.approvers_left.any? + more_approvals = merge_request.approvals_left - merge_request.approvers_left.count + approvers_names = merge_request.approvers_left.map(&:name) + + case true + when more_approvals > 0 + str << " (from #{render_items_list(approvers_names + ["#{more_approvals} more"])})" + when more_approvals < 0 + str << " (from #{render_items_list(approvers_names, "or")})" + else + str << " (from #{render_items_list(approvers_names)})" + end + end + + str + end end diff --git a/app/models/approver.rb b/app/models/approver.rb new file mode 100644 index 0000000000..b6daef5668 --- /dev/null +++ b/app/models/approver.rb @@ -0,0 +1,4 @@ +class Approver < ActiveRecord::Base + belongs_to :target, polymorphic: true + belongs_to :user +end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index ad8f469306..5f7da74680 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -36,6 +36,7 @@ class MergeRequest < ActiveRecord::Base has_one :merge_request_diff, dependent: :destroy has_many :approvals, dependent: :destroy + has_many :approvers, as: :target, dependent: :destroy after_create :create_merge_request_diff after_update :update_merge_request_diff @@ -419,16 +420,29 @@ class MergeRequest < ActiveRecord::Base approvals_required - approvals.count end + def approvers_left + user_ids = overall_approvers.map(&:user_id) - approvals.map(&:user_id) + User.where id: user_ids + end + def approvals_required target_project.approvals_before_merge end def requires_approve? - !approvals_required.zero? + approvals_required.nonzero? + end + + def overall_approvers + if approvers.any? + approvers + else + target_project.approvers + end end def approved? - approvals.count >= approvals_required + approvals_left.zero? end def approved_by?(user) @@ -439,6 +453,15 @@ class MergeRequest < ActiveRecord::Base approvals.map(&:user) end + def can_approve?(user) + approvers_left.include?(user) || + (any_approver_allowed? && !approved_by?(user)) + end + + def any_approver_allowed? + approvals_left > approvers_left.count + end + def has_ci? source_project.ci_service && commits.any? end @@ -460,4 +483,10 @@ class MergeRequest < ActiveRecord::Base "Open" end end + + def approver_ids=(value) + value.split(",").map(&:strip).each do |user_id| + approvers.find_or_create_by(user_id: user_id, target_id: id) + end + end end diff --git a/app/models/project.rb b/app/models/project.rb index 5084e5e2d6..f897b43f41 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -117,6 +117,7 @@ class Project < ActiveRecord::Base has_many :deploy_keys, through: :deploy_keys_projects has_many :users_star_projects, dependent: :destroy has_many :starrers, through: :users_star_projects, source: :user + has_many :approvers, as: :target, dependent: :destroy has_many :project_group_links, dependent: :destroy has_many :invited_groups, through: :project_group_links, source: :group @@ -760,4 +761,10 @@ class Project < ActiveRecord::Base def jira_tracker_active? jira_tracker? && jira_service.active end + + def approver_ids=(value) + value.split(",").map(&:strip).each do |user_id| + approvers.find_or_create_by(user_id: user_id, target_id: id) + end + end end diff --git a/app/views/projects/_merge_request_settings.html.haml b/app/views/projects/_merge_request_settings.html.haml index a55ee66384..5cc5621df1 100644 --- a/app/views/projects/_merge_request_settings.html.haml +++ b/app/views/projects/_merge_request_settings.html.haml @@ -36,3 +36,31 @@ = f.label :reset_approvers_on_push do = f.check_box :reset_approvers_on_push %span.descr Reset approvers on push + + .form-group + = f.label :approver_ids, class: 'control-label' do + Approvers + .col-sm-10 + = users_select_tag("project[approver_ids]", multiple: true, class: 'input-large', scope: :all, email_user: true) + .help-block + Default approvers for each merge request. + + .panel.panel-default.prepend-top-10 + .panel-heading + Approvers + %small + (#{@project.approvers.count(:all)}) + %ul.well-list + - @project.approvers.each do |approver| + %li + = link_to approver.user.name, approver.user + .pull-right + = link_to namespace_project_approver_path(@project.namespace, @project, approver), data: { confirm: "Are you sure you want to remove approver #{approver.user.name}"}, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove approver' do + = icon("sign-out") + Remove + - if @project.approvers.empty? + %li There are no approvers + + +:coffeescript + new UsersSelect() diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index a05cf8034b..adcb87b976 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -1,7 +1,7 @@ .project-edit-container .project-edit-errors .project-edit-content - %div + .panel %h3.page-title Project settings %hr diff --git a/app/views/projects/merge_requests/widget/open/_approve.html.haml b/app/views/projects/merge_requests/widget/open/_approve.html.haml index cb2d76d2ee..20dfa25351 100644 --- a/app/views/projects/merge_requests/widget/open/_approve.html.haml +++ b/app/views/projects/merge_requests/widget/open/_approve.html.haml @@ -1,8 +1,8 @@ %div %h4 - Requires #{pluralize(@merge_request.approvals_left, 'more approval')} - %p Each merge request in this project must be approved by #{pluralize(@merge_request.approvals_required, 'person')} before it can be accepted. - - unless @merge_request.approved_by?(current_user) + = render_require_section(@merge_request) + + - if @merge_request.can_approve?(current_user) .append-bottom-10 = form_for [:approve, @project.namespace.becomes(Namespace), @project, @merge_request], method: :post do |f| - = f.submit "Approve Merge Request", class: "btn btn-primary approve-btn" \ No newline at end of file + = f.submit "Approve Merge Request", class: "btn btn-primary approve-btn" diff --git a/app/views/shared/issuable/_form.html.haml b/app/views/shared/issuable/_form.html.haml index e434e1b6b9..ede9cc3986 100644 --- a/app/views/shared/issuable/_form.html.haml +++ b/app/views/shared/issuable/_form.html.haml @@ -81,6 +81,33 @@ = link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank - if issuable.is_a?(MergeRequest) + - if @project.approvals_before_merge.nonzero? + .form-group + = f.label :approver_ids, class: 'control-label' do + Approvers + .col-sm-10 + = users_select_tag("merge_request[approver_ids]", multiple: true, class: 'input-large', scope: :all, email_user: true) + .help-block + Merge Request should be approved by these users. + - if @project.approvers.any? + By default: #{render_items_list(@project.approvers.map{ |approver| approver.user.name})}. + You can override the project settings by setting your own list of approvers. + + .panel.panel-default.prepend-top-10 + .panel-heading + Approvers + %small + (#{@merge_request.approvers.count(:all)}) + %ul.well-list + - @merge_request.approvers.each do |approver| + %li + = link_to approver.user.name, approver.user + .pull-right + = link_to namespace_project_merge_request_approver_path(@project.namespace, @project, @merge_request, approver), data: { confirm: "Are you sure you want to remove approver #{approver.user.name}"}, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove approver' do + = icon("sign-out") + Remove + - if @merge_request.approvers.empty? + %li There are no approvers %hr - if @merge_request.new_record? .form-group diff --git a/config/routes.rb b/config/routes.rb index 3bff1c20fc..64f12e6bc2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -507,6 +507,7 @@ Gitlab::Application.routes.draw do get :branch_to get :update_branches end + resources :approvers, only: :destroy end resources :branches, only: [:index, :new, :create, :destroy], constraints: { id: Gitlab::Regex.git_reference_regex } @@ -569,6 +570,8 @@ Gitlab::Application.routes.draw do get ":secret/:filename", action: :show, as: :show, constraints: { filename: /[^\/]+/ } end end + + resources :approvers, only: :destroy end get "/audit_events" => "audit_events#project_log" diff --git a/db/migrate/20150707222220_add_approvers_table.rb b/db/migrate/20150707222220_add_approvers_table.rb new file mode 100644 index 0000000000..4af7fe1c5c --- /dev/null +++ b/db/migrate/20150707222220_add_approvers_table.rb @@ -0,0 +1,14 @@ +class AddApproversTable < ActiveRecord::Migration + def change + create_table :approvers do |t| + t.integer :target_id, null: false + t.string :target_type + t.integer :user_id, null: false + + t.timestamps + + t.index [:target_id, :target_type] + t.index :user_id + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 97edb560f4..f10ceac594 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -57,6 +57,17 @@ ActiveRecord::Schema.define(version: 20150713160110) do t.datetime "updated_at" end + create_table "approvers", force: true do |t| + t.integer "target_id", null: false + t.string "target_type" + t.integer "user_id", null: false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "approvers", ["target_id", "target_type"], name: "index_approvers_on_target_id_and_target_type", using: :btree + add_index "approvers", ["user_id"], name: "index_approvers_on_user_id", using: :btree + create_table "audit_events", force: true do |t| t.integer "author_id", null: false t.string "type", null: false diff --git a/features/project/merge_requests.feature b/features/project/merge_requests.feature index 2d236601b7..ee222ccf66 100644 --- a/features/project/merge_requests.feature +++ b/features/project/merge_requests.feature @@ -240,6 +240,21 @@ Feature: Project Merge Requests When I click link "Approve" Then I should see approved merge request "Bug NS-04" + Scenario: I approve merge request if I am an approver + Given merge request 'Bug NS-04' must be approved by current user + And I click link "Bug NS-04" + And I should not see merge button + And I should see message that MR require an approval from me + When I click link "Approve" + Then I should see approved merge request "Bug NS-04" + + Scenario: I can not approve merge request if I am not an approver + Given merge request 'Bug NS-04' must be approved by some user + And I click link "Bug NS-04" + And I should not see merge button + When I should not see Approve button + And I should see message that MR require an approval + Scenario: I should see rebase checkbox Given project "Shop" have "Bug NS-05" open merge request with diffs inside And rebase before merge enabled diff --git a/features/steps/project/merge_requests.rb b/features/steps/project/merge_requests.rb index 358c0ab19f..47b53aeaad 100644 --- a/features/steps/project/merge_requests.rb +++ b/features/steps/project/merge_requests.rb @@ -346,6 +346,24 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps project.save! end + step 'merge request \'Bug NS-04\' must be approved by current user' do + merge_request = MergeRequest.find_by!(title: "Bug NS-04") + project = merge_request.target_project + project.approvals_before_merge = 1 + project.approvers.create(user_id: current_user.id) + project.ensure_satellite_exists + project.save! + end + + step 'merge request \'Bug NS-04\' must be approved by some user' do + merge_request = MergeRequest.find_by!(title: "Bug NS-04") + project = merge_request.target_project + project.approvals_before_merge = 1 + project.approvers.create(user_id: create(:user).id) + project.ensure_satellite_exists + project.save! + end + step 'I click link "Approve"' do page.within '.mr-state-widget' do click_button 'Approve Merge Request' @@ -358,12 +376,30 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps end end + step 'I should not see Approve button' do + page.within '.mr-state-widget' do + expect(page).not_to have_button("Approve") + end + end + step 'I should see approved merge request "Bug NS-04"' do page.within '.mr-state-widget' do expect(page).to have_button("Accept Merge Request") end end + step 'I should see message that MR require an approval from me' do + page.within '.mr-state-widget' do + expect(page).to have_content("Requires one more approval (from #{current_user.name})") + end + end + + step 'I should see message that MR require an approval' do + page.within '.mr-state-widget' do + expect(page).to have_content("Requires one more approval") + end + end + step 'rebase before merge enabled' do project = merge_request.target_project project.merge_requests_rebase_enabled = true diff --git a/spec/helpers/merge_request_helper_spec.rb b/spec/helpers/merge_request_helper_spec.rb index 34c2cd4907..39e14ae2fc 100644 --- a/spec/helpers/merge_request_helper_spec.rb +++ b/spec/helpers/merge_request_helper_spec.rb @@ -40,4 +40,61 @@ describe MergeRequestsHelper do it { is_expected.to eq('#JIRA-123, #JIRA-456, and #FOOBAR-7890') } end end + + describe 'render_items_list' do + it "returns one item in the list" do + expect(render_items_list(["user"])).to eq("user") + end + + it "returns two items in the list" do + expect(render_items_list(["user", "user1"])).to eq("user and user1") + end + + it "returns three items in the list" do + expect(render_items_list(["user", "user1", "user2"])).to eq("user, user1 and user2") + end + end + + describe 'render_require_section' do + it "returns correct value in case - one approval" do + project.update(approvals_before_merge: 1) + merge_request = create(:merge_request, target_project: project, source_project: project) + expect(render_require_section(merge_request)).to eq("Requires one more approval") + end + + it "returns correct value in case - two approval" do + project.update(approvals_before_merge: 2) + merge_request = create(:merge_request, target_project: project, source_project: project) + expect(render_require_section(merge_request)).to eq("Requires 2 more approvals") + end + + it "returns correct value in case - one approver" do + project.update(approvals_before_merge: 1) + merge_request = create(:merge_request, target_project: project, source_project: project) + user = create :user + merge_request.approvers.create(user_id: user.id) + + expect(render_require_section(merge_request)).to eq("Requires one more approval (from #{user.name})") + end + + it "returns correct value in case - one approver and one more" do + project.update(approvals_before_merge: 2) + merge_request = create(:merge_request, target_project: project, source_project: project) + user = create :user + merge_request.approvers.create(user_id: user.id) + + expect(render_require_section(merge_request)).to eq("Requires 2 more approvals (from #{user.name} and 1 more)") + end + + it "returns correct value in case - two approver and one more" do + project.update(approvals_before_merge: 3) + merge_request = create(:merge_request, target_project: project, source_project: project) + user = create :user + user1 = create :user + merge_request.approvers.create(user_id: user.id) + merge_request.approvers.create(user_id: user1.id) + + expect(render_require_section(merge_request)).to eq("Requires 3 more approvals (from #{user1.name}, #{user.name} and 1 more)") + end + end end diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index c15dbd8e4e..f3621b122c 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -175,6 +175,30 @@ describe MergeRequest do end end + describe "approvers_left" do + let(:merge_request) {create :merge_request} + + it "returns correct value" do + user = create(:user) + user1 = create(:user) + merge_request.target_project.approvers.create(user_id: user.id) + merge_request.target_project.approvers.create(user_id: user1.id) + merge_request.approvals.create(user_id: user1.id) + + expect(merge_request.approvers_left).to eq [user] + end + end + + describe "approvals_required" do + let(:merge_request) {create :merge_request} + + it "takes approvals_before_merge" do + merge_request.target_project.update(approvals_before_merge: 2) + + expect(merge_request.approvals_required).to eq 2 + end + end + it_behaves_like 'an editable mentionable' do subject { create(:merge_request, source_project: project) } From c7daa5f17fdb45cb7acc058a3a418be19c42712a Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Fri, 17 Jul 2015 17:03:15 +0200 Subject: [PATCH 33/80] Add specs for gitlab ci service validity. --- .../gitlab_ci_service_spec.rb | 27 +++++++++++++++++++ spec/requests/api/services_spec.rb | 12 +++++++++ 2 files changed, 39 insertions(+) diff --git a/spec/models/project_services/gitlab_ci_service_spec.rb b/spec/models/project_services/gitlab_ci_service_spec.rb index fedc37c9b9..4f8a198699 100644 --- a/spec/models/project_services/gitlab_ci_service_spec.rb +++ b/spec/models/project_services/gitlab_ci_service_spec.rb @@ -26,6 +26,33 @@ describe GitlabCiService do it { is_expected.to have_one(:service_hook) } end + describe 'validations' do + context 'active' do + before { allow(subject).to receive(:activated?).and_return(true) } + + it { is_expected.to validate_presence_of(:token) } + it { is_expected.to validate_presence_of(:project_url) } + it { is_expected.to allow_value('ewf9843kdnfdfs89234n').for(:token) } + it { is_expected.to allow_value('http://ci.example.com/project/1').for(:project_url) } + it { is_expected.not_to allow_value('token with spaces').for(:token) } + it { is_expected.not_to allow_value('token/with%spaces').for(:token) } + it { is_expected.not_to allow_value('this is not url').for(:project_url) } + it { is_expected.not_to allow_value('http//noturl').for(:project_url) } + it { is_expected.not_to allow_value('ftp://ci.example.com/projects/3').for(:project_url) } + end + + context 'inactive' do + before { allow(subject).to receive(:activated?).and_return(false) } + + it { is_expected.not_to validate_presence_of(:token) } + it { is_expected.not_to validate_presence_of(:project_url) } + it { is_expected.to allow_value('ewf9843kdnfdfs89234n').for(:token) } + it { is_expected.to allow_value('http://ci.example.com/project/1').for(:project_url) } + it { is_expected.to allow_value('token with spaces').for(:token) } + it { is_expected.to allow_value('ftp://ci.example.com/projects/3').for(:project_url) } + end + end + describe 'commits methods' do before do @service = GitlabCiService.new diff --git a/spec/requests/api/services_spec.rb b/spec/requests/api/services_spec.rb index cedb5f15ea..6d29a28580 100644 --- a/spec/requests/api/services_spec.rb +++ b/spec/requests/api/services_spec.rb @@ -17,6 +17,18 @@ describe API::API, api: true do expect(response.status).to eq(400) end + + it "should return if the format of token is invalid" do + put api("/projects/#{project.id}/services/gitlab-ci", user), token: 'token-with dashes and spaces%', project_url: "http://ci.example.com/projects/1", active: true + + expect(response.status).to eq(404) + end + + it "should return if the format of token is invalid" do + put api("/projects/#{project.id}/services/gitlab-ci", user), token: 'token-with dashes and spaces%', project_url: "ftp://ci.example/projects/1", active: true + + expect(response.status).to eq(404) + end end describe "DELETE /projects/:id/services/gitlab-ci" do From 77f325a49fd955f73197a6270c82d28053e2c19e Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Fri, 17 Jul 2015 17:17:33 +0200 Subject: [PATCH 34/80] Do not disappoint rubocop. --- spec/models/project_services/gitlab_ci_service_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/project_services/gitlab_ci_service_spec.rb b/spec/models/project_services/gitlab_ci_service_spec.rb index 4f8a198699..a14384c87b 100644 --- a/spec/models/project_services/gitlab_ci_service_spec.rb +++ b/spec/models/project_services/gitlab_ci_service_spec.rb @@ -26,7 +26,7 @@ describe GitlabCiService do it { is_expected.to have_one(:service_hook) } end - describe 'validations' do + describe 'validations' do context 'active' do before { allow(subject).to receive(:activated?).and_return(true) } From 17207b98bea75789c2f35514c30c00ef2f99b3a5 Mon Sep 17 00:00:00 2001 From: Job van der Voort Date: Fri, 17 Jul 2015 15:50:21 +0000 Subject: [PATCH 35/80] fix typo --- doc/workflow/merge_request_approvals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/workflow/merge_request_approvals.md b/doc/workflow/merge_request_approvals.md index 1e98fa213a..f77886e011 100644 --- a/doc/workflow/merge_request_approvals.md +++ b/doc/workflow/merge_request_approvals.md @@ -24,7 +24,7 @@ users to approve the merge request. ### Reset approvals on push -With this setting turned on, any done approvals are reset when new a new push +With this setting turned on, approvals are reset when a new push is done to the merge request branch. Turn "Reset approvals on push" off if you want approvals to persist, @@ -63,4 +63,4 @@ the process is still enforced. To approve a merge request, simply press the button. -![Merge request approval](merge_request_approvals/2_approvals.png) +![Merge request approval](merge_request_approvals/2_approvals.png) \ No newline at end of file From 53d9f78043b9743e45cf170baca21d56d92af052 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 17 Jul 2015 18:21:47 +0200 Subject: [PATCH 36/80] Update changelog Signed-off-by: Dmitriy Zaporozhets --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 3dcf76e23d..1ae1f57b7a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -49,6 +49,8 @@ v 7.13.0 (unreleased) - Faster code search in repository and wiki. Fixes search page timeout for big repositories - Allow administrators to disable 2FA for a specific user - Add error message for SSH key linebreaks + - Store commits count in database (will populate with valid values only after first push) + - Rebuild cache after push to repository in background job v 7.12.2 - Correctly show anonymous authorized applications under Profile > Applications. From 782500158608eba36e27f53e1d8822d25710fe80 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt Date: Fri, 10 Jul 2015 16:41:43 +0200 Subject: [PATCH 37/80] Fix file upload dialog for comment editing This fixes the file upload dialog which currently works for new comments but not for comment editing. The cause for this is a missing DOM class which causes traversal to the dropzone to fail. This is fixed by adding the expected `gfm-form` class to the edit form. It has to be added dynamically since adding it to the form template would break the form's layout and comment saving. --- CHANGELOG | 1 + app/assets/javascripts/notes.js.coffee | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 001d5350ba..c4877042fe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix file upload dialog for comment editing (Daniel Gerhardt) - Expire Rails cache entries after two weeks to prevent endless Redis growth - Add support for destroying project milestones (Stan Hu) diff --git a/app/assets/javascripts/notes.js.coffee b/app/assets/javascripts/notes.js.coffee index 1c05a2b9fe..bcff7bcc49 100644 --- a/app/assets/javascripts/notes.js.coffee +++ b/app/assets/javascripts/notes.js.coffee @@ -298,7 +298,7 @@ class @Notes note.find(".note-header").hide() base_form = note.find(".note-edit-form") form = base_form.clone().insertAfter(base_form) - form.addClass('current-note-edit-form') + form.addClass('current-note-edit-form gfm-form') form.find('.div-dropzone').remove() # Show the attachment delete link From 5f4dcbf8be36e7c87afdc28afd7f2d663a9abf28 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 17 Jul 2015 16:17:04 -0700 Subject: [PATCH 38/80] Set OmniAuth full_host parameter to ensure redirect URIs are correct Closes #1967 --- CHANGELOG | 1 + config/initializers/7_omniauth.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 001d5350ba..38c56e91e1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu) - Expire Rails cache entries after two weeks to prevent endless Redis growth - Add support for destroying project milestones (Stan Hu) diff --git a/config/initializers/7_omniauth.rb b/config/initializers/7_omniauth.rb index df73ec1304..7f73546ac8 100644 --- a/config/initializers/7_omniauth.rb +++ b/config/initializers/7_omniauth.rb @@ -11,6 +11,7 @@ if Gitlab::LDAP::Config.enabled? end end +OmniAuth.config.full_host = Settings.gitlab['url'] OmniAuth.config.allowed_request_methods = [:post] #In case of auto sign-in, the GET method is used (users don't get to click on a button) OmniAuth.config.allowed_request_methods << :get if Gitlab.config.omniauth.auto_sign_in_with_provider.present? From dd6daf465624d0a4ec2bc232f647c0d484a82351 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Fri, 17 Jul 2015 20:40:56 -0400 Subject: [PATCH 39/80] Add test case for clicking line number anchor icon --- spec/javascripts/fixtures/line_highlighter.html.haml | 4 +++- spec/javascripts/line_highlighter_spec.js.coffee | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/spec/javascripts/fixtures/line_highlighter.html.haml b/spec/javascripts/fixtures/line_highlighter.html.haml index 15ad1d8968..da1ebcdb23 100644 --- a/spec/javascripts/fixtures/line_highlighter.html.haml +++ b/spec/javascripts/fixtures/line_highlighter.html.haml @@ -2,7 +2,9 @@ .file-content .line-numbers - 1.upto(25) do |i| - %a{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i}= i + %a{href: "#L#{i}", id: "L#{i}", 'data-line-number' => i} + %i.fa.fa-link + = i %pre.code.highlight %code - 1.upto(25) do |i| diff --git a/spec/javascripts/line_highlighter_spec.js.coffee b/spec/javascripts/line_highlighter_spec.js.coffee index 14fa487ff7..57453c716a 100644 --- a/spec/javascripts/line_highlighter_spec.js.coffee +++ b/spec/javascripts/line_highlighter_spec.js.coffee @@ -48,6 +48,14 @@ describe 'LineHighlighter', -> clickLine(13) expect(spy).toHaveBeenPrevented() + it 'handles clicking on a child icon element', -> + spy = spyOn(@class, 'setHash').and.callThrough() + + $('#L13 i').mousedown().click() + + expect(spy).toHaveBeenCalledWith(13) + expect($('#LC13')).toHaveClass(@css) + describe 'without shiftKey', -> it 'highlights one line when clicked', -> clickLine(13) From 58b94be9a7e97112755041e30559ebc2ca0a8b1d Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Sun, 12 Jul 2015 22:46:51 +0200 Subject: [PATCH 40/80] Only load byebug on MRI This Gem relies on MRI specific debugging APIs. This at least allows installation on Rubinius/JRuby. --- Gemfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 9b7fd18ab1..ba32feba3e 100644 --- a/Gemfile +++ b/Gemfile @@ -46,7 +46,7 @@ gem "gitlab_git", '~> 7.2.5' gem 'gitlab-grack', '~> 2.0.2', require: 'grack' # LDAP Auth -# GitLab fork with several improvements to original library. For full list of changes +# GitLab fork with several improvements to original library. For full list of changes # see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master gem 'gitlab_omniauth-ldap', '1.2.1', require: "omniauth-ldap" @@ -54,9 +54,9 @@ gem 'gitlab_omniauth-ldap', '1.2.1', require: "omniauth-ldap" gem 'gollum-lib', '~> 4.0.2' # Language detection -# GitLab fork of linguist does not require pygments/python dependency. -# New version of original gem also dropped pygments support but it has strict -# dependency to unstable rugged version. We have internal issue for replacing +# GitLab fork of linguist does not require pygments/python dependency. +# New version of original gem also dropped pygments support but it has strict +# dependency to unstable rugged version. We have internal issue for replacing # fork with original gem when we meet on same rugged version - https://dev.gitlab.org/gitlab/gitlabhq/issues/2052. gem "gitlab-linguist", "~> 3.0.1", require: "linguist" @@ -227,7 +227,7 @@ end group :development, :test do gem 'awesome_print' - gem 'byebug' + gem 'byebug', platform: :mri gem 'fuubar', '~> 2.0.0' gem 'pry-rails' From 875d8e7f31db88443c3c573473b496945d7673a0 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sat, 18 Jul 2015 07:32:18 -0700 Subject: [PATCH 41/80] Fix bug where notes were being rendered with wrong color preferences due to caching Closes #2008 --- app/views/projects/notes/_note.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/notes/_note.html.haml b/app/views/projects/notes/_note.html.haml index 5478a887f9..c8d705687d 100644 --- a/app/views/projects/notes/_note.html.haml +++ b/app/views/projects/notes/_note.html.haml @@ -56,7 +56,7 @@ .note-body{class: note_editable?(note) ? 'js-task-list-container' : ''} - = cache [note, 'markdown'] do + = cache [note, 'markdown', user_color_scheme_class] do .note-text = preserve do = markdown(note.note, {no_header_anchors: true}) From 682c0deffe4e1849a2dd5bd61d90aa08e4209681 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sat, 18 Jul 2015 08:02:38 -0700 Subject: [PATCH 42/80] Remove redundant last push event if activity feed is set to main page Closes #2009 --- app/views/projects/show.html.haml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index b90cadfb1e..769dd68f08 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -6,7 +6,9 @@ = render 'shared/no_ssh' = render 'shared/no_password' -= render 'projects/last_push' +- if prefer_readme? + = render 'projects/last_push' + = render "home_panel" .project-stats From f92bbd2f284530b0c05bc179a60ceb9751556026 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sat, 18 Jul 2015 18:05:07 -0400 Subject: [PATCH 43/80] Show the first tab automatically on MergeRequests#new Closes #2013 --- app/assets/javascripts/merge_request.js.coffee | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/merge_request.js.coffee b/app/assets/javascripts/merge_request.js.coffee index 7462975bd3..b21cb7904b 100644 --- a/app/assets/javascripts/merge_request.js.coffee +++ b/app/assets/javascripts/merge_request.js.coffee @@ -15,9 +15,7 @@ class @MergeRequest this.$('.show-all-commits').on 'click', => this.showAllCommits() - # `MergeRequests#new` has no tab-persisting or lazy-loading behavior - unless @opts.action == 'new' - new MergeRequestTabs(@opts) + @initTabs() # Prevent duplicate event bindings @disableTaskList() @@ -29,6 +27,14 @@ class @MergeRequest $: (selector) -> this.$el.find(selector) + initTabs: -> + if @opts.action != 'new' + # `MergeRequests#new` has no tab-persisting or lazy-loading behavior + new MergeRequestTabs(@opts) + else + # Show the first tab (Commits) + $('.merge-request-tabs a[data-toggle="tab"]:first').tab('show') + showAllCommits: -> this.$('.first-commits').remove() this.$('.all-commits').removeClass 'hide' From 19163f84fbec0e1798300c62745d1f747259eb61 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sat, 18 Jul 2015 15:57:11 -0700 Subject: [PATCH 44/80] Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in Closes #1612 --- CHANGELOG | 1 + config/initializers/doorkeeper.rb | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index c4877042fe..9fe1e8c90c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) - Fix file upload dialog for comment editing (Daniel Gerhardt) - Expire Rails cache entries after two weeks to prevent endless Redis growth - Add support for destroying project milestones (Stan Hu) diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index d422acb31d..6139ddbe6c 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -6,7 +6,8 @@ Doorkeeper.configure do # This block will be called to check whether the resource owner is authenticated or not. resource_owner_authenticator do # Put your resource owner authentication logic here. - # Example implementation: + # Ensure user is redirected to redirect_uri after login + session[:user_return_to] = request.fullpath current_user || redirect_to(new_user_session_url) end From 1fc88b58c77c27681b818d5a2535cdb136c6b9d1 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Sun, 19 Jul 2015 11:57:21 +0300 Subject: [PATCH 45/80] annotate approver and approval models --- app/models/approval.rb | 11 +++++++++++ app/models/approver.rb | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/app/models/approval.rb b/app/models/approval.rb index 21d4f1a99a..5ac0cab9bc 100644 --- a/app/models/approval.rb +++ b/app/models/approval.rb @@ -1,3 +1,14 @@ +# == Schema Information +# +# Table name: approvals +# +# id :integer not null, primary key +# merge_request_id :integer not null +# user_id :integer not null +# created_at :datetime +# updated_at :datetime +# + class Approval < ActiveRecord::Base belongs_to :user belongs_to :merge_request diff --git a/app/models/approver.rb b/app/models/approver.rb index b6daef5668..984692658c 100644 --- a/app/models/approver.rb +++ b/app/models/approver.rb @@ -1,3 +1,15 @@ +# == Schema Information +# +# Table name: approvers +# +# id :integer not null, primary key +# target_id :integer not null +# target_type :string(255) +# user_id :integer not null +# created_at :datetime +# updated_at :datetime +# + class Approver < ActiveRecord::Base belongs_to :target, polymorphic: true belongs_to :user From d3dc2b912fe43acf89f5267e9e6a2ce2febcd968 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Fri, 17 Jul 2015 19:00:38 +0300 Subject: [PATCH 46/80] Rename reset_approvers checkbox --- app/services/merge_requests/refresh_service.rb | 2 +- app/views/projects/_merge_request_settings.html.haml | 8 ++++---- db/migrate/20150717155058_rename_reset_approvers.rb | 5 +++++ db/schema.rb | 4 ++-- spec/services/merge_requests/refresh_service_spec.rb | 6 +++--- 5 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20150717155058_rename_reset_approvers.rb diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index c7d9040281..4d6be724dd 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -74,7 +74,7 @@ module MergeRequests # Reset approvals for merge request # Note: we should reset approvals for merge requests from forks too def reset_approvals_for_merge_requests - if @project.approvals_before_merge.nonzero? && @project.reset_approvers_on_push + if @project.approvals_before_merge.nonzero? && @project.reset_approvals_on_push merge_requests = @project.merge_requests.opened.where(source_branch: @branch_name).to_a merge_requests += @fork_merge_requests.where(source_branch: @branch_name).to_a merge_requests = filter_merge_requests(merge_requests) diff --git a/app/views/projects/_merge_request_settings.html.haml b/app/views/projects/_merge_request_settings.html.haml index 5cc5621df1..54fd64ba97 100644 --- a/app/views/projects/_merge_request_settings.html.haml +++ b/app/views/projects/_merge_request_settings.html.haml @@ -30,12 +30,12 @@ .help-block How many users should approve merge request before it can be accepted. 0 - approval is disabled - .form-group.reset-approvers-on-push + .form-group.reset-approvals-on-push .col-sm-offset-2.col-sm-10 .checkbox - = f.label :reset_approvers_on_push do - = f.check_box :reset_approvers_on_push - %span.descr Reset approvers on push + = f.label :reset_approvals_on_push do + = f.check_box :reset_approvals_on_push + %span.descr Reset approvals on push .form-group = f.label :approver_ids, class: 'control-label' do diff --git a/db/migrate/20150717155058_rename_reset_approvers.rb b/db/migrate/20150717155058_rename_reset_approvers.rb new file mode 100644 index 0000000000..cf7e74b659 --- /dev/null +++ b/db/migrate/20150717155058_rename_reset_approvers.rb @@ -0,0 +1,5 @@ +class RenameResetApprovers < ActiveRecord::Migration + def change + rename_column :projects, :reset_approvers_on_push, :reset_approvals_on_push + end +end diff --git a/db/schema.rb b/db/schema.rb index f10ceac594..0f64621b23 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150713160110) do +ActiveRecord::Schema.define(version: 20150717155058) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -454,7 +454,7 @@ ActiveRecord::Schema.define(version: 20150713160110) do t.string "import_source" t.boolean "merge_requests_rebase_default", default: true t.integer "approvals_before_merge", default: 0, null: false - t.boolean "reset_approvers_on_push", default: true + t.boolean "reset_approvals_on_push", default: true end add_index "projects", ["created_at", "id"], name: "index_projects_on_created_at_and_id", using: :btree diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb index 99bab18e74..1d0b5c66c4 100644 --- a/spec/services/merge_requests/refresh_service_spec.rb +++ b/spec/services/merge_requests/refresh_service_spec.rb @@ -11,7 +11,7 @@ describe MergeRequests::RefreshService do group = create(:group) group.add_owner(@user) - @project = create(:project, namespace: group, approvals_before_merge: 1, reset_approvers_on_push: true) + @project = create(:project, namespace: group, approvals_before_merge: 1, reset_approvals_on_push: true) @fork_project = Projects::ForkService.new(@project, @user).execute @merge_request = create(:merge_request, source_project: @project, @@ -130,8 +130,8 @@ describe MergeRequests::RefreshService do expect(@merge_request.approvals).not_to be_empty end - it "does not reset approvals if reset_approvers_on_push si disabled" do - @project.update(reset_approvers_on_push: false) + it "does not reset approvals if reset_approvals_on_push si disabled" do + @project.update(reset_approvals_on_push: false) refresh_service = service.new(@project, @user) allow(refresh_service).to receive(:execute_hooks) refresh_service.execute(@oldrev, @newrev, 'refs/heads/master') From 69417d36b2fa4dfbe2205c4df1428eb17ebd061e Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt Date: Sun, 19 Jul 2015 20:58:59 +0200 Subject: [PATCH 47/80] Fix label read access for unauthenticated users The label page was added to navigation for unauthorized users because the previously used milestone read permission was still checked. This has been fixed and read access to labels is now granted (again) for public projects. This regression has been introduced in 07efb17e10fe26a01b60d8441868f9fbda0768f2 (7.12). See also 9bcd36396b9b71467f66dd4ed79ab709bb5d027a. Refs !836, !842. --- CHANGELOG | 1 + app/helpers/projects_helper.rb | 6 +++++- app/models/ability.rb | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 9fe1e8c90c..b1d079ef20 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) - Fix file upload dialog for comment editing (Daniel Gerhardt) - Expire Rails cache entries after two weeks to prevent endless Redis growth diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index f61baf0052..3cd52b381b 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -131,8 +131,12 @@ module ProjectsHelper nav_tabs << :snippets end + if can?(current_user, :read_label, project) + nav_tabs << :labels + end + if can?(current_user, :read_milestone, project) - nav_tabs << [:milestones, :labels] + nav_tabs << :milestones end nav_tabs.flatten diff --git a/app/models/ability.rb b/app/models/ability.rb index d3631d49ec..7dab50d47d 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -35,6 +35,7 @@ class Ability :read_project, :read_wiki, :read_issue, + :read_label, :read_milestone, :read_project_snippet, :read_project_member, From e65b08106282015955fce52e818b7431d5cb2e83 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sun, 19 Jul 2015 16:48:33 -0400 Subject: [PATCH 48/80] Dynamically check `:admin_*` ability in issuable context Closes #2001 --- app/views/shared/issuable/_context.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/shared/issuable/_context.html.haml b/app/views/shared/issuable/_context.html.haml index 46990895d3..d1bd5ef968 100644 --- a/app/views/shared/issuable/_context.html.haml +++ b/app/views/shared/issuable/_context.html.haml @@ -8,7 +8,7 @@ - else none .issuable-context-selectbox - - if can?(current_user, :admin_issue, @project) + - if can?(current_user, :"admin_#{issuable.class.to_s.underscore}", @project) = users_select_tag("#{issuable.class.table_name.singularize}[assignee_id]", placeholder: 'Select assignee', class: 'custom-form-control js-select2 js-assignee', selected: issuable.assignee_id, project: @target_project, null_user: true) %div.prepend-top-20.clearfix @@ -24,7 +24,7 @@ - else none .issuable-context-selectbox - - if can?(current_user, :admin_issue, @project) + - if can?(current_user, :"admin_#{issuable.class.to_s.underscore}", @project) = f.select(:milestone_id, milestone_options(issuable), { include_blank: 'Select milestone' }, {class: 'select2 select2-compact js-select2 js-milestone'}) = hidden_field_tag :issuable_context = f.submit class: 'btn hide' From 5eeab9f0a62f4843dcef2a7fb2f7f67610bef22d Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Mon, 20 Jul 2015 00:53:43 +0200 Subject: [PATCH 49/80] GoogleCode importer: Do not care about casing of image file extensions Signed-off-by: Sven Strickroth --- lib/gitlab/google_code_import/importer.rb | 2 +- spec/fixtures/GoogleCodeProjectHosting.json | 5 +++++ spec/lib/gitlab/google_code_import/importer_spec.rb | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/gitlab/google_code_import/importer.rb b/lib/gitlab/google_code_import/importer.rb index 70bfe05977..03c410726a 100644 --- a/lib/gitlab/google_code_import/importer.rb +++ b/lib/gitlab/google_code_import/importer.rb @@ -327,7 +327,7 @@ module Gitlab link = "https://storage.googleapis.com/google-code-attachments/#{@repo.name}/issue-#{issue_id}/comment-#{comment_id}/#{filename}" text = "[#{filename}](#{link})" - text = "!#{text}" if filename =~ /\.(png|jpg|jpeg|gif|bmp|tiff)\z/ + text = "!#{text}" if filename =~ /\.(png|jpg|jpeg|gif|bmp|tiff)\z/i text end.compact end diff --git a/spec/fixtures/GoogleCodeProjectHosting.json b/spec/fixtures/GoogleCodeProjectHosting.json index d05e77271a..67bb3bae5b 100644 --- a/spec/fixtures/GoogleCodeProjectHosting.json +++ b/spec/fixtures/GoogleCodeProjectHosting.json @@ -382,6 +382,11 @@ "fileName" : "screenshot.png", "fileSize" : 0, "mimetype" : "image/png" + }, { + "attachmentId" : "001", + "fileName" : "screenshot1.PNG", + "fileSize" : 0, + "mimetype" : "image/x-png" } ] }, { "id" : 1, diff --git a/spec/lib/gitlab/google_code_import/importer_spec.rb b/spec/lib/gitlab/google_code_import/importer_spec.rb index c53ddeb87b..f49cbb7f53 100644 --- a/spec/lib/gitlab/google_code_import/importer_spec.rb +++ b/spec/lib/gitlab/google_code_import/importer_spec.rb @@ -65,6 +65,7 @@ describe Gitlab::GoogleCodeImport::Importer do expect(issue.description).to include('all the best!') expect(issue.description).to include('[tint2_task_scrolling.diff](https://storage.googleapis.com/google-code-attachments/tint2/issue-169/comment-0/tint2_task_scrolling.diff)') expect(issue.description).to include('![screenshot.png](https://storage.googleapis.com/google-code-attachments/tint2/issue-169/comment-0/screenshot.png)') + expect(issue.description).to include('![screenshot1.PNG](https://storage.googleapis.com/google-code-attachments/tint2/issue-169/comment-0/screenshot1.PNG)') end it "imports issue comments" do From e1811316d73ea0b240d7f47e1de557b712ed4cee Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sun, 19 Jul 2015 22:53:14 -0700 Subject: [PATCH 50/80] Remove repository graph log to fix slow cache updates after push event Recalculating graph_log took minutes on a large repository since each of the 6000 commits would need to calculate the diff. Since graph_log does not appear to be used, remove it from the list of things to update. For the Linux kernel repository, this reduced the ProjectCacheWorker time from 8+ minutes to 16 seconds. Closes #2016 --- CHANGELOG | 1 + app/models/repository.rb | 20 +------------------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b1d079ef20..ed23ee4a90 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) - Fix file upload dialog for comment editing (Daniel Gerhardt) diff --git a/app/models/repository.rb b/app/models/repository.rb index 1d208aa71c..807b33b2a3 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -119,7 +119,7 @@ class Repository end def cache_keys - %i(size branch_names tag_names commit_count graph_log + %i(size branch_names tag_names commit_count readme version contribution_guide changelog license) end @@ -144,24 +144,6 @@ class Repository end end - def graph_log - cache.fetch(:graph_log) do - commits = raw_repository.log(limit: 6000, skip_merges: true, - ref: root_ref) - - commits.map do |rugged_commit| - commit = Gitlab::Git::Commit.new(rugged_commit) - - { - author_name: commit.author_name, - author_email: commit.author_email, - additions: commit.stats.additions, - deletions: commit.stats.deletions, - } - end - end - end - def lookup_cache @lookup_cache ||= {} end From 4a0e4c857f799d2e3cc5d5dc37de6da784661965 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt Date: Sun, 19 Jul 2015 23:21:33 +0200 Subject: [PATCH 51/80] Fix access to disabled features for unauthenticated users Unauthenticated users had access to disabled features of public projects. The code has been slightly refactored so that feature checks are done in a separate method and can also be applied for public access. --- CHANGELOG | 1 + app/models/ability.rb | 54 +++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 9fe1e8c90c..cc39373fd4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix access to disabled features for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) - Fix file upload dialog for comment editing (Daniel Gerhardt) - Expire Rails cache entries after two weeks to prevent endless Redis growth diff --git a/app/models/ability.rb b/app/models/ability.rb index d3631d49ec..6cffc46cec 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -31,7 +31,7 @@ class Ability end if project && project.public? - [ + rules = [ :read_project, :read_wiki, :read_issue, @@ -42,6 +42,8 @@ class Ability :read_note, :download_code ] + + rules - project_disabled_features_rules(project) else group = if subject.kind_of?(Group) subject @@ -102,28 +104,7 @@ class Ability rules -= project_archived_rules end - unless project.issues_enabled - rules -= named_abilities('issue') - end - - unless project.merge_requests_enabled - rules -= named_abilities('merge_request') - end - - unless project.issues_enabled or project.merge_requests_enabled - rules -= named_abilities('label') - rules -= named_abilities('milestone') - end - - unless project.snippets_enabled - rules -= named_abilities('project_snippet') - end - - unless project.wiki_enabled - rules -= named_abilities('wiki') - end - - rules + rules - project_disabled_features_rules(project) end end @@ -205,6 +186,33 @@ class Ability ] end + def project_disabled_features_rules(project) + rules = [] + + unless project.issues_enabled + rules += named_abilities('issue') + end + + unless project.merge_requests_enabled + rules += named_abilities('merge_request') + end + + unless project.issues_enabled or project.merge_requests_enabled + rules += named_abilities('label') + rules += named_abilities('milestone') + end + + unless project.snippets_enabled + rules += named_abilities('project_snippet') + end + + unless project.wiki_enabled + rules += named_abilities('wiki') + end + + rules + end + def group_abilities(user, group) rules = [] From c61e7dd4ac76b23a1089041ba4a41fd7b56166e0 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Mon, 20 Jul 2015 13:54:56 +0300 Subject: [PATCH 52/80] Public project activity page asks for sign-in --- app/controllers/projects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index b191819a11..586359f308 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,6 +1,6 @@ class ProjectsController < ApplicationController prepend_before_filter :render_go_import, only: [:show] - skip_before_action :authenticate_user!, only: [:show] + skip_before_action :authenticate_user!, only: [:show, :activity] before_action :project, except: [:new, :create] before_action :repository, except: [:new, :create] From 374b95c38e2b178d0a0b006c41ed12cd272bdb9f Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 19 Mar 2015 09:36:07 -0400 Subject: [PATCH 53/80] merge_requests: add fetch command to the MR page --- CHANGELOG | 1 + app/views/projects/merge_requests/_show.html.haml | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 0db3dfc04a..881b270527 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ v 7.14.0 (unreleased) - Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu) - Expire Rails cache entries after two weeks to prevent endless Redis growth - Add support for destroying project milestones (Stan Hu) + - Add fetch command to the MR page. v 7.13.0 (unreleased) - Only enable HSTS header for HTTPS and port 443 (Stan Hu) diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml index b6d9b135c7..faaa85896c 100644 --- a/app/views/projects/merge_requests/_show.html.haml +++ b/app/views/projects/merge_requests/_show.html.haml @@ -31,6 +31,16 @@ %li= link_to "Email Patches", merge_request_path(@merge_request, format: :patch) %li= link_to "Plain Diff", merge_request_path(@merge_request, format: :diff) + - if @merge_request.open? and @merge_request.source_branch_exists? + .append-bottom-20 + .slead + %span + Fetch the branch with + %strong.label-branch< + git fetch + \ #{@merge_request.source_project.http_url_to_repo} + \ #{@merge_request.source_branch} + = render "projects/merge_requests/show/how_to_merge" = render "projects/merge_requests/widget/show.html.haml" From e80bfcc57392f89f1bc33dea8db88484af110638 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Mon, 20 Jul 2015 18:28:37 +0300 Subject: [PATCH 54/80] Approvals fixes --- app/models/merge_request.rb | 2 +- app/views/projects/_merge_request_settings.html.haml | 5 +++-- app/views/shared/issuable/_form.html.haml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 5f7da74680..18813075c5 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -486,7 +486,7 @@ class MergeRequest < ActiveRecord::Base def approver_ids=(value) value.split(",").map(&:strip).each do |user_id| - approvers.find_or_create_by(user_id: user_id, target_id: id) + approvers.find_or_initialize_by(user_id: user_id, target_id: id) end end end diff --git a/app/views/projects/_merge_request_settings.html.haml b/app/views/projects/_merge_request_settings.html.haml index 54fd64ba97..35e2ba957e 100644 --- a/app/views/projects/_merge_request_settings.html.haml +++ b/app/views/projects/_merge_request_settings.html.haml @@ -28,7 +28,7 @@ .col-sm-10 = f.number_field :approvals_before_merge, class: "form-control", min: 0 .help-block - How many users should approve merge request before it can be accepted. 0 - approval is disabled + Number of users to approve a merge request before it can be accepted. 0 - approving is disabled .form-group.reset-approvals-on-push .col-sm-offset-2.col-sm-10 @@ -36,6 +36,7 @@ = f.label :reset_approvals_on_push do = f.check_box :reset_approvals_on_push %span.descr Reset approvals on push + .help-block Approvals are reset when new data is pushed to the merge request .form-group = f.label :approver_ids, class: 'control-label' do @@ -43,7 +44,7 @@ .col-sm-10 = users_select_tag("project[approver_ids]", multiple: true, class: 'input-large', scope: :all, email_user: true) .help-block - Default approvers for each merge request. + Add an approver suggestion for each merge request .panel.panel-default.prepend-top-10 .panel-heading diff --git a/app/views/shared/issuable/_form.html.haml b/app/views/shared/issuable/_form.html.haml index ede9cc3986..f1f271db78 100644 --- a/app/views/shared/issuable/_form.html.haml +++ b/app/views/shared/issuable/_form.html.haml @@ -90,7 +90,7 @@ .help-block Merge Request should be approved by these users. - if @project.approvers.any? - By default: #{render_items_list(@project.approvers.map{ |approver| approver.user.name})}. + Suggested approver(s): #{render_items_list(@project.approvers.map{ |approver| approver.user.name})}. You can override the project settings by setting your own list of approvers. .panel.panel-default.prepend-top-10 From e252410058a5aab0cb0427aeb0768b19b0fce4de Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt Date: Mon, 20 Jul 2015 18:56:49 +0200 Subject: [PATCH 55/80] Fix change log for 7.11 and move entry to 7.12 The change log for 7.11 was accidentally split in 3865a1d92585cb31864b5d0f1b325c3585b5c681. Additionally, the change added with this commit did not make it into 7.11 according to `git branch --contains` and it has not been cherry picked to 7-11-stable so the entry is moved to 7.12. Refs GH-5625, GH-9318. [ci skip] --- CHANGELOG | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d249a01480..052f4865d6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -134,6 +134,7 @@ v 7.12.0 - Improve group removing logic - Trigger create-hooks on backup restore task - Add option to automatically link omniauth and LDAP identities + - Allow special character in users bio. I.e.: I <3 GitLab v 7.11.4 - Fix missing bullets when creating lists @@ -152,9 +153,6 @@ v 7.11.1 v 7.11.0 - Fall back to Plaintext when Syntaxhighlighting doesn't work. Fixes some buggy lexers (Hannes Rosenögger) - Get editing comments to work in Chrome 43 again. - - Allow special character in users bio. I.e.: I <3 GitLab - -v 7.11.0 - Fix broken view when viewing history of a file that includes a path that used to be another file (Stan Hu) - Don't show duplicate deploy keys - Fix commit time being displayed in the wrong timezone in some cases (Hannes Rosenögger) From 346b07497989c824b201e501dfa24b8af630da8a Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Tue, 21 Jul 2015 10:37:27 +0200 Subject: [PATCH 56/80] Don't stop if database.sql.gz already exists The existing behavior of the backups is to overwrite whatever data was still there in the scratch directories. This broke when we added a 'gzip' step because 'gzip database.sql' will fail if 'database.sql.gz' already exists. Doing 'rm -f database.sql.gz' before the 'gzip' avoids this failure. --- lib/backup/database.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/backup/database.rb b/lib/backup/database.rb index b8aa6b9ff2..c5a5396cbb 100644 --- a/lib/backup/database.rb +++ b/lib/backup/database.rb @@ -25,6 +25,7 @@ module Backup abort 'Backup failed' unless success $progress.print 'Compressing database ... ' + FileUtils.rm_f db_file_name_gz success = system('gzip', db_file_name) report_success(success) abort 'Backup failed: compress error' unless success From 280576a2d5a4d1167504ee48e1d4d00a8339a5be Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Tue, 21 Jul 2015 10:40:05 +0000 Subject: [PATCH 57/80] Update changelog --- CHANGELOG | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 052f4865d6..6920adeaf1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,6 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) - - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix access to disabled features for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) @@ -12,6 +11,7 @@ v 7.14.0 (unreleased) - Add fetch command to the MR page. v 7.13.0 (unreleased) + - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Only enable HSTS header for HTTPS and port 443 (Stan Hu) - Fix user autocomplete for unauthenticated users accessing public projects (Stan Hu) - Fix redirection to home page URL for unauthorized users (Daniel Gerhardt) @@ -1587,4 +1587,4 @@ v 0.8.0 - stability - security fixes - increased test coverage - - email notification + - email notification \ No newline at end of file From bf3b318ec561a3d8146c6bff56fe21335cab0aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20Rosen=C3=B6gger?= <123haynes@gmail.com> Date: Tue, 21 Jul 2015 13:59:14 +0200 Subject: [PATCH 58/80] revert caching of note text --- app/views/projects/notes/_note.html.haml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/views/projects/notes/_note.html.haml b/app/views/projects/notes/_note.html.haml index c8d705687d..4a1009686c 100644 --- a/app/views/projects/notes/_note.html.haml +++ b/app/views/projects/notes/_note.html.haml @@ -56,10 +56,9 @@ .note-body{class: note_editable?(note) ? 'js-task-list-container' : ''} - = cache [note, 'markdown', user_color_scheme_class] do - .note-text - = preserve do - = markdown(note.note, {no_header_anchors: true}) + .note-text + = preserve do + = markdown(note.note, {no_header_anchors: true}) = render 'projects/notes/edit_form', note: note - if note.attachment.url From 96819d2fb42b65066f4adcc5e48daf65a58449ec Mon Sep 17 00:00:00 2001 From: Jacob Vosmaer Date: Tue, 21 Jul 2015 14:35:58 +0200 Subject: [PATCH 59/80] You need to store your DB encryption key --- doc/profile/two_factor_authentication.md | 5 ++++ doc/raketasks/backup_restore.md | 35 ++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/doc/profile/two_factor_authentication.md b/doc/profile/two_factor_authentication.md index fb215c8b26..f60ce35d3e 100644 --- a/doc/profile/two_factor_authentication.md +++ b/doc/profile/two_factor_authentication.md @@ -63,5 +63,10 @@ your phone's application or a recovery code to log in. 1. Go to **Account**. 1. Click **Disable Two-factor Authentication**. +## Note to GitLab administrators + +You need to take special care to that 2FA keeps working after +[restoring a GitLab backup](../raketasks/backup_restore.md). + [Google Authenticator]: https://support.google.com/accounts/answer/1066447?hl=en [FreeOTP]: https://fedorahosted.org/freeotp/ diff --git a/doc/raketasks/backup_restore.md b/doc/raketasks/backup_restore.md index 39a13b14fb..36ab2b9195 100644 --- a/doc/raketasks/backup_restore.md +++ b/doc/raketasks/backup_restore.md @@ -9,6 +9,13 @@ This archive will be saved in backup_path (see `config/gitlab.yml`). The filename will be `[TIMESTAMP]_gitlab_backup.tar`. This timestamp can be used to restore an specific backup. You can only restore a backup to exactly the same version of GitLab that you created it on, for example 7.2.1. +You need to keep a separate copy of `/etc/gitlab/gitlab-secrets.json` +(for omnibus packages) or `/home/git/gitlab/.secret` (for installations +from source). This file contains the database encryption key used +for two-factor authentication. If you restore a GitLab backup without +restoring the database encryption key, users who have two-factor +authentication enabled will loose access to your GitLab server. + If you are interested in GitLab CI backup please follow to the [CI backup documentation](https://gitlab.com/gitlab-org/gitlab-ci/blob/master/doc/raketasks/backup_restore.md)* ``` @@ -143,15 +150,39 @@ with the name of your bucket: ## Storing configuration files -Please be informed that a backup does not store your configuration files. +Please be informed that a backup does not store your configuration +files. One reason for this is that your database contains encrypted +information for two-factor authentication. Storing encrypted +information along with its key in the same place defeats the purpose +of using encryption in the first place! + If you use an Omnibus package please see the [instructions in the readme to backup your configuration](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#backup-and-restore-omnibus-gitlab-configuration). If you have a cookbook installation there should be a copy of your configuration in Chef. -If you have an installation from source, please consider backing up your `gitlab.yml` file, any SSL keys and certificates, and your [SSH host keys](https://superuser.com/questions/532040/copy-ssh-keys-from-one-server-to-another-server/532079#532079). +If you have an installation from source, please consider backing up your `.secret` file, `gitlab.yml` file, any SSL keys and certificates, and your [SSH host keys](https://superuser.com/questions/532040/copy-ssh-keys-from-one-server-to-another-server/532079#532079). + +At the very **minimum** you should backup `/etc/gitlab/gitlab-secrets.json` +(Omnibus) or `/home/git/gitlab/.secret` (source) to preserve your +database encryption key. ## Restore a previously created backup You can only restore a backup to exactly the same version of GitLab that you created it on, for example 7.2.1. +### Prerequisites + +You need to have a working GitLab installation before you can perform +a restore. This is mainly because the system user performing the +restore actions ('git') is usually not allowed to create or delete +the SQL database it needs to import data into ('gitlabhq_production'). +All existing data will be either erased (SQL) or moved to a separate +directory (repositories, uploads). + +If some or all of your GitLab users are using two-factor authentication +(2FA) then you must also make sure to restore +`/etc/gitlab/gitlab-secrets.json` (Omnibus) or `/home/git/gitlab/.secret` +(installations from source). Note that you need to run `gitlab-ctl +reconfigure` after changing `gitlab-secrets.json`. + ### Installation from source ``` From 65bd871be7112c32065ddd01b166d309c6efe06c Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt Date: Tue, 21 Jul 2015 19:15:52 +0200 Subject: [PATCH 60/80] Fix full screen mode for snippet comments ZenMode is now initialized for snippet pages. Fixes #2036. --- CHANGELOG | 1 + app/assets/javascripts/dispatcher.js.coffee | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 6920adeaf1..dab74b654b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix full screen mode for snippet comments (Daniel Gerhardt) - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix access to disabled features for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee index 2ab148bc29..81e7379927 100644 --- a/app/assets/javascripts/dispatcher.js.coffee +++ b/app/assets/javascripts/dispatcher.js.coffee @@ -128,7 +128,10 @@ class Dispatcher shortcut_handler = new ShortcutsNavigation() new ZenMode() new DropzoneInput($('.wiki-form')) - when 'snippets', 'labels', 'graphs' + when 'snippets' + shortcut_handler = new ShortcutsNavigation() + new ZenMode() if path[2] == 'show' + when 'labels', 'graphs' shortcut_handler = new ShortcutsNavigation() when 'project_members', 'deploy_keys', 'hooks', 'services', 'protected_branches' shortcut_handler = new ShortcutsNavigation() From 643557dabccbb3a503b0867ae44ec5701759d2a8 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 20 Jul 2015 16:55:45 -0700 Subject: [PATCH 61/80] Fix 404 error in files view after deleting the last file in a repository Closes #1362 --- CHANGELOG | 1 + app/controllers/projects/tree_controller.rb | 4 ++- .../{ => projects}/tree_controller_spec.rb | 29 +++++++++++++++++-- spec/requests/api/branches_spec.rb | 9 +++++- spec/support/test_env.rb | 11 +++++-- 5 files changed, 46 insertions(+), 8 deletions(-) rename spec/controllers/{ => projects}/tree_controller_spec.rb (69%) diff --git a/CHANGELOG b/CHANGELOG index 052f4865d6..038a4d95d7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) + - Fix 404 error in files view after deleting the last file in a repository (Stan Hu) - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix access to disabled features for unauthenticated users (Daniel Gerhardt) diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb index b659e15f24..92e4bc16d9 100644 --- a/app/controllers/projects/tree_controller.rb +++ b/app/controllers/projects/tree_controller.rb @@ -7,13 +7,15 @@ class Projects::TreeController < Projects::ApplicationController before_action :authorize_download_code! def show + return not_found! unless @repository.commit(@ref) + if tree.entries.empty? if @repository.blob_at(@commit.id, @path) redirect_to( namespace_project_blob_path(@project.namespace, @project, File.join(@ref, @path)) ) and return - else + elsif @path.present? return not_found! end end diff --git a/spec/controllers/tree_controller_spec.rb b/spec/controllers/projects/tree_controller_spec.rb similarity index 69% rename from spec/controllers/tree_controller_spec.rb rename to spec/controllers/projects/tree_controller_spec.rb index e09caf5df1..5391585635 100644 --- a/spec/controllers/tree_controller_spec.rb +++ b/spec/controllers/projects/tree_controller_spec.rb @@ -8,9 +8,6 @@ describe Projects::TreeController do sign_in(user) project.team << [user, :master] - - allow(project).to receive(:branches).and_return(['master', 'foo/bar/baz']) - allow(project).to receive(:tags).and_return(['v1.0.0', 'v2.0.0']) controller.instance_variable_set(:@project, project) end @@ -44,6 +41,32 @@ describe Projects::TreeController do let(:id) { 'invalid-branch/encoding/' } it { is_expected.to respond_with(:not_found) } end + + context "valid empty branch, invalid path" do + let(:id) { 'empty-branch/invalid-path/' } + it { is_expected.to respond_with(:not_found) } + end + + context "valid empty branch" do + let(:id) { 'empty-branch' } + it { is_expected.to respond_with(:success) } + end + + context "invalid SHA commit ID" do + let(:id) { 'ff39438/.gitignore' } + it { is_expected.to respond_with(:not_found) } + end + + context "valid SHA commit ID" do + let(:id) { '6d39438' } + it { is_expected.to respond_with(:success) } + end + + context "valid SHA commit ID with path" do + let(:id) { '6d39438/.gitignore' } + it { expect(response.status).to eq(302) } + end + end describe 'GET show with blob path' do diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb index cb6e5e8962..bb3862c9eb 100644 --- a/spec/requests/api/branches_spec.rb +++ b/spec/requests/api/branches_spec.rb @@ -13,11 +13,18 @@ describe API::API, api: true do let!(:branch_sha) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' } describe "GET /projects/:id/repository/branches" do + before do + # Ensure that repository.branch_names is cleared from the cache at start to ensure + # the list matches reality + Rails.cache.clear + end + it "should return an array of project branches" do get api("/projects/#{project.id}/repository/branches", user) expect(response.status).to eq(200) expect(json_response).to be_an Array - expect(json_response.first['name']).to eq(project.repository.branch_names.first) + branch_names = json_response.map { |x| x['name'] } + expect(branch_names).to match_array(project.repository.branch_names) end end diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb index 8bdd6b43cd..dcf2a9e2ce 100644 --- a/spec/support/test_env.rb +++ b/spec/support/test_env.rb @@ -5,6 +5,7 @@ module TestEnv # When developing the seed repository, comment out the branch you will modify. BRANCH_SHA = { + 'empty-branch' => '7efb185', 'flatten-dir' => 'e56497b', 'feature' => '0b4bc9a', 'feature_conflict' => 'bb5206f', @@ -14,9 +15,13 @@ module TestEnv 'master' => '5937ac0' } - FORKED_BRANCH_SHA = BRANCH_SHA.merge({ - 'add-submodule-version-bump' => '3f547c08' - }) + # gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily + # need to keep all the branches in sync. + # We currently only need a subset of the branches + FORKED_BRANCH_SHA = { + 'add-submodule-version-bump' => '3f547c08', + 'master' => '5937ac0' + } # Test environment # From 42130a97e992f608bf5deaf2afbe203f21d2e2b3 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Tue, 21 Jul 2015 15:45:12 -0700 Subject: [PATCH 62/80] added Fork Project document --- doc/gitlab-basics/README.md | 2 ++ doc/gitlab-basics/create-branch.md | 3 ++- doc/gitlab-basics/fork-project.md | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 doc/gitlab-basics/fork-project.md diff --git a/doc/gitlab-basics/README.md b/doc/gitlab-basics/README.md index 63fa7a90a2..d6272cd591 100644 --- a/doc/gitlab-basics/README.md +++ b/doc/gitlab-basics/README.md @@ -15,3 +15,5 @@ Step-by-step guides on the basics of working with Git and GitLab. * [Create a group](create-group.md) * [Create a branch](create-branch.md) + +* [Fork a project](fork-project.md) diff --git a/doc/gitlab-basics/create-branch.md b/doc/gitlab-basics/create-branch.md index a8afbfe53d..7556b0f663 100644 --- a/doc/gitlab-basics/create-branch.md +++ b/doc/gitlab-basics/create-branch.md @@ -1,6 +1,7 @@ # How to create a branch A branch is an independent line of development. + New commits are recorded in the history for the current branch, which results in taking the source from someone’s repository (the place where the history of your work is stored) at certain point in time, and apply your own changes to it in the history of the project. To add changes to your GitLab project, you should create a branch. You can do it in your [shell](basic-git-commands.md) or in GitLab. @@ -32,7 +33,7 @@ Fill out the information required: ![Branch info](basicsimages/branch_info.png) ### Note: - + You will be able to find and select the name of your branch in the white box next to a project's name: ![Branch name](basicsimages/branch_name.png) diff --git a/doc/gitlab-basics/fork-project.md b/doc/gitlab-basics/fork-project.md new file mode 100644 index 0000000000..e97ec0959a --- /dev/null +++ b/doc/gitlab-basics/fork-project.md @@ -0,0 +1,19 @@ +# How to fork a project + +A fork is a copy of an original repository that you can put somewhere else +or where you can experiment and apply changes that you can later decide if +publishing or not, without affecting your original project. + +It takes just a few steps to fork a project in GitLab. + +Sign in to [gitlab.com](https://gitlab.com). + +Select a project on the right side of your screen: + +![Select a project](basicsimages/select_project.png) + +Click on the "fork" button on the right side of your screen: + +![Fork](simple_guide_images/fork.png) + +Click on the user or group to where you'd like to add the forked project. From afc8e922238e9d6146926b88fa94f18700bb64e1 Mon Sep 17 00:00:00 2001 From: karen Carias Date: Tue, 21 Jul 2015 15:47:17 -0700 Subject: [PATCH 63/80] fixed image --- doc/gitlab-basics/fork-project.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/gitlab-basics/fork-project.md b/doc/gitlab-basics/fork-project.md index e97ec0959a..5173aae2c0 100644 --- a/doc/gitlab-basics/fork-project.md +++ b/doc/gitlab-basics/fork-project.md @@ -14,6 +14,6 @@ Select a project on the right side of your screen: Click on the "fork" button on the right side of your screen: -![Fork](simple_guide_images/fork.png) +![Fork](basicsimages/fork.png) Click on the user or group to where you'd like to add the forked project. From 913e1b217ec2d4c3cdb22e4b336ea11c0213cb97 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 21 Jul 2015 18:09:06 -0700 Subject: [PATCH 64/80] Remove 7.14 entry that was pushed to 7.13 --- CHANGELOG | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d26ac5bbfa..2765923124 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,6 @@ Please view this file on the master branch, on stable branches it's out of date. v 7.14.0 (unreleased) - Fix full screen mode for snippet comments (Daniel Gerhardt) - Fix 404 error in files view after deleting the last file in a repository (Stan Hu) - - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Fix label read access for unauthenticated users (Daniel Gerhardt) - Fix access to disabled features for unauthenticated users (Daniel Gerhardt) - Fix OAuth provider bug where GitLab would not go return to the redirect_uri after sign-in (Stan Hu) @@ -1590,4 +1589,4 @@ v 0.8.0 - stability - security fixes - increased test coverage - - email notification \ No newline at end of file + - email notification From 5aff5223d4ba675beae2673fe5ed204531f5b42c Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 21 Jul 2015 18:52:56 -0700 Subject: [PATCH 65/80] Clearing the entire Redis cache may be too expensive; just use the repository expire_cache method --- spec/requests/api/branches_spec.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb index bb3862c9eb..5c1b58535c 100644 --- a/spec/requests/api/branches_spec.rb +++ b/spec/requests/api/branches_spec.rb @@ -13,13 +13,9 @@ describe API::API, api: true do let!(:branch_sha) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' } describe "GET /projects/:id/repository/branches" do - before do - # Ensure that repository.branch_names is cleared from the cache at start to ensure - # the list matches reality - Rails.cache.clear - end - it "should return an array of project branches" do + project.repository.expire_cache + get api("/projects/#{project.id}/repository/branches", user) expect(response.status).to eq(200) expect(json_response).to be_an Array From 1fee24a36143e8057d495e8a7e0f2d4b93d83f2a Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 16 Jul 2015 14:17:43 -0400 Subject: [PATCH 66/80] Remove unused `be_valid_commit` matcher --- spec/support/matchers.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb index a2f853e3e7..87a034cca3 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers.rb @@ -1,12 +1,3 @@ -RSpec::Matchers.define :be_valid_commit do - match do |actual| - actual && - actual.id == ValidCommit::ID && - actual.message == ValidCommit::MESSAGE && - actual.author_name == ValidCommit::AUTHOR_FULL_NAME - end -end - def emulate_user(user) user = case user when :user then create(:user) From a2ecfdc5859c1703dbbad6dde888f7a0eb5817c8 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 21 Jul 2015 22:09:02 -0400 Subject: [PATCH 67/80] Move access-related matchers to their own module --- .../security/dashboard_access_spec.rb | 2 + .../security/group/group_access_spec.rb | 2 + .../group/internal_group_access_spec.rb | 2 + .../security/group/mixed_group_access_spec.rb | 2 + .../group/public_group_access_spec.rb | 2 + spec/features/security/profile_access_spec.rb | 2 + .../security/project/internal_access_spec.rb | 2 + .../security/project/private_access_spec.rb | 2 + .../security/project/public_access_spec.rb | 3 +- spec/support/matchers.rb | 34 ------------ spec/support/matchers/access_matchers.rb | 54 +++++++++++++++++++ 11 files changed, 72 insertions(+), 35 deletions(-) create mode 100644 spec/support/matchers/access_matchers.rb diff --git a/spec/features/security/dashboard_access_spec.rb b/spec/features/security/dashboard_access_spec.rb index 67238e3ab7..c38cddbb90 100644 --- a/spec/features/security/dashboard_access_spec.rb +++ b/spec/features/security/dashboard_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Dashboard access", feature: true do + include AccessMatchers + describe "GET /dashboard" do subject { dashboard_path } diff --git a/spec/features/security/group/group_access_spec.rb b/spec/features/security/group/group_access_spec.rb index 6379314945..e42b7b8d8a 100644 --- a/spec/features/security/group/group_access_spec.rb +++ b/spec/features/security/group/group_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Group access", feature: true do + include AccessMatchers + describe "GET /projects/new" do it { expect(new_group_path).to be_allowed_for :admin } it { expect(new_group_path).to be_allowed_for :user } diff --git a/spec/features/security/group/internal_group_access_spec.rb b/spec/features/security/group/internal_group_access_spec.rb index d17a7412e4..28673a3ab2 100644 --- a/spec/features/security/group/internal_group_access_spec.rb +++ b/spec/features/security/group/internal_group_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Group with internal project access", feature: true do + include AccessMatchers + describe "Group" do let(:group) { create(:group) } diff --git a/spec/features/security/group/mixed_group_access_spec.rb b/spec/features/security/group/mixed_group_access_spec.rb index b3db7b5dea..f7f0213737 100644 --- a/spec/features/security/group/mixed_group_access_spec.rb +++ b/spec/features/security/group/mixed_group_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Group access", feature: true do + include AccessMatchers + describe "Group" do let(:group) { create(:group) } diff --git a/spec/features/security/group/public_group_access_spec.rb b/spec/features/security/group/public_group_access_spec.rb index c16f0c0d1e..03cafad8d7 100644 --- a/spec/features/security/group/public_group_access_spec.rb +++ b/spec/features/security/group/public_group_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Group with public project access", feature: true do + include AccessMatchers + describe "Group" do let(:group) { create(:group) } diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb index bcabc2d53a..847566d0de 100644 --- a/spec/features/security/profile_access_spec.rb +++ b/spec/features/security/profile_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Profile access", feature: true do + include AccessMatchers + before do @u1 = create(:user) end diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb index 4649e58cb1..57563add74 100644 --- a/spec/features/security/project/internal_access_spec.rb +++ b/spec/features/security/project/internal_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Internal Project Access", feature: true do + include AccessMatchers + let(:project) { create(:project, :internal) } let(:master) { create(:user) } diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb index 2866bf0355..a1e111c6ca 100644 --- a/spec/features/security/project/private_access_spec.rb +++ b/spec/features/security/project/private_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Private Project Access", feature: true do + include AccessMatchers + let(:project) { create(:project) } let(:master) { create(:user) } diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb index 554c96bcdc..655d2c8b7d 100644 --- a/spec/features/security/project/public_access_spec.rb +++ b/spec/features/security/project/public_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Public Project Access", feature: true do + include AccessMatchers + let(:project) { create(:project) } let(:master) { create(:user) } @@ -17,7 +19,6 @@ describe "Public Project Access", feature: true do # readonly project.team << [reporter, :reporter] - end describe "Project should be public" do diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb index 87a034cca3..d9b27ab08d 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers.rb @@ -1,37 +1,3 @@ -def emulate_user(user) - user = case user - when :user then create(:user) - when :visitor then nil - when :admin then create(:admin) - else user - end - login_with(user) if user -end - -RSpec::Matchers.define :be_allowed_for do |user| - match do |url| - emulate_user(user) - visit url - status_code != 404 && current_path != new_user_session_path - end -end - -RSpec::Matchers.define :be_denied_for do |user| - match do |url| - emulate_user(user) - visit url - status_code == 404 || current_path == new_user_session_path - end -end - -RSpec::Matchers.define :be_not_found_for do |user| - match do |url| - emulate_user(user) - visit url - status_code == 404 - end -end - RSpec::Matchers.define :include_module do |expected| match do described_class.included_modules.include?(expected) diff --git a/spec/support/matchers/access_matchers.rb b/spec/support/matchers/access_matchers.rb new file mode 100644 index 0000000000..558e8b1612 --- /dev/null +++ b/spec/support/matchers/access_matchers.rb @@ -0,0 +1,54 @@ +# AccessMatchers +# +# The custom matchers contained in this module are used to test a user's access +# to a URL by emulating a specific user or type of user account, visiting the +# URL, and then checking the response status code and resulting path. +module AccessMatchers + extend RSpec::Matchers::DSL + include Warden::Test::Helpers + + def emulate_user(user) + case user + when :user + login_as(create(:user)) + when :visitor + logout + when :admin + login_as(create(:admin)) + when User + login_as(user) + else + raise ArgumentError, "cannot emulate user #{user}" + end + end + + def description_for(user, type) + if user.kind_of?(User) + # User#inspect displays too much information for RSpec's description + # messages + "be #{type} for supplied User" + else + "be #{type} for #{user}" + end + end + + matcher :be_allowed_for do |user| + match do |url| + emulate_user(user) + visit url + status_code != 404 && current_path != new_user_session_path + end + + description { description_for(user, 'allowed') } + end + + matcher :be_denied_for do |user| + match do |url| + emulate_user(user) + visit url + status_code == 404 || current_path == new_user_session_path + end + + description { description_for(user, 'denied') } + end +end From 421b06508d6ddc76c90ed8e54271dfb18e5c5833 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 16 Jul 2015 15:01:20 -0400 Subject: [PATCH 68/80] Remove be_not_found_for matcher It was only used in one test, and the test was kind of redundant. --- spec/features/security/profile_access_spec.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb index 847566d0de..eee2588408 100644 --- a/spec/features/security/profile_access_spec.rb +++ b/spec/features/security/profile_access_spec.rb @@ -6,11 +6,6 @@ describe "Profile access", feature: true do before do @u1 = create(:user) end - - describe "GET /login" do - it { expect(new_user_session_path).not_to be_not_found_for :visitor } - end - describe "GET /profile/keys" do subject { profile_keys_path } From ff8811c40b33a3a98203478925810035fffe7094 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 16 Jul 2015 15:02:06 -0400 Subject: [PATCH 69/80] Remove redundant Profile access test cases The user being created was no different than what `be_allowed_for` was doing behind the scenes so we were essentially testing all user-level accesses twice. --- spec/features/security/profile_access_spec.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/spec/features/security/profile_access_spec.rb b/spec/features/security/profile_access_spec.rb index eee2588408..c19678ab38 100644 --- a/spec/features/security/profile_access_spec.rb +++ b/spec/features/security/profile_access_spec.rb @@ -3,13 +3,9 @@ require 'spec_helper' describe "Profile access", feature: true do include AccessMatchers - before do - @u1 = create(:user) - end describe "GET /profile/keys" do subject { profile_keys_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } @@ -18,7 +14,6 @@ describe "Profile access", feature: true do describe "GET /profile" do subject { profile_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } @@ -27,7 +22,6 @@ describe "Profile access", feature: true do describe "GET /profile/account" do subject { profile_account_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } @@ -36,7 +30,6 @@ describe "Profile access", feature: true do describe "GET /profile/preferences" do subject { profile_preferences_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } @@ -45,7 +38,6 @@ describe "Profile access", feature: true do describe "GET /profile/audit_log" do subject { audit_log_profile_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } @@ -54,7 +46,6 @@ describe "Profile access", feature: true do describe "GET /profile/notifications" do subject { profile_notifications_path } - it { is_expected.to be_allowed_for @u1 } it { is_expected.to be_allowed_for :admin } it { is_expected.to be_allowed_for :user } it { is_expected.to be_denied_for :visitor } From 0d5cf111f3070994c0e80ef764d1bd4b9e4936b1 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 21 Jul 2015 22:09:58 -0400 Subject: [PATCH 70/80] Move custom matchers to their own files under spec/support/matchers --- .../{matchers.rb => matchers/include_module.rb} | 10 ---------- spec/support/matchers/is_within.rb | 9 +++++++++ 2 files changed, 9 insertions(+), 10 deletions(-) rename spec/support/{matchers.rb => matchers/include_module.rb} (54%) create mode 100644 spec/support/matchers/is_within.rb diff --git a/spec/support/matchers.rb b/spec/support/matchers/include_module.rb similarity index 54% rename from spec/support/matchers.rb rename to spec/support/matchers/include_module.rb index d9b27ab08d..0a78af1e90 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers/include_module.rb @@ -11,13 +11,3 @@ RSpec::Matchers.define :include_module do |expected| "expected #{described_class} to include the #{expected} module" end end - -# Extend shoulda-matchers -module Shoulda::Matchers::ActiveModel - class ValidateLengthOfMatcher - # Shortcut for is_at_least and is_at_most - def is_within(range) - is_at_least(range.min) && is_at_most(range.max) - end - end -end diff --git a/spec/support/matchers/is_within.rb b/spec/support/matchers/is_within.rb new file mode 100644 index 0000000000..0c35fc7e89 --- /dev/null +++ b/spec/support/matchers/is_within.rb @@ -0,0 +1,9 @@ +# Extend shoulda-matchers +module Shoulda::Matchers::ActiveModel + class ValidateLengthOfMatcher + # Shortcut for is_at_least and is_at_most + def is_within(range) + is_at_least(range.min) && is_at_most(range.max) + end + end +end From b24d5f13a5dde7ab85dce93900fa309b3485adb9 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 16 Jul 2015 17:05:14 -0400 Subject: [PATCH 71/80] Consolidate group access specs into one file --- .../security/group/group_access_spec.rb | 100 ------ .../group/internal_group_access_spec.rb | 84 ------ .../security/group/mixed_group_access_spec.rb | 85 ------ .../group/public_group_access_spec.rb | 84 ------ spec/features/security/group_access_spec.rb | 284 ++++++++++++++++++ 5 files changed, 284 insertions(+), 353 deletions(-) delete mode 100644 spec/features/security/group/group_access_spec.rb delete mode 100644 spec/features/security/group/internal_group_access_spec.rb delete mode 100644 spec/features/security/group/mixed_group_access_spec.rb delete mode 100644 spec/features/security/group/public_group_access_spec.rb create mode 100644 spec/features/security/group_access_spec.rb diff --git a/spec/features/security/group/group_access_spec.rb b/spec/features/security/group/group_access_spec.rb deleted file mode 100644 index e42b7b8d8a..0000000000 --- a/spec/features/security/group/group_access_spec.rb +++ /dev/null @@ -1,100 +0,0 @@ -require 'spec_helper' - -describe "Group access", feature: true do - include AccessMatchers - - describe "GET /projects/new" do - it { expect(new_group_path).to be_allowed_for :admin } - it { expect(new_group_path).to be_allowed_for :user } - it { expect(new_group_path).to be_denied_for :visitor } - end - - describe "Group" do - let(:group) { create(:group) } - - let(:owner) { create(:owner) } - let(:master) { create(:user) } - let(:reporter) { create(:user) } - let(:guest) { create(:user) } - let(:nonmember) { create(:user) } - - before do - group.add_user(owner, Gitlab::Access::OWNER) - group.add_user(master, Gitlab::Access::MASTER) - group.add_user(reporter, Gitlab::Access::REPORTER) - group.add_user(guest, Gitlab::Access::GUEST) - end - - describe "GET /groups/:path" do - subject { group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/issues" do - subject { issues_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/merge_requests" do - subject { merge_requests_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/group_members" do - subject { group_group_members_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/edit" do - subject { edit_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_denied_for master } - it { is_expected.to be_denied_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_denied_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/projects" do - subject { projects_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_denied_for master } - it { is_expected.to be_denied_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_denied_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - end -end diff --git a/spec/features/security/group/internal_group_access_spec.rb b/spec/features/security/group/internal_group_access_spec.rb deleted file mode 100644 index 28673a3ab2..0000000000 --- a/spec/features/security/group/internal_group_access_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'spec_helper' - -describe "Group with internal project access", feature: true do - include AccessMatchers - - describe "Group" do - let(:group) { create(:group) } - - let(:owner) { create(:owner) } - let(:master) { create(:user) } - let(:reporter) { create(:user) } - let(:guest) { create(:user) } - let(:nonmember) { create(:user) } - - before do - group.add_user(owner, Gitlab::Access::OWNER) - group.add_user(master, Gitlab::Access::MASTER) - group.add_user(reporter, Gitlab::Access::REPORTER) - group.add_user(guest, Gitlab::Access::GUEST) - - create(:project, :internal, group: group) - end - - describe "GET /groups/:path" do - subject { group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/issues" do - subject { issues_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/merge_requests" do - subject { merge_requests_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/group_members" do - subject { group_group_members_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_denied_for :visitor } - end - - describe "GET /groups/:path/edit" do - subject { edit_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_denied_for master } - it { is_expected.to be_denied_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_denied_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - end -end diff --git a/spec/features/security/group/mixed_group_access_spec.rb b/spec/features/security/group/mixed_group_access_spec.rb deleted file mode 100644 index f7f0213737..0000000000 --- a/spec/features/security/group/mixed_group_access_spec.rb +++ /dev/null @@ -1,85 +0,0 @@ -require 'spec_helper' - -describe "Group access", feature: true do - include AccessMatchers - - describe "Group" do - let(:group) { create(:group) } - - let(:owner) { create(:owner) } - let(:master) { create(:user) } - let(:reporter) { create(:user) } - let(:guest) { create(:user) } - let(:nonmember) { create(:user) } - - before do - group.add_user(owner, Gitlab::Access::OWNER) - group.add_user(master, Gitlab::Access::MASTER) - group.add_user(reporter, Gitlab::Access::REPORTER) - group.add_user(guest, Gitlab::Access::GUEST) - - create(:project, :internal, path: "internal_project", group: group) - create(:project, :public, path: "public_project", group: group) - end - - describe "GET /groups/:path" do - subject { group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/issues" do - subject { issues_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/merge_requests" do - subject { merge_requests_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/group_members" do - subject { group_group_members_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/edit" do - subject { edit_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_denied_for master } - it { is_expected.to be_denied_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_denied_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - end -end diff --git a/spec/features/security/group/public_group_access_spec.rb b/spec/features/security/group/public_group_access_spec.rb deleted file mode 100644 index 03cafad8d7..0000000000 --- a/spec/features/security/group/public_group_access_spec.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'spec_helper' - -describe "Group with public project access", feature: true do - include AccessMatchers - - describe "Group" do - let(:group) { create(:group) } - - let(:owner) { create(:owner) } - let(:master) { create(:user) } - let(:reporter) { create(:user) } - let(:guest) { create(:user) } - let(:nonmember) { create(:user) } - - before do - group.add_user(owner, Gitlab::Access::OWNER) - group.add_user(master, Gitlab::Access::MASTER) - group.add_user(reporter, Gitlab::Access::REPORTER) - group.add_user(guest, Gitlab::Access::GUEST) - - create(:project, :public, group: group) - end - - describe "GET /groups/:path" do - subject { group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/issues" do - subject { issues_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/merge_requests" do - subject { merge_requests_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/group_members" do - subject { group_group_members_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_allowed_for master } - it { is_expected.to be_allowed_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_allowed_for guest } - it { is_expected.to be_allowed_for :user } - it { is_expected.to be_allowed_for :visitor } - end - - describe "GET /groups/:path/edit" do - subject { edit_group_path(group) } - - it { is_expected.to be_allowed_for owner } - it { is_expected.to be_denied_for master } - it { is_expected.to be_denied_for reporter } - it { is_expected.to be_allowed_for :admin } - it { is_expected.to be_denied_for guest } - it { is_expected.to be_denied_for :user } - it { is_expected.to be_denied_for :visitor } - end - end -end diff --git a/spec/features/security/group_access_spec.rb b/spec/features/security/group_access_spec.rb new file mode 100644 index 0000000000..0f36e47498 --- /dev/null +++ b/spec/features/security/group_access_spec.rb @@ -0,0 +1,284 @@ +require 'rails_helper' + +describe 'Group access', feature: true do + include AccessMatchers + + def group + @group ||= create(:group) + end + + def create_project(access_level) + if access_level == :mixed + create(:empty_project, :public, group: group) + create(:empty_project, :internal, group: group) + else + create(:empty_project, access_level, group: group) + end + end + + def group_member(access_level, group = group) + level = Object.const_get("Gitlab::Access::#{access_level.upcase}") + + create(:user).tap do |user| + group.add_user(user, level) + end + end + + describe 'GET /groups/new' do + subject { new_group_path } + + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_denied_for :visitor } + end + + describe 'GET /groups/:path' do + subject { group_path(group) } + + context 'with public projects' do + before(:all) { create_project(:public) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with mixed projects' do + before(:all) { create_project(:mixed) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with internal projects' do + before(:all) { create_project(:internal) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with no projects' do + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + end + + describe 'GET /groups/:path/issues' do + subject { issues_group_path(group) } + + context 'with public projects' do + before(:all) { create_project(:public) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with mixed projects' do + before(:all) { create_project(:mixed) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with internal projects' do + before(:all) { create_project(:internal) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with no projects' do + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + end + + describe 'GET /groups/:path/merge_requests' do + subject { merge_requests_group_path(group) } + + context 'with public projects' do + before(:all) { create_project(:public) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with mixed projects' do + before(:all) { create_project(:mixed) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with internal projects' do + before(:all) { create_project(:internal) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with no projects' do + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + end + + describe 'GET /groups/:path/group_members' do + subject { group_group_members_path(group) } + + context 'with public projects' do + before(:all) { create_project(:public) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with mixed projects' do + before(:all) { create_project(:mixed) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_allowed_for :visitor } + end + + context 'with internal projects' do + before(:all) { create_project(:internal) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_allowed_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with no projects' do + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_allowed_for group_member(:master) } + it { is_expected.to be_allowed_for group_member(:reporter) } + it { is_expected.to be_allowed_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + end + + describe 'GET /groups/:path/edit' do + subject { edit_group_path(group) } + + context 'with public projects' do + before(:all) { create_project(:public) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_denied_for group_member(:master) } + it { is_expected.to be_denied_for group_member(:reporter) } + it { is_expected.to be_denied_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with mixed projects' do + before(:all) { create_project(:mixed) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_denied_for group_member(:master) } + it { is_expected.to be_denied_for group_member(:reporter) } + it { is_expected.to be_denied_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with internal projects' do + before(:all) { create_project(:internal) } + + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_denied_for group_member(:master) } + it { is_expected.to be_denied_for group_member(:reporter) } + it { is_expected.to be_denied_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + + context 'with no projects' do + it { is_expected.to be_allowed_for group_member(:owner) } + it { is_expected.to be_denied_for group_member(:master) } + it { is_expected.to be_denied_for group_member(:reporter) } + it { is_expected.to be_denied_for group_member(:guest) } + it { is_expected.to be_allowed_for :admin } + it { is_expected.to be_denied_for :user } + it { is_expected.to be_denied_for :visitor } + end + end +end From b42422a7a97d376fb5f78e8dfa614857d6b8d1fa Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 22 Jul 2015 00:39:18 -0400 Subject: [PATCH 72/80] Move spec/features/admin/security_spec to spec/features/security --- .../{admin/security_spec.rb => security/admin_access_spec.rb} | 2 ++ 1 file changed, 2 insertions(+) rename spec/features/{admin/security_spec.rb => security/admin_access_spec.rb} (96%) diff --git a/spec/features/admin/security_spec.rb b/spec/features/security/admin_access_spec.rb similarity index 96% rename from spec/features/admin/security_spec.rb rename to spec/features/security/admin_access_spec.rb index 175fa9d464..fe8cd7b760 100644 --- a/spec/features/admin/security_spec.rb +++ b/spec/features/security/admin_access_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Admin::Projects", feature: true do + include AccessMatchers + describe "GET /admin/projects" do subject { admin_namespaces_projects_path } From 276ca427ea8c30b20881f466bb9137596174cdb4 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 22 Jul 2015 14:07:41 +0200 Subject: [PATCH 73/80] Fix Remove source-branch for MRs from same project --- CHANGELOG | 1 + app/models/merge_request.rb | 4 ++++ app/services/files/base_service.rb | 2 +- app/services/merge_requests/auto_merge_service.rb | 6 +++++- lib/gitlab/satellite/merge_action.rb | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2765923124..136cfe5f74 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,7 @@ v 7.14.0 (unreleased) - Expire Rails cache entries after two weeks to prevent endless Redis growth - Add support for destroying project milestones (Stan Hu) - Add fetch command to the MR page. + - Fix bug causing "Remove source-branch" option not to work for merge requests from the same project. v 7.13.0 (unreleased) - Remove repository graph log to fix slow cache updates after push event (Stan Hu) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 53b3fc10cc..1ef76d1670 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -235,6 +235,10 @@ class MergeRequest < ActiveRecord::Base execute(self, commit_message) end + def remove_source_branch? + self.should_remove_source_branch && !self.source_project.root_ref?(self.source_branch) && !self.for_fork? + end + def open? opened? || reopened? end diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index f587ee266d..646784f2d9 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -39,7 +39,7 @@ module Files def after_commit(sha, branch) commit = repository.commit(sha) - full_ref = 'refs/heads/' + branch + full_ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch}" old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) end diff --git a/app/services/merge_requests/auto_merge_service.rb b/app/services/merge_requests/auto_merge_service.rb index df793fc997..a5ee16e529 100644 --- a/app/services/merge_requests/auto_merge_service.rb +++ b/app/services/merge_requests/auto_merge_service.rb @@ -37,6 +37,10 @@ module MergeRequests # Merge local branches using rugged instead of satellites if sha = commit after_commit(sha, merge_request.target_branch) + + if merge_request.remove_source_branch? + DeleteBranchService.new(merge_request.source_project, current_user).execute(merge_request.source_branch) + end end end end @@ -55,7 +59,7 @@ module MergeRequests def after_commit(sha, branch) commit = repository.commit(sha) - full_ref = 'refs/heads/' + branch + full_ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch}" old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) end diff --git a/lib/gitlab/satellite/merge_action.rb b/lib/gitlab/satellite/merge_action.rb index 1f2e5f82dd..f9bf286697 100644 --- a/lib/gitlab/satellite/merge_action.rb +++ b/lib/gitlab/satellite/merge_action.rb @@ -33,7 +33,7 @@ module Gitlab merge_repo.git.push(default_options, :origin, merge_request.target_branch) # remove source branch - if merge_request.should_remove_source_branch && !project.root_ref?(merge_request.source_branch) && !merge_request.for_fork? + if merge_request.remove_source_branch? # will raise CommandFailed when push fails merge_repo.git.push(default_options, :origin, ":#{merge_request.source_branch}") end From bde2173b636782aee14c5c3c09ca2cc1775931e1 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Wed, 22 Jul 2015 16:59:06 +0300 Subject: [PATCH 74/80] Fix link to 2fa help page. Closes #2055 --- app/views/profiles/two_factor_auths/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/profiles/two_factor_auths/new.html.haml b/app/views/profiles/two_factor_auths/new.html.haml index 74268c9bde..92dc58c10d 100644 --- a/app/views/profiles/two_factor_auths/new.html.haml +++ b/app/views/profiles/two_factor_auths/new.html.haml @@ -5,7 +5,7 @@ Download the Google Authenticator application from App Store for iOS or Google Play for Android and scan this code. - More information is available in the #{link_to('documentation', help_page_path('workflow', 'two_factor_authentication'))}. + More information is available in the #{link_to('documentation', help_page_path('profile', 'two_factor_authentication'))}. %hr From 6454bcbfa4bee56b53ff4e17f9e18ecc00ecbbd5 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Wed, 22 Jul 2015 17:53:18 +0300 Subject: [PATCH 75/80] revert cache issue --- CHANGELOG | 3 + app/views/projects/issues/_issue.html.haml | 73 +++++++++++----------- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2765923124..1ba9d9f308 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,9 @@ v 7.14.0 (unreleased) - Add support for destroying project milestones (Stan Hu) - Add fetch command to the MR page. +v 7.13.1 + - Revert issue caching + v 7.13.0 (unreleased) - Remove repository graph log to fix slow cache updates after push event (Stan Hu) - Only enable HSTS header for HTTPS and port 443 (Stan Hu) diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml index 1b45bb1af0..b6910c8f79 100644 --- a/app/views/projects/issues/_issue.html.haml +++ b/app/views/projects/issues/_issue.html.haml @@ -3,43 +3,42 @@ .issue-check = check_box_tag dom_id(issue,"selected"), nil, false, 'data-id' => issue.id, class: "selected_issue" - = cache issue do - .issue-title - %span.issue-title-text - = link_to_gfm issue.title, issue_path(issue), class: "row_title" - .issue-labels - - issue.labels.each do |label| - = link_to_label(label, project: issue.project) - .pull-right.light - - if issue.closed? - %span - CLOSED - - if issue.assignee - = link_to_member(@project, issue.assignee, name: false) - - note_count = issue.notes.user.count - - if note_count > 0 -   - %span - %i.fa.fa-comments - = note_count - - else -   - %span.issue-no-comments - %i.fa.fa-comments - = 0 - - .issue-info - = "#{issue.to_reference} opened #{time_ago_with_tooltip(issue.created_at, placement: 'bottom')} by #{link_to_member(@project, issue.author, avatar: false)}".html_safe - - if issue.votes_count > 0 - = render 'votes/votes_inline', votable: issue - - if issue.milestone + .issue-title + %span.issue-title-text + = link_to_gfm issue.title, issue_path(issue), class: "row_title" + .issue-labels + - issue.labels.each do |label| + = link_to_label(label, project: issue.project) + .pull-right.light + - if issue.closed? + %span + CLOSED + - if issue.assignee + = link_to_member(@project, issue.assignee, name: false) + - note_count = issue.notes.user.count + - if note_count > 0   %span - %i.fa.fa-clock-o - = issue.milestone.title - - if issue.tasks? - %span.task-status - = issue.task_status + %i.fa.fa-comments + = note_count + - else +   + %span.issue-no-comments + %i.fa.fa-comments + = 0 - .pull-right.issue-updated-at - %small updated #{time_ago_with_tooltip(issue.updated_at, placement: 'bottom', html_class: 'issue_update_ago')} + .issue-info + = "#{issue.to_reference} opened #{time_ago_with_tooltip(issue.created_at, placement: 'bottom')} by #{link_to_member(@project, issue.author, avatar: false)}".html_safe + - if issue.votes_count > 0 + = render 'votes/votes_inline', votable: issue + - if issue.milestone +   + %span + %i.fa.fa-clock-o + = issue.milestone.title + - if issue.tasks? + %span.task-status + = issue.task_status + + .pull-right.issue-updated-at + %small updated #{time_ago_with_tooltip(issue.updated_at, placement: 'bottom', html_class: 'issue_update_ago')} From 6e08e7aac490c5758589bd50db331d42dd24219b Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Wed, 22 Jul 2015 17:04:49 +0200 Subject: [PATCH 76/80] Check if session_expire_delay column exists before adding the column. --- ...121_add_session_expire_delay_for_application_settings.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/db/migrate/20150609141121_add_session_expire_delay_for_application_settings.rb b/db/migrate/20150609141121_add_session_expire_delay_for_application_settings.rb index ffa22e6d5e..61ff0af41f 100644 --- a/db/migrate/20150609141121_add_session_expire_delay_for_application_settings.rb +++ b/db/migrate/20150609141121_add_session_expire_delay_for_application_settings.rb @@ -1,5 +1,7 @@ class AddSessionExpireDelayForApplicationSettings < ActiveRecord::Migration def change - add_column :application_settings, :session_expire_delay, :integer, default: 10080, null: false + unless column_exists?(:application_settings, :session_expire_delay) + add_column :application_settings, :session_expire_delay, :integer, default: 10080, null: false + end end -end \ No newline at end of file +end From 4466f25dd52e7eb9230b7d16d8d4103ebd900cc6 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Wed, 22 Jul 2015 17:03:57 +0300 Subject: [PATCH 77/80] revert cache for events --- CHANGELOG | 1 + app/views/events/_event.html.haml | 15 +++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1ba9d9f308..7ddddac014 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ v 7.14.0 (unreleased) v 7.13.1 - Revert issue caching + - Reverted cache for events v 7.13.0 (unreleased) - Remove repository graph log to fix slow cache updates after push event (Stan Hu) diff --git a/app/views/events/_event.html.haml b/app/views/events/_event.html.haml index b8409f6466..5ab5ffc238 100644 --- a/app/views/events/_event.html.haml +++ b/app/views/events/_event.html.haml @@ -8,11 +8,10 @@ = image_tag avatar_icon(event.author_email, 24), class: "avatar s24", alt:'' = render "events/event/created_project", event: event - else - = cache event do - = image_tag avatar_icon(event.author_email, 24), class: "avatar s24", alt:'' - - if event.push? - = render "events/event/push", event: event - - elsif event.commented? - = render "events/event/note", event: event - - else - = render "events/event/common", event: event + = image_tag avatar_icon(event.author_email, 24), class: "avatar s24", alt:'' + - if event.push? + = render "events/event/push", event: event + - elsif event.commented? + = render "events/event/note", event: event + - else + = render "events/event/common", event: event From 0484ae7e6a7f0e6301089cdf7ce3e8a17e9079b8 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 23 Jul 2015 13:10:32 +0200 Subject: [PATCH 78/80] Return true/false from AutoMergeService#merge! --- app/services/merge_requests/auto_merge_service.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/services/merge_requests/auto_merge_service.rb b/app/services/merge_requests/auto_merge_service.rb index a5ee16e529..db824d452d 100644 --- a/app/services/merge_requests/auto_merge_service.rb +++ b/app/services/merge_requests/auto_merge_service.rb @@ -41,6 +41,10 @@ module MergeRequests if merge_request.remove_source_branch? DeleteBranchService.new(merge_request.source_project, current_user).execute(merge_request.source_branch) end + + true + else + false end end end From 42e848ade64af2b1731327d8082e112ac4bcea3b Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Thu, 23 Jul 2015 15:20:56 +0000 Subject: [PATCH 79/80] update changelog --- CHANGELOG-EE | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG-EE b/CHANGELOG-EE index ef9a625dc4..ecaebe1522 100644 --- a/CHANGELOG-EE +++ b/CHANGELOG-EE @@ -1,4 +1,8 @@ -v 7.13 (Unrelease) +v7.13.1 + - Merge community edition changes for version 7.13.1 + - Fix: "Rebase before merge" doesn't work when source branch is in the same project + +v 7.13 - Fix git hook validation on initial push to master branch. - Reset approvals on push - Fix 500 error when the source project of an MR is deleted From 2d1d6fc05e5380f58c0298ae4a88ae4bd68b1885 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Mon, 6 Jul 2015 19:59:48 +0300 Subject: [PATCH 80/80] Group web_hook fix --- CHANGELOG-EE | 5 ++++- app/models/project.rb | 2 +- spec/models/project_spec.rb | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG-EE b/CHANGELOG-EE index ecaebe1522..df4928920c 100644 --- a/CHANGELOG-EE +++ b/CHANGELOG-EE @@ -1,4 +1,7 @@ -v7.13.1 +v 7.13.2 + - Fix group web hook + +v 7.13.1 - Merge community edition changes for version 7.13.1 - Fix: "Rebase before merge" doesn't work when source branch is in the same project diff --git a/app/models/project.rb b/app/models/project.rb index b1135d1e57..87e47ae560 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -512,7 +512,7 @@ class Project < ActiveRecord::Base end if group group.hooks.send(hooks_scope).each do |hook| - hook.async_execute(data) + hook.async_execute(data, hooks_scope.to_s) end end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 63091e913f..17ae887eb1 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -365,6 +365,23 @@ describe Project do end end + describe :execute_hooks do + it "triggers project and group hooks" do + group = create :group, name: 'gitlab' + project = create(:project, name: 'gitlabhq', namespace: group) + project_hook = create(:project_hook, push_events: true, project: project) + group_hook = create(:group_hook, push_events: true, group: group) + + stub_request(:post, project_hook.url) + stub_request(:post, group_hook.url) + + expect_any_instance_of(ProjectHook).to receive(:async_execute).and_return(true) + expect_any_instance_of(GroupHook).to receive(:async_execute).and_return(true) + + project.execute_hooks({}, :push_hooks) + end + end + describe :avatar_url do subject { project.avatar_url }

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 R<)45r@M+sq7;}%C{||9#)x!V) diff --git a/doc/workflow/merge_request_approvals.md b/doc/workflow/merge_request_approvals.md new file mode 100644 index 0000000000..1e98fa213a --- /dev/null +++ b/doc/workflow/merge_request_approvals.md @@ -0,0 +1,66 @@ +# Merge Request Approvals + +If you want to make sure every merge request is approved by one or more +people, you can enforce this workflow by using merge request approvals. +Merge request approvals allow you to set the number of necessary approvals +and predefine a list of approvers that will need to approve every +merge request in a project. + +![Merge request approval](merge_request_approvals/2_approvals.png) + +## Configuring Approvals + +You can configure the approvals in the project settings, under merge requests. + +![Merge Request Approvals in Project Settings](merge_request_approvals/approvals_settings.png) + +To enable it, set **Approvals required** to 1 or higher. + +### Approvals Required + +This sets the amount of approvals required before being able to merge a merge request. +At 0, this disables the feature. Any value above requires that amount of different +users to approve the merge request. + +### Reset approvals on push + +With this setting turned on, any done approvals are reset when new a new push +is done to the merge request branch. + +Turn "Reset approvals on push" off if you want approvals to persist, +independent of changes to the merge request. + +### Approvers + +At approvers you can define the default set of users that need to approve a +merge request. + +If there are more approvers than required approvals, any subset of these users +can approve the merge request. + +If there are less approvers than required approvals, all the set approvers plus +any other user(s) need to approve the merge request before being able to merge it. + +![One specific user and someone else need to approve this merge request](merge_request_approvals/1_named_approval.png) + +If the approvers are equal to the amount of required approvals, all the approvers are +required to approve merge requests. + +![Two specific users need to approve this merge request](merge_request_approvals/2_named_approvals.png) + +Note that approvers can be changed during merge request creation. + +## Using Approvals + +After configuring Approvals, you will see the following during merge request creation. + +![Choosing approvers in merge request creation](merge_request_approvals/approvals_mr.png) + +You can change the default set of approvers before creating the merge request. +You can't change the amount of required approvals. This ensures that you're +not forced to adjust settings when someone is unavailable for approval, yet +the process is still enforced. + +To approve a merge request, simply press the button. + +![Merge request approval](merge_request_approvals/2_approvals.png) diff --git a/doc/workflow/merge_request_approvals/1_named_approval.png b/doc/workflow/merge_request_approvals/1_named_approval.png new file mode 100644 index 0000000000000000000000000000000000000000..9757dd81d10dba44400a57d3ec6ca9f9bf0717a3 GIT binary patch literal 35216 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⪻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 literal 0 HcmV?d00001 diff --git a/doc/workflow/merge_request_approvals/2_approvals.png b/doc/workflow/merge_request_approvals/2_approvals.png new file mode 100644 index 0000000000000000000000000000000000000000..14f631ca023e665534057bf1bd71a2fc6a5ba28e GIT binary patch literal 31572 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%0AvDF3}kn}#C1CnF;dEr2)K5vif8 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 literal 0 HcmV?d00001 diff --git a/doc/workflow/merge_request_approvals/2_named_approvals.png b/doc/workflow/merge_request_approvals/2_named_approvals.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e275c61af0a982120187754e6fdaed30edc977 GIT binary patch literal 47499 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�pxS}9NAVvE8S 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 F{{#G1fXDy< literal 0 HcmV?d00001 diff --git a/doc/workflow/merge_request_approvals/approvals_mr.png b/doc/workflow/merge_request_approvals/approvals_mr.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1041105e026202c3e3210c168e051bf3f46f83 GIT binary patch literal 36522 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 literal 0 HcmV?d00001 diff --git a/doc/workflow/merge_request_approvals/approvals_settings.png b/doc/workflow/merge_request_approvals/approvals_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..29502ce2a2e4c0ff7de82a4bdef97e25bf4654f5 GIT binary patch literal 57958 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≀1mU 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