mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-19 09:36:47 +10:00
Merge branch 'master' into copying-file-seen-as-licence
This commit is contained in:
@@ -25,7 +25,6 @@ config/initializers/rack_attack.rb
|
||||
config/initializers/smtp_settings.rb
|
||||
config/resque.yml
|
||||
config/unicorn.rb
|
||||
config/mail_room.yml
|
||||
config/secrets.yml
|
||||
coverage/*
|
||||
db/*.sqlite3
|
||||
|
||||
@@ -1,13 +1,91 @@
|
||||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.1.0 (unreleased)
|
||||
v 8.2.0 (unreleased)
|
||||
- Remove CSS property preventing hard tabs from rendering in Chromium 45 (Stan Hu)
|
||||
- Fix Drone CI service template not saving properly (Stan Hu)
|
||||
- Added a GitLab specific profiling tool called "Sherlock" (see GitLab CE merge request #1749)
|
||||
- Upgrade gitlab_git to 7.2.20 and rugged to 0.23.3 (Stan Hu)
|
||||
- Improved performance of finding users by one of their Email addresses
|
||||
- Add allow_failure field to commit status API (Stan Hu)
|
||||
- Improved performance of replacing references in comments
|
||||
- Show last project commit to default branch on project home page
|
||||
- Highlight comment based on anchor in URL
|
||||
- Adds ability to remove the forked relationship from project settings screen. (Han Loong Liauw)
|
||||
- Improved performance of sorting milestone issues
|
||||
- Allow users to select the Files view as default project view (Cristian Bica)
|
||||
- Show "Empty Repository Page" for repository without branches (Artem V. Navrotskiy)
|
||||
- Fix: Inability to reply to code comments in the MR view, if the MR comes from a fork
|
||||
- Use git follow flag for commits page when retrieve history for file or directory
|
||||
- Show merge request CI status on merge requests index page
|
||||
- Send build name and stage in CI notification e-mail
|
||||
- Extend yml syntax for only and except to support specifying repository path
|
||||
- Enable shared runners to all new projects
|
||||
- Fix: 500 error returned if destroy request without HTTP referer (Kazuki Shimizu)
|
||||
- Remove deprecated CI events from project settings page
|
||||
- [API] Add ability to fetch the commit ID of the last commit that actually touched a file
|
||||
- Add "New file" link to dropdown on project page
|
||||
- Include commit logs in project search
|
||||
- Add "added", "modified" and "removed" properties to commit object in webhook
|
||||
- Rename "Back to" links to "Go to" because its not always a case it point to place user come from
|
||||
- Allow groups to appear in the search results if the group owner allows it
|
||||
- New design for project graphs page
|
||||
- Fix incoming email config defaults
|
||||
- MR target branch is now visible on a list view when it is different from project's default one
|
||||
- Improve Continuous Integration graphs page
|
||||
|
||||
v 8.1.4
|
||||
- Fix bug where manually merged branches in a MR would end up with an empty diff (Stan Hu)
|
||||
- Prevent redirect loop when home_page_url is set to the root URL
|
||||
- Fix incoming email config defaults
|
||||
- Make color of "Accept Merge Request" button consistent with current build status
|
||||
- Remove CSS property preventing hard tabs from rendering in Chromium 45 (Stan Hu)
|
||||
|
||||
v 8.1.3
|
||||
- Force update refs/merge-requests/X/head upon a push to the source branch of a merge request (Stan Hu)
|
||||
- Spread out runner contacted_at updates
|
||||
- Use issue editor as cross reference comment author when issue is edited with a new mention
|
||||
- Add Facebook authentication
|
||||
|
||||
v 8.1.2
|
||||
- Fix cloning Wiki repositories via HTTP (Stan Hu)
|
||||
- Add migration to remove satellites directory
|
||||
- Fix specific runners visibility
|
||||
- Fix 500 when editing CI service
|
||||
- Require CI jobs to be named
|
||||
- Fix CSS for runner status
|
||||
- Fix CI badge
|
||||
- Allow developer to manage builds
|
||||
|
||||
v 8.1.1
|
||||
- Removed, see 8.1.2
|
||||
|
||||
v 8.1.0
|
||||
- Ensure MySQL CI limits DB migrations occur after the fields have been created (Stan Hu)
|
||||
- Fix duplicate repositories in GitHub import page (Stan Hu)
|
||||
- Redirect to a default path if HTTP_REFERER is not set (Stan Hu)
|
||||
- Adds ability to create directories using the web editor (Ben Ford)
|
||||
- Cleanup stuck CI builds
|
||||
- Send an email to admin email when a user is reported for spam (Jonathan Rochkind)
|
||||
- Show notifications button when user is member of group rather than project (Grzegorz Bizon)
|
||||
- Fix bug preventing mentioned issued from being closed when MR is merged using fast-forward merge.
|
||||
- Fix nonatomic database update potentially causing project star counts to go negative (Stan Hu)
|
||||
- Don't show "Add README" link in an empty repository if user doesn't have access to push (Stan Hu)
|
||||
- Fix error preventing displaying of commit data for a directory with a leading dot (Stan Hu)
|
||||
- Speed up load times of issue detail pages by roughly 1.5x
|
||||
- Fix CI rendering regressions
|
||||
- If a merge request is to close an issue, show this on the issue page (Zeger-Jan van de Weg)
|
||||
- Add a system note and update relevant merge requests when a branch is deleted or re-added (Stan Hu)
|
||||
- Make diff file view easier to use on mobile screens (Stan Hu)
|
||||
- Improved performance of finding users by username or Email address
|
||||
- Fix bug where merge request comments created by API would not trigger notifications (Stan Hu)
|
||||
- Add support for creating directories from Files page (Stan Hu)
|
||||
- Allow removing of project without confirmation when JavaScript is disabled (Stan Hu)
|
||||
- Support filtering by "Any" milestone or issue and fix "No Milestone" and "No Label" filters (Stan Hu)
|
||||
- Improved performance of the trending projects page
|
||||
- Remove CI migration task
|
||||
- Improved performance of finding projects by their namespace
|
||||
- Fix bug where transferring a project would result in stale commit links (Stan Hu)
|
||||
- Fix build trace updating
|
||||
- Include full path of source and target branch names in New Merge Request page (Stan Hu)
|
||||
- Add user preference to view activities as default dashboard (Stan Hu)
|
||||
- Add option to admin area to sign in as a specific user (Pavel Forkert)
|
||||
@@ -17,7 +95,10 @@ v 8.1.0 (unreleased)
|
||||
- Fix cases where Markdown did not render links in activity feed (Stan Hu)
|
||||
- Add first and last to pagination (Zeger-Jan van de Weg)
|
||||
- Added Commit Status API
|
||||
- Added Builds View
|
||||
- Added when to .gitlab-ci.yml
|
||||
- Show CI status on commit page
|
||||
- Added CI_BUILD_TAG, _STAGE, _NAME and _TRIGGERED to CI builds
|
||||
- Show CI status on Your projects page and Starred projects page
|
||||
- Remove "Continuous Integration" page from dashboard
|
||||
- Add notes and SSL verification entries to hook APIs (Ben Boeckel)
|
||||
@@ -27,6 +108,7 @@ v 8.1.0 (unreleased)
|
||||
- Move CI triggers page to project settings area
|
||||
- Move CI project settings page to CE project settings area
|
||||
- Fix bug when removed file was not appearing in merge request diff
|
||||
- Show warning when build cannot be served by any of the available CI runners
|
||||
- Note the original location of a moved project when notifying users of the move
|
||||
- Improve error message when merging fails
|
||||
- Add support of multibyte characters in LDAP UID (Roman Petrov)
|
||||
@@ -38,7 +120,7 @@ v 8.1.0 (unreleased)
|
||||
- Move CI web hooks page to project settings area
|
||||
- Fix User Identities API. It now allows you to properly create or update user's identities.
|
||||
- Add user preference to change layout width (Peter Göbel)
|
||||
- Use commit status in merge request widget as preffered source of CI status
|
||||
- Use commit status in merge request widget as preferred source of CI status
|
||||
- Integrate CI commit and build pages into project pages
|
||||
- Move CI services page to project settings area
|
||||
- Add "Quick Submit" behavior to input fields throughout the application. Use
|
||||
@@ -46,6 +128,8 @@ v 8.1.0 (unreleased)
|
||||
- Fix position of hamburger in header for smaller screens (Han Loong Liauw)
|
||||
- Fix bug where Emojis in Markdown would truncate remaining text (Sakata Sinji)
|
||||
- Persist filters when sorting on admin user page (Jerry Lukins)
|
||||
- Update style of snippets pages (Han Loong Liauw)
|
||||
- Allow dashboard and group issues/MRs to be filtered by label
|
||||
- Add spellcheck=false to certain input fields
|
||||
- Invalidate stored service password if the endpoint URL is changed
|
||||
- Project names are not fully shown if group name is too big, even on group page view
|
||||
@@ -53,6 +137,15 @@ v 8.1.0 (unreleased)
|
||||
- Add "New Page" button to Wiki Pages tab (Stan Hu)
|
||||
- Only render 404 page from /public
|
||||
- Hide passwords from services API (Alex Lossent)
|
||||
- Fix: Images cannot show when projects' path was changed
|
||||
- Let gitlab-git-http-server generate and serve 'git archive' downloads
|
||||
- Optimize query when filtering on issuables (Zeger-Jan van de Weg)
|
||||
- Fix padding of outdated discussion item.
|
||||
- Animate the logo on hover
|
||||
|
||||
v 8.0.5
|
||||
- Correct lookup-by-email for LDAP logins
|
||||
- Fix loading spinner sometimes not being hidden on Merge Request tab switches
|
||||
|
||||
v 8.0.4
|
||||
- Fix Message-ID header to be RFC 2111-compliant to prevent e-mails being dropped (Stan Hu)
|
||||
|
||||
@@ -83,6 +83,7 @@ If you can, please submit a merge request with the fix or improvements including
|
||||
1. Be prepared to answer questions and incorporate feedback even if requests for this arrive weeks or months after your MR submission
|
||||
1. If your MR touches code that executes shell commands, make sure it adheres to the [shell command guidelines]( doc/development/shell_commands.md).
|
||||
1. Also have a look at the [shell command guidelines](doc/development/shell_commands.md) if your code reads or opens files, or handles paths to files on disk.
|
||||
1. If your code creates new files on disk please read the [shared files guidelines](doc/development/shared_files.md).
|
||||
|
||||
The **official merge window** is in the beginning of the month from the 1st to the 7th day of the month. The best time to submit a MR and get feedback fast.
|
||||
Before this time the GitLab B.V. team is still dealing with work that is created by the monthly release such as regressions requiring patch releases.
|
||||
|
||||
@@ -1 +1 @@
|
||||
2.6.5
|
||||
2.6.6
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
0.3.1
|
||||
@@ -1,13 +1,5 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
def darwin_only(require_as)
|
||||
RUBY_PLATFORM.include?('darwin') && require_as
|
||||
end
|
||||
|
||||
def linux_only(require_as)
|
||||
RUBY_PLATFORM.include?('linux') && require_as
|
||||
end
|
||||
|
||||
gem 'rails', '4.1.12'
|
||||
|
||||
# Specify a sprockets version due to security issue
|
||||
@@ -27,6 +19,7 @@ gem 'devise-async', '~> 0.9.0'
|
||||
gem 'doorkeeper', '~> 2.1.3'
|
||||
gem 'omniauth', '~> 1.2.2'
|
||||
gem 'omniauth-bitbucket', '~> 0.0.2'
|
||||
gem 'omniauth-facebook', '~> 3.0.0'
|
||||
gem 'omniauth-github', '~> 1.1.1'
|
||||
gem 'omniauth-gitlab', '~> 1.0.0'
|
||||
gem 'omniauth-google-oauth2', '~> 0.2.0'
|
||||
@@ -47,7 +40,7 @@ gem "browser", '~> 1.0.0'
|
||||
|
||||
# Extracting information from a git repository
|
||||
# Provide access to Gitlab::Git library
|
||||
gem "gitlab_git", '~> 7.2.18'
|
||||
gem "gitlab_git", '~> 7.2.20'
|
||||
|
||||
# LDAP Auth
|
||||
# GitLab fork with several improvements to original library. For full list of changes
|
||||
@@ -58,11 +51,7 @@ 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
|
||||
# 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"
|
||||
gem "github-linguist", "~> 4.7.0", require: "linguist"
|
||||
|
||||
# API
|
||||
gem 'grape', '~> 0.6.1'
|
||||
@@ -71,7 +60,7 @@ gem 'rack-cors', '~> 0.4.0', require: 'rack/cors'
|
||||
|
||||
# Format dates and times
|
||||
# based on human-friendly examples
|
||||
gem "stamp", '~> 0.5.0'
|
||||
gem "stamp", '~> 0.6.0'
|
||||
|
||||
# Enumeration fields
|
||||
gem 'enumerize', '~> 0.7.0'
|
||||
@@ -102,7 +91,7 @@ gem "seed-fu", '~> 2.3.5'
|
||||
gem 'html-pipeline', '~> 1.11.0'
|
||||
gem 'task_list', '~> 1.0.2', require: 'task_list/railtie'
|
||||
gem 'github-markup', '~> 1.3.1'
|
||||
gem 'redcarpet', '~> 3.3.2'
|
||||
gem 'redcarpet', '~> 3.3.3'
|
||||
gem 'RedCloth', '~> 4.2.9'
|
||||
gem 'rdoc', '~>3.6'
|
||||
gem 'org-ruby', '~> 0.9.12'
|
||||
@@ -120,7 +109,7 @@ group :unicorn do
|
||||
end
|
||||
|
||||
# State machine
|
||||
gem "state_machine", '~> 1.2.0'
|
||||
gem "state_machines-activerecord", '~> 0.3.0'
|
||||
# Run events after state machine commits
|
||||
gem 'after_commit_queue'
|
||||
|
||||
@@ -192,11 +181,11 @@ gem 'ace-rails-ap', '~> 2.0.1'
|
||||
gem 'mousetrap-rails', '~> 1.4.6'
|
||||
|
||||
# Detect and convert string character encoding
|
||||
gem 'charlock_holmes', '~> 0.6.9.4'
|
||||
gem 'charlock_holmes', '~> 0.7.3'
|
||||
|
||||
gem "sass-rails", '~> 4.0.5'
|
||||
gem "coffee-rails", '~> 4.1.0'
|
||||
gem "uglifier", '~> 2.3.2'
|
||||
gem "uglifier", '~> 2.7.2'
|
||||
gem 'turbolinks', '~> 2.5.0'
|
||||
gem 'jquery-turbolinks', '~> 2.0.1'
|
||||
|
||||
@@ -205,11 +194,11 @@ gem 'bootstrap-sass', '~> 3.0'
|
||||
gem 'font-awesome-rails', '~> 4.2'
|
||||
gem 'gitlab_emoji', '~> 0.1'
|
||||
gem 'gon', '~> 5.0.0'
|
||||
gem 'jquery-atwho-rails', '~> 1.0.0'
|
||||
gem 'jquery-atwho-rails', '~> 1.3.2'
|
||||
gem 'jquery-rails', '~> 3.1.3'
|
||||
gem 'jquery-scrollto-rails', '~> 1.4.3'
|
||||
gem 'jquery-ui-rails', '~> 4.2.1'
|
||||
gem 'nprogress-rails', '~> 0.1.2.3'
|
||||
gem 'nprogress-rails', '~> 0.1.6.7'
|
||||
gem 'raphael-rails', '~> 2.1.2'
|
||||
gem 'request_store', '~> 1.2.0'
|
||||
gem 'select2-rails', '~> 3.5.9'
|
||||
@@ -222,8 +211,9 @@ group :development do
|
||||
gem "annotate", "~> 2.6.0"
|
||||
gem "letter_opener", '~> 1.1.2'
|
||||
gem 'quiet_assets', '~> 1.0.2'
|
||||
gem 'rack-mini-profiler', '~> 0.9.0', require: false
|
||||
gem 'rerun', '~> 0.10.0'
|
||||
gem 'bullet', require: false
|
||||
gem 'rblineprof', platform: :mri, require: false
|
||||
|
||||
# Better errors handler
|
||||
gem 'better_errors', '~> 1.0.1'
|
||||
@@ -290,7 +280,7 @@ gem 'newrelic-grape'
|
||||
|
||||
gem 'octokit', '~> 3.7.0'
|
||||
|
||||
gem "mail_room", "~> 0.6.0"
|
||||
gem "mail_room", "~> 0.6.1"
|
||||
|
||||
gem 'email_reply_parser', '~> 0.5.8'
|
||||
|
||||
@@ -304,11 +294,3 @@ gem 'oauth2', '~> 1.0.0'
|
||||
|
||||
# Soft deletion
|
||||
gem "paranoia", "~> 2.0"
|
||||
|
||||
group :development, :test do
|
||||
gem 'guard-rspec', '~> 4.2.0'
|
||||
|
||||
gem 'rb-fsevent', require: darwin_only('rb-fsevent')
|
||||
gem 'growl', require: darwin_only('growl')
|
||||
gem 'rb-inotify', require: linux_only('rb-inotify')
|
||||
end
|
||||
|
||||
+47
-54
@@ -87,6 +87,9 @@ GEM
|
||||
terminal-table (~> 1.4)
|
||||
browser (1.0.0)
|
||||
builder (3.2.2)
|
||||
bullet (4.14.9)
|
||||
activesupport (>= 3.0.0)
|
||||
uniform_notifier (~> 1.9.0)
|
||||
byebug (6.0.2)
|
||||
cal-heatmap-rails (0.0.1)
|
||||
capybara (2.4.4)
|
||||
@@ -104,7 +107,7 @@ GEM
|
||||
json (>= 1.7)
|
||||
celluloid (0.16.0)
|
||||
timers (~> 4.0.0)
|
||||
charlock_holmes (0.6.9.4)
|
||||
charlock_holmes (0.7.3)
|
||||
chunky_png (1.3.4)
|
||||
cliver (0.3.2)
|
||||
coderay (1.1.0)
|
||||
@@ -134,6 +137,7 @@ GEM
|
||||
daemons (1.2.3)
|
||||
database_cleaner (1.4.1)
|
||||
debug_inspector (0.0.2)
|
||||
debugger-ruby_core_source (1.3.8)
|
||||
default_value_for (3.0.1)
|
||||
activerecord (>= 3.2.0, < 5.0)
|
||||
descendants_tracker (0.0.4)
|
||||
@@ -171,7 +175,7 @@ GEM
|
||||
activesupport (>= 3.2)
|
||||
equalizer (0.0.11)
|
||||
erubis (2.7.0)
|
||||
escape_utils (0.2.4)
|
||||
escape_utils (1.1.0)
|
||||
eventmachine (1.0.8)
|
||||
excon (0.45.4)
|
||||
execjs (2.6.0)
|
||||
@@ -262,6 +266,11 @@ GEM
|
||||
json
|
||||
get_process_mem (0.2.0)
|
||||
gherkin-ruby (0.3.2)
|
||||
github-linguist (4.7.0)
|
||||
charlock_holmes (~> 0.7.3)
|
||||
escape_utils (~> 1.1.0)
|
||||
mime-types (>= 1.19)
|
||||
rugged (>= 0.23.0b)
|
||||
github-markup (1.3.3)
|
||||
gitlab-flowdock-git-hook (1.0.1)
|
||||
flowdock (~> 0.7)
|
||||
@@ -272,17 +281,13 @@ GEM
|
||||
diff-lcs (~> 1.1)
|
||||
mime-types (~> 1.15)
|
||||
posix-spawn (~> 0.3)
|
||||
gitlab-linguist (3.0.1)
|
||||
charlock_holmes (~> 0.6.6)
|
||||
escape_utils (~> 0.2.4)
|
||||
mime-types (~> 1.19)
|
||||
gitlab_emoji (0.1.1)
|
||||
gemojione (~> 2.0)
|
||||
gitlab_git (7.2.18)
|
||||
gitlab_git (7.2.20)
|
||||
activesupport (~> 4.0)
|
||||
charlock_holmes (~> 0.6)
|
||||
gitlab-linguist (~> 3.0)
|
||||
rugged (~> 0.22.2)
|
||||
charlock_holmes (~> 0.7.3)
|
||||
github-linguist (~> 4.7.0)
|
||||
rugged (~> 0.23.3)
|
||||
gitlab_meta (7.0)
|
||||
gitlab_omniauth-ldap (1.2.1)
|
||||
net-ldap (~> 0.9)
|
||||
@@ -314,19 +319,6 @@ GEM
|
||||
grape-entity (0.4.8)
|
||||
activesupport
|
||||
multi_json (>= 1.3.2)
|
||||
growl (1.0.3)
|
||||
guard (2.13.0)
|
||||
formatador (>= 0.2.4)
|
||||
listen (>= 2.7, <= 4.0)
|
||||
lumberjack (~> 1.0)
|
||||
nenv (~> 0.1)
|
||||
notiffany (~> 0.0)
|
||||
pry (>= 0.9.12)
|
||||
shellany (~> 0.0)
|
||||
thor (>= 0.18.1)
|
||||
guard-rspec (4.2.10)
|
||||
guard (~> 2.1)
|
||||
rspec (>= 2.14, < 4.0)
|
||||
haml (4.0.7)
|
||||
tilt
|
||||
haml-rails (0.9.0)
|
||||
@@ -362,7 +354,7 @@ GEM
|
||||
ice_nine (0.11.1)
|
||||
inflecto (0.0.2)
|
||||
ipaddress (0.8.0)
|
||||
jquery-atwho-rails (1.0.1)
|
||||
jquery-atwho-rails (1.3.2)
|
||||
jquery-rails (3.1.3)
|
||||
railties (>= 3.0, < 5.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
@@ -387,12 +379,11 @@ GEM
|
||||
celluloid (~> 0.16.0)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
lumberjack (1.0.9)
|
||||
macaddr (1.7.1)
|
||||
systemu (~> 2.6.2)
|
||||
mail (2.6.3)
|
||||
mime-types (>= 1.16, < 3)
|
||||
mail_room (0.6.0)
|
||||
mail_room (0.6.1)
|
||||
method_source (0.8.2)
|
||||
mime-types (1.25.1)
|
||||
mimemagic (0.3.0)
|
||||
@@ -403,7 +394,6 @@ GEM
|
||||
multi_xml (0.5.5)
|
||||
multipart-post (2.0.0)
|
||||
mysql2 (0.3.20)
|
||||
nenv (0.2.0)
|
||||
nested_form (0.3.2)
|
||||
net-ldap (0.11)
|
||||
net-scp (1.2.1)
|
||||
@@ -416,10 +406,7 @@ GEM
|
||||
newrelic_rpm (3.9.4.245)
|
||||
nokogiri (1.6.6.2)
|
||||
mini_portile (~> 0.6.0)
|
||||
notiffany (0.0.7)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
nprogress-rails (0.1.2.3)
|
||||
nprogress-rails (0.1.6.7)
|
||||
oauth (0.4.7)
|
||||
oauth2 (1.0.0)
|
||||
faraday (>= 0.8, < 0.10)
|
||||
@@ -436,6 +423,8 @@ GEM
|
||||
multi_json (~> 1.7)
|
||||
omniauth (~> 1.1)
|
||||
omniauth-oauth (~> 1.0)
|
||||
omniauth-facebook (3.0.0)
|
||||
omniauth-oauth2 (~> 1.2)
|
||||
omniauth-github (1.1.2)
|
||||
omniauth (~> 1.0)
|
||||
omniauth-oauth2 (~> 1.1)
|
||||
@@ -502,8 +491,6 @@ GEM
|
||||
rack-attack (4.3.0)
|
||||
rack
|
||||
rack-cors (0.4.0)
|
||||
rack-mini-profiler (0.9.7)
|
||||
rack (>= 1.1.3)
|
||||
rack-mount (0.8.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-oauth2 (1.0.10)
|
||||
@@ -540,13 +527,15 @@ GEM
|
||||
rb-fsevent (0.9.5)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
rblineprof (0.3.6)
|
||||
debugger-ruby_core_source (~> 1.3)
|
||||
rbvmomi (1.8.2)
|
||||
builder
|
||||
nokogiri (>= 1.4.1)
|
||||
trollop
|
||||
rdoc (3.12.2)
|
||||
json (~> 1.4)
|
||||
redcarpet (3.3.2)
|
||||
redcarpet (3.3.3)
|
||||
redis (3.2.1)
|
||||
redis-actionpack (4.0.0)
|
||||
actionpack (~> 4)
|
||||
@@ -622,7 +611,7 @@ GEM
|
||||
sexp_processor (~> 4.1)
|
||||
rubyntlm (0.5.2)
|
||||
rubypants (0.2.0)
|
||||
rugged (0.22.2)
|
||||
rugged (0.23.3)
|
||||
safe_yaml (1.0.4)
|
||||
sanitize (2.1.0)
|
||||
nokogiri (>= 1.4.4)
|
||||
@@ -647,7 +636,6 @@ GEM
|
||||
sexp_processor (4.6.0)
|
||||
sham_rack (1.3.6)
|
||||
rack
|
||||
shellany (0.0.1)
|
||||
shoulda-matchers (2.8.0)
|
||||
activesupport (>= 3.0.0)
|
||||
sidekiq (3.3.0)
|
||||
@@ -697,8 +685,14 @@ GEM
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
stamp (0.5.0)
|
||||
state_machine (1.2.0)
|
||||
stamp (0.6.0)
|
||||
state_machines (0.4.0)
|
||||
state_machines-activemodel (0.3.0)
|
||||
activemodel (~> 4.1)
|
||||
state_machines (>= 0.4.0)
|
||||
state_machines-activerecord (0.3.0)
|
||||
activerecord (~> 4.1)
|
||||
state_machines-activemodel (>= 0.3.0)
|
||||
stringex (2.5.2)
|
||||
systemu (2.6.5)
|
||||
task_list (1.0.2)
|
||||
@@ -741,7 +735,7 @@ GEM
|
||||
simple_oauth (~> 0.1.4)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (2.3.3)
|
||||
uglifier (2.7.2)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
underscore-rails (1.4.4)
|
||||
@@ -755,6 +749,7 @@ GEM
|
||||
unicorn-worker-killer (0.4.3)
|
||||
get_process_mem (~> 0)
|
||||
unicorn (~> 4)
|
||||
uniform_notifier (1.9.0)
|
||||
uuid (2.3.8)
|
||||
macaddr (~> 1.0)
|
||||
version_sorter (2.0.0)
|
||||
@@ -800,12 +795,13 @@ DEPENDENCIES
|
||||
bootstrap-sass (~> 3.0)
|
||||
brakeman (= 3.0.1)
|
||||
browser (~> 1.0.0)
|
||||
bullet
|
||||
byebug
|
||||
cal-heatmap-rails (~> 0.0.1)
|
||||
capybara (~> 2.4.0)
|
||||
capybara-screenshot (~> 1.0.0)
|
||||
carrierwave (~> 0.9.0)
|
||||
charlock_holmes (~> 0.6.9.4)
|
||||
charlock_holmes (~> 0.7.3)
|
||||
coffee-rails (~> 4.1.0)
|
||||
colored (~> 1.2)
|
||||
colorize (~> 0.5.8)
|
||||
@@ -830,42 +826,41 @@ DEPENDENCIES
|
||||
foreman
|
||||
fuubar (~> 2.0.0)
|
||||
gemnasium-gitlab-service (~> 0.2)
|
||||
github-linguist (~> 4.7.0)
|
||||
github-markup (~> 1.3.1)
|
||||
gitlab-flowdock-git-hook (~> 1.0.1)
|
||||
gitlab-linguist (~> 3.0.1)
|
||||
gitlab_emoji (~> 0.1)
|
||||
gitlab_git (~> 7.2.18)
|
||||
gitlab_git (~> 7.2.20)
|
||||
gitlab_meta (= 7.0)
|
||||
gitlab_omniauth-ldap (~> 1.2.1)
|
||||
gollum-lib (~> 4.0.2)
|
||||
gon (~> 5.0.0)
|
||||
grape (~> 0.6.1)
|
||||
grape-entity (~> 0.4.2)
|
||||
growl
|
||||
guard-rspec (~> 4.2.0)
|
||||
haml-rails (~> 0.9.0)
|
||||
hipchat (~> 1.5.0)
|
||||
html-pipeline (~> 1.11.0)
|
||||
httparty (~> 0.13.3)
|
||||
jquery-atwho-rails (~> 1.0.0)
|
||||
jquery-atwho-rails (~> 1.3.2)
|
||||
jquery-rails (~> 3.1.3)
|
||||
jquery-scrollto-rails (~> 1.4.3)
|
||||
jquery-turbolinks (~> 2.0.1)
|
||||
jquery-ui-rails (~> 4.2.1)
|
||||
kaminari (~> 0.16.3)
|
||||
letter_opener (~> 1.1.2)
|
||||
mail_room (~> 0.6.0)
|
||||
mail_room (~> 0.6.1)
|
||||
minitest (~> 5.7.0)
|
||||
mousetrap-rails (~> 1.4.6)
|
||||
mysql2 (~> 0.3.16)
|
||||
nested_form (~> 0.3.2)
|
||||
newrelic-grape
|
||||
newrelic_rpm (~> 3.9.4.245)
|
||||
nprogress-rails (~> 0.1.2.3)
|
||||
nprogress-rails (~> 0.1.6.7)
|
||||
oauth2 (~> 1.0.0)
|
||||
octokit (~> 3.7.0)
|
||||
omniauth (~> 1.2.2)
|
||||
omniauth-bitbucket (~> 0.0.2)
|
||||
omniauth-facebook (~> 3.0.0)
|
||||
omniauth-github (~> 1.1.1)
|
||||
omniauth-gitlab (~> 1.0.0)
|
||||
omniauth-google-oauth2 (~> 0.2.0)
|
||||
@@ -882,14 +877,12 @@ DEPENDENCIES
|
||||
quiet_assets (~> 1.0.2)
|
||||
rack-attack (~> 4.3.0)
|
||||
rack-cors (~> 0.4.0)
|
||||
rack-mini-profiler (~> 0.9.0)
|
||||
rack-oauth2 (~> 1.0.5)
|
||||
rails (= 4.1.12)
|
||||
raphael-rails (~> 2.1.2)
|
||||
rb-fsevent
|
||||
rb-inotify
|
||||
rblineprof
|
||||
rdoc (~> 3.6)
|
||||
redcarpet (~> 3.3.2)
|
||||
redcarpet (~> 3.3.3)
|
||||
redis-rails (~> 4.0.0)
|
||||
request_store (~> 1.2.0)
|
||||
rerun (~> 0.10.0)
|
||||
@@ -917,8 +910,8 @@ DEPENDENCIES
|
||||
spring-commands-spinach (~> 1.0.0)
|
||||
spring-commands-teaspoon (~> 0.0.2)
|
||||
sprockets (~> 2.12.3)
|
||||
stamp (~> 0.5.0)
|
||||
state_machine (~> 1.2.0)
|
||||
stamp (~> 0.6.0)
|
||||
state_machines-activerecord (~> 0.3.0)
|
||||
task_list (~> 1.0.2)
|
||||
teaspoon (~> 1.0.0)
|
||||
teaspoon-jasmine (~> 2.2.0)
|
||||
@@ -926,7 +919,7 @@ DEPENDENCIES
|
||||
thin (~> 1.6.1)
|
||||
tinder (~> 1.10.0)
|
||||
turbolinks (~> 2.5.0)
|
||||
uglifier (~> 2.3.2)
|
||||
uglifier (~> 2.7.2)
|
||||
underscore-rails (~> 1.4.4)
|
||||
unf (~> 0.1.4)
|
||||
unicorn (~> 4.8.2)
|
||||
|
||||
@@ -115,3 +115,10 @@ We can only accept a merge request if all the tests are green. I've just
|
||||
restarted the build. When the tests are still not passing after this restart and
|
||||
you're sure that is does not have anything to do with your code changes, please
|
||||
rebase with master to see if that solves the issue.
|
||||
|
||||
### Closing down the issue tracker on GitHub
|
||||
|
||||
We are currently in the process of closing down the issue tracker on GitHub, to
|
||||
prevent duplication with the GitLab.com issue tracker.
|
||||
Since this is an older issue I'll be closing this for now. If you think this is
|
||||
still an issue I encourage you to open it on the \[GitLab.com issue tracker\](https://gitlab.com/gitlab-org/gitlab-ce/issues).
|
||||
|
||||
Executable → Regular
BIN
Binary file not shown.
Binary file not shown.
Executable → Regular
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Executable → Regular
Binary file not shown.
Executable → Regular
Executable → Regular
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
@@ -10,17 +10,17 @@
|
||||
<g id="Fill-1-+-Group-24">
|
||||
<g id="Group-24">
|
||||
<g id="Group">
|
||||
<path d="M105.0614,193.655 L105.0614,193.655 L143.7014,74.734 L66.4214,74.734 L105.0614,193.655 L105.0614,193.655 Z" id="Fill-4" fill="#E24329"></path>
|
||||
<path d="M105.0614,193.6548 L66.4214,74.7338 L12.2684,74.7338 L105.0614,193.6548 L105.0614,193.6548 Z" id="Fill-8" fill="#FC6D26"></path>
|
||||
<path d="M12.2685,74.7341 L12.2685,74.7341 L0.5265,110.8731 C-0.5445,114.1691 0.6285,117.7801 3.4325,119.8171 L105.0615,193.6551 L12.2685,74.7341 L12.2685,74.7341 Z" id="Fill-12" fill="#FCA326"></path>
|
||||
<path d="M12.2685,74.7342 L66.4215,74.7342 L43.1485,3.1092 C41.9515,-0.5768 36.7375,-0.5758 35.5405,3.1092 L12.2685,74.7342 L12.2685,74.7342 Z" id="Fill-16" fill="#E24329"></path>
|
||||
<path d="M105.0614,193.6548 L143.7014,74.7338 L197.8544,74.7338 L105.0614,193.6548 L105.0614,193.6548 Z" id="Fill-18" fill="#FC6D26"></path>
|
||||
<path d="M197.8544,74.7341 L197.8544,74.7341 L209.5964,110.8731 C210.6674,114.1691 209.4944,117.7801 206.6904,119.8171 L105.0614,193.6551 L197.8544,74.7341 L197.8544,74.7341 Z" id="Fill-20" fill="#FCA326"></path>
|
||||
<path d="M197.8544,74.7342 L143.7014,74.7342 L166.9744,3.1092 C168.1714,-0.5768 173.3854,-0.5758 174.5824,3.1092 L197.8544,74.7342 L197.8544,74.7342 Z" id="Fill-22" fill="#E24329"></path>
|
||||
<path d="M105.0614,193.655 L105.0614,193.655 L143.7014,74.734 L66.4214,74.734 L105.0614,193.655 L105.0614,193.655 Z" id="Fill-4" fill="#E24329" class="tanuki-shape"></path>
|
||||
<path d="M105.0614,193.6548 L66.4214,74.7338 L12.2684,74.7338 L105.0614,193.6548 L105.0614,193.6548 Z" id="Fill-8" fill="#FC6D26" class="tanuki-shape"></path>
|
||||
<path d="M12.2685,74.7341 L12.2685,74.7341 L0.5265,110.8731 C-0.5445,114.1691 0.6285,117.7801 3.4325,119.8171 L105.0615,193.6551 L12.2685,74.7341 L12.2685,74.7341 Z" id="Fill-12" fill="#FCA326" class="tanuki-shape"></path>
|
||||
<path d="M12.2685,74.7342 L66.4215,74.7342 L43.1485,3.1092 C41.9515,-0.5768 36.7375,-0.5758 35.5405,3.1092 L12.2685,74.7342 L12.2685,74.7342 Z" id="Fill-16" fill="#E24329" class="tanuki-shape"></path>
|
||||
<path d="M105.0614,193.6548 L143.7014,74.7338 L197.8544,74.7338 L105.0614,193.6548 L105.0614,193.6548 Z" id="Fill-18" fill="#FC6D26" class="tanuki-shape"></path>
|
||||
<path d="M197.8544,74.7341 L197.8544,74.7341 L209.5964,110.8731 C210.6674,114.1691 209.4944,117.7801 206.6904,119.8171 L105.0614,193.6551 L197.8544,74.7341 L197.8544,74.7341 Z" id="Fill-20" fill="#FCA326" class="tanuki-shape"></path>
|
||||
<path d="M197.8544,74.7342 L143.7014,74.7342 L166.9744,3.1092 C168.1714,-0.5768 173.3854,-0.5758 174.5824,3.1092 L197.8544,74.7342 L197.8544,74.7342 Z" id="Fill-22" fill="#E24329" class="tanuki-shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
@@ -11,10 +11,10 @@ class @EditBlob
|
||||
if ace_mode
|
||||
editor.getSession().setMode "ace/mode/" + ace_mode
|
||||
|
||||
$(".js-commit-button").click ->
|
||||
$("#file-content").val editor.getValue()
|
||||
$(".file-editor form").submit()
|
||||
return false
|
||||
# Before a form submission, move the content from the Ace editor into the
|
||||
# submitted textarea
|
||||
$('form').submit ->
|
||||
$("#file-content").val(editor.getValue())
|
||||
|
||||
editModePanes = $(".js-edit-mode-pane")
|
||||
editModeLinks = $(".js-edit-mode a")
|
||||
|
||||
@@ -11,10 +11,10 @@ class @NewBlob
|
||||
if ace_mode
|
||||
editor.getSession().setMode "ace/mode/" + ace_mode
|
||||
|
||||
$(".js-commit-button").click ->
|
||||
$("#file-content").val editor.getValue()
|
||||
$(".file-editor form").submit()
|
||||
return false
|
||||
# Before a form submission, move the content from the Ace editor into the
|
||||
# submitted textarea
|
||||
$('form').submit ->
|
||||
$("#file-content").val(editor.getValue())
|
||||
|
||||
editor: ->
|
||||
return @editor
|
||||
|
||||
@@ -25,7 +25,7 @@ class @Calendar
|
||||
30
|
||||
]
|
||||
legendCellPadding: 3
|
||||
cellSize: $('.user-calendar').width() / 80
|
||||
cellSize: $('.user-calendar').width() / 73
|
||||
onClick: (date, count) ->
|
||||
formated_date = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate()
|
||||
$.ajax
|
||||
|
||||
@@ -22,7 +22,7 @@ class CiBuild
|
||||
# Only valid for runnig build when output changes during time
|
||||
#
|
||||
CiBuild.interval = setInterval =>
|
||||
if window.location.href is build_url
|
||||
if window.location.href.split("#").first() is build_url
|
||||
$.ajax
|
||||
url: build_url
|
||||
dataType: "json"
|
||||
@@ -31,7 +31,7 @@ class CiBuild
|
||||
$('#build-trace code').html build.trace_html
|
||||
$('#build-trace code').append '<i class="fa fa-refresh fa-spin"/>'
|
||||
@checkAutoscroll()
|
||||
else
|
||||
else if build.status != build_status
|
||||
Turbolinks.visit build_url
|
||||
, 4000
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#= require clipboard
|
||||
|
||||
$ ->
|
||||
clipboard = new Clipboard '.js-clipboard-trigger',
|
||||
text: (trigger) ->
|
||||
$target = $(trigger.nextElementSibling || trigger.previousElementSibling)
|
||||
$target.data('clipboard-text') || $target.text().trim()
|
||||
|
||||
clipboard.on 'success', (e) ->
|
||||
$(e.trigger).
|
||||
tooltip(trigger: 'manual', placement: 'auto bottom', title: 'Copied!').
|
||||
tooltip('show')
|
||||
|
||||
# Clear the selection and blur the trigger so it loses its border
|
||||
e.clearSelection()
|
||||
$(e.trigger).blur()
|
||||
|
||||
# Manually hide the tooltip after 1 second
|
||||
setTimeout(->
|
||||
$(e.trigger).tooltip('hide')
|
||||
, 1000)
|
||||
@@ -39,6 +39,12 @@ class Dispatcher
|
||||
shortcut_handler = new ShortcutsNavigation()
|
||||
new DropzoneInput($('.merge-request-form'))
|
||||
new IssuableForm($('.merge-request-form'))
|
||||
when 'projects:tags:new'
|
||||
new ZenMode()
|
||||
new DropzoneInput($('.tag-form'))
|
||||
when 'projects:releases:edit'
|
||||
new ZenMode()
|
||||
new DropzoneInput($('.release-form'))
|
||||
when 'projects:merge_requests:show'
|
||||
new Diff()
|
||||
shortcut_handler = new ShortcutsIssuable()
|
||||
|
||||
@@ -68,8 +68,8 @@ class @MergeRequestTabs
|
||||
|
||||
scrollToElement: (container) ->
|
||||
if window.location.hash
|
||||
top = $(container + " " + window.location.hash).offset().top
|
||||
$('body').scrollTo(top)
|
||||
$el = $("#{container} #{window.location.hash}")
|
||||
$('body').scrollTo($el.offset().top) if $el.length
|
||||
|
||||
# Activate a tab based on the current action
|
||||
activateTab: (action) ->
|
||||
@@ -127,7 +127,7 @@ class @MergeRequestTabs
|
||||
document.getElementById('commits').innerHTML = data.html
|
||||
$('.js-timeago').timeago()
|
||||
@commitsLoaded = true
|
||||
@scrollToElement(".commits")
|
||||
@scrollToElement("#commits")
|
||||
|
||||
loadDiff: (source) ->
|
||||
return if @diffsLoaded
|
||||
@@ -137,7 +137,7 @@ class @MergeRequestTabs
|
||||
success: (data) =>
|
||||
document.getElementById('diffs').innerHTML = data.html
|
||||
@diffsLoaded = true
|
||||
@scrollToElement(".diffs")
|
||||
@scrollToElement("#diffs")
|
||||
|
||||
# Show or hide the loading spinner
|
||||
#
|
||||
|
||||
@@ -7,6 +7,7 @@ class @ShortcutsNavigation extends Shortcuts
|
||||
Mousetrap.bind('g e', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-project-activity'))
|
||||
Mousetrap.bind('g f', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-tree'))
|
||||
Mousetrap.bind('g c', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-commits'))
|
||||
Mousetrap.bind('g b', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-builds'))
|
||||
Mousetrap.bind('g n', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-network'))
|
||||
Mousetrap.bind('g g', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-graphs'))
|
||||
Mousetrap.bind('g i', -> ShortcutsNavigation.findAndFollowLink('.shortcuts-issues'))
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.content-block,
|
||||
.gray-content-block {
|
||||
margin: -$gl-padding;
|
||||
background-color: $background-color;
|
||||
@@ -27,6 +28,14 @@
|
||||
border-bottom: 1px solid $border-color;
|
||||
color: $gl-gray;
|
||||
|
||||
&.oneline-block {
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
&.white {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
&.top-block {
|
||||
border-top: none;
|
||||
}
|
||||
@@ -60,3 +69,48 @@
|
||||
line-height: 42px;
|
||||
}
|
||||
}
|
||||
|
||||
.cover-block {
|
||||
text-align: center;
|
||||
background: #f7f8fa;
|
||||
margin: -$gl-padding;
|
||||
margin-bottom: 0;
|
||||
padding: 44px $gl-padding;
|
||||
border-bottom: 1px solid $border-color;
|
||||
position: relative;
|
||||
|
||||
.avatar-holder {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.avatar, .identicon {
|
||||
margin: 0 auto;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.identicon {
|
||||
@include border-radius(50%);
|
||||
}
|
||||
}
|
||||
|
||||
.cover-title {
|
||||
color: $gl-header-color;
|
||||
margin: 0;
|
||||
font-size: 23px;
|
||||
font-weight: normal;
|
||||
margin: 16px 0 5px 0;
|
||||
color: #4c4e54;
|
||||
font-size: 23px;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.cover-desc {
|
||||
padding: 0 $gl-padding 3px;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
|
||||
.cover-controls {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,10 +162,25 @@
|
||||
border-color: #e7e9ed;
|
||||
width: 140px;
|
||||
|
||||
.badge {
|
||||
font-weight: normal;
|
||||
background-color: #eee;
|
||||
color: #78a;
|
||||
}
|
||||
|
||||
&.active {
|
||||
border-color: $gl-info;
|
||||
background: $gl-info;
|
||||
color: #fff;
|
||||
|
||||
.badge {
|
||||
color: $gl-info;
|
||||
background-color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-clipboard {
|
||||
border: none;
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
.bs-callout {
|
||||
margin: 20px 0;
|
||||
padding: 20px;
|
||||
border-left: 3px solid #eee;
|
||||
color: #666;
|
||||
background: #f9f9f9;
|
||||
border-left: 3px solid $border-color;
|
||||
color: $text-color;
|
||||
background: $background-color;
|
||||
}
|
||||
.bs-callout h4 {
|
||||
margin-top: 0;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
.append-bottom-10 { margin-bottom:10px }
|
||||
.append-bottom-15 { margin-bottom:15px }
|
||||
.append-bottom-20 { margin-bottom:20px }
|
||||
.append-bottom-default { margin-bottom: $gl-padding; }
|
||||
.inline { display: inline-block }
|
||||
.center { text-align: center }
|
||||
|
||||
@@ -387,6 +388,36 @@ table {
|
||||
}
|
||||
}
|
||||
|
||||
.center-middle-menu {
|
||||
@include nav-menu;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
margin: -$gl-padding;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
height: 58px;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
li {
|
||||
&:after {
|
||||
content: "|";
|
||||
color: $border-gray-light;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&:after {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
|
||||
> a {
|
||||
display: inline-block;
|
||||
text-transform: uppercase;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropzone .dz-preview .dz-progress {
|
||||
border-color: $border-color !important;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
border-bottom: 1px solid #E7E9EE;
|
||||
margin-bottom: 1em;
|
||||
|
||||
&.readme-holder {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
@extend .table;
|
||||
}
|
||||
@@ -94,7 +98,6 @@
|
||||
border-right: none;
|
||||
}
|
||||
background: #fff;
|
||||
padding: 10px $gl-padding;
|
||||
}
|
||||
.lines {
|
||||
pre {
|
||||
|
||||
@@ -5,7 +5,6 @@ html {
|
||||
|
||||
body {
|
||||
padding-top: $header-height;
|
||||
text-rendering: geometricPrecision;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ ul.content-list {
|
||||
|
||||
> li {
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
border-color: $table-border-color;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
color: $gl-gray;
|
||||
@@ -117,7 +117,7 @@ ul.content-list {
|
||||
}
|
||||
|
||||
.controls {
|
||||
padding-top: 4px;
|
||||
padding-top: 1px;
|
||||
float: right;
|
||||
|
||||
.btn {
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
}
|
||||
|
||||
.markdown-area {
|
||||
@include border-radius(0);
|
||||
background: #FFF;
|
||||
border: 1px solid #ddd;
|
||||
min-height: 140px;
|
||||
|
||||
@@ -72,9 +72,10 @@
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
@include clearfix;
|
||||
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0px;
|
||||
|
||||
@@ -137,6 +138,7 @@
|
||||
|
||||
&:hover, &:active, &:focus {
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,14 +149,8 @@
|
||||
|
||||
.badge {
|
||||
font-weight: normal;
|
||||
background-color: #fff;
|
||||
background-color: #eee;
|
||||
color: #78a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fa-align {
|
||||
top: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
}
|
||||
|
||||
.select2-results .select2-result-label {
|
||||
padding: 16px;
|
||||
padding: 9px;
|
||||
}
|
||||
|
||||
.select2-drop{
|
||||
@@ -143,4 +143,4 @@
|
||||
|
||||
.ajax-users-dropdown {
|
||||
min-width: 250px !important;
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,7 @@
|
||||
text-decoration: none;
|
||||
padding-left: 22px;
|
||||
font-weight: normal;
|
||||
outline: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
@@ -176,6 +177,7 @@
|
||||
text-align: center;
|
||||
line-height: 40px;
|
||||
transition-duration: .3s;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.collapse-nav a:hover {
|
||||
@@ -238,10 +240,14 @@
|
||||
width: 100%;
|
||||
padding: 10px 22px;
|
||||
overflow: hidden;
|
||||
outline: none;
|
||||
|
||||
img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
#tanuki-logo, img {
|
||||
float: left;
|
||||
}
|
||||
|
||||
@@ -265,3 +271,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.tanuki-shape {
|
||||
transition: all 0.8s;
|
||||
|
||||
&:hover {
|
||||
fill: rgb(255, 255, 255);
|
||||
transition: all 0.1s;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
.table-holder {
|
||||
margin: -$gl-padding;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
&.table {
|
||||
.dropdown-menu a {
|
||||
@@ -18,15 +24,17 @@ table {
|
||||
|
||||
tr {
|
||||
td, th {
|
||||
padding: 8px 10px;
|
||||
padding: 10px $gl-padding;
|
||||
line-height: 20px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: normal;
|
||||
font-size: 15px;
|
||||
border-bottom: 1px solid $border-color !important;
|
||||
}
|
||||
|
||||
td {
|
||||
border-color: $table-border-color !important;
|
||||
border-bottom: 1px solid;
|
||||
|
||||
@@ -6,13 +6,17 @@
|
||||
|
||||
.timeline-entry {
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
border-color: $table-border-color;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
color: $gl-gray;
|
||||
border-bottom: 1px solid #ECEEF1;
|
||||
border-right: 1px solid #ECEEF1;
|
||||
|
||||
&:target {
|
||||
background: $hover;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
@mixin md-typography {
|
||||
color: $md-text-color;
|
||||
word-wrap: break-word;
|
||||
|
||||
a {
|
||||
color: $md-link-color;
|
||||
@@ -17,7 +18,6 @@
|
||||
font-family: $monospace_font;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
padding: 1px 2px;
|
||||
}
|
||||
|
||||
kbd {
|
||||
@@ -73,6 +73,8 @@
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #7f8fa4;
|
||||
font-size: inherit;
|
||||
padding: 8px 21px;
|
||||
margin: 12px 0 12px;
|
||||
border-left: 3px solid #e7e9ed;
|
||||
@@ -80,7 +82,7 @@
|
||||
|
||||
blockquote p {
|
||||
color: #7f8fa4 !important;
|
||||
font-size: 15px;
|
||||
font-size: inherit;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
@@ -101,9 +103,9 @@
|
||||
|
||||
pre {
|
||||
margin: 12px 0 12px 0 !important;
|
||||
background-color: #f8fafc !important;
|
||||
background-color: #f8fafc;
|
||||
font-size: 13px !important;
|
||||
color: #5b6169 !important;
|
||||
color: #5b6169;
|
||||
line-height: 1.6em !important;
|
||||
@include border-radius(2px);
|
||||
}
|
||||
@@ -112,9 +114,9 @@
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
|
||||
ul {
|
||||
color: #5c5d5e;
|
||||
ul, ol {
|
||||
padding: 0;
|
||||
margin: 6px 0 6px 18px !important;
|
||||
}
|
||||
|
||||
li {
|
||||
@@ -136,6 +138,33 @@
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Link to current header. */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
position: relative;
|
||||
|
||||
a.anchor {
|
||||
// Setting `display: none` would prevent the anchor being scrolled to, so
|
||||
// instead we set the height to 0 and it gets updated on hover.
|
||||
height: 0;
|
||||
}
|
||||
|
||||
&:hover > a.anchor {
|
||||
$size: 16px;
|
||||
position: absolute;
|
||||
right: 100%;
|
||||
top: 50%;
|
||||
margin-top: -$size/2;
|
||||
margin-right: 0px;
|
||||
padding-right: 20px;
|
||||
display: inline-block;
|
||||
width: $size;
|
||||
height: $size;
|
||||
background-image: image-url("icon-link.png");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +173,6 @@
|
||||
*
|
||||
*/
|
||||
body {
|
||||
text-rendering:optimizeLegibility;
|
||||
-webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px;
|
||||
}
|
||||
|
||||
@@ -202,53 +230,11 @@ a > code {
|
||||
}
|
||||
|
||||
/**
|
||||
* Wiki typography
|
||||
* Apply Markdown typography
|
||||
*
|
||||
*/
|
||||
.wiki {
|
||||
@include md-typography;
|
||||
|
||||
word-wrap: break-word;
|
||||
padding: 7px;
|
||||
|
||||
/* Link to current header. */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
position: relative;
|
||||
|
||||
a.anchor {
|
||||
// Setting `display: none` would prevent the anchor being scrolled to, so
|
||||
// instead we set the height to 0 and it gets updated on hover.
|
||||
height: 0;
|
||||
}
|
||||
|
||||
&:hover > a.anchor {
|
||||
$size: 16px;
|
||||
position: absolute;
|
||||
right: 100%;
|
||||
top: 50%;
|
||||
margin-top: -$size/2;
|
||||
margin-right: 0px;
|
||||
padding-right: 20px;
|
||||
display: inline-block;
|
||||
width: $size;
|
||||
height: $size;
|
||||
background-image: image-url("icon-link.png");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
ul,ol {
|
||||
padding: 0;
|
||||
margin: 6px 0 6px 18px !important;
|
||||
}
|
||||
ol {
|
||||
color: #5c5d5e;
|
||||
}
|
||||
}
|
||||
|
||||
.md-area {
|
||||
@include md-typography;
|
||||
}
|
||||
|
||||
.md {
|
||||
@@ -261,6 +247,7 @@ a > code {
|
||||
*/
|
||||
textarea.js-gfm-input {
|
||||
font-family: $monospace_font;
|
||||
color: $gl-text-color;
|
||||
}
|
||||
|
||||
.md-preview {
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/* https://github.com/MozMorris/tomorrow-pygments */
|
||||
pre.code.highlight.dark,
|
||||
.code.dark {
|
||||
|
||||
background-color: #1d1f21;
|
||||
color: #c5c8c6;
|
||||
background-color: #1d1f21 !important;
|
||||
color: #c5c8c6 !important;
|
||||
|
||||
pre.code,
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background-color: #1d1f21 !important;
|
||||
@@ -23,8 +22,8 @@ pre.code.highlight.dark,
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #ffe792;
|
||||
color: #000000;
|
||||
background-color: #ffe792 !important;
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
.hll { background-color: #373b41 }
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/* https://github.com/richleland/pygments-css/blob/master/monokai.css */
|
||||
pre.code.monokai,
|
||||
.code.monokai {
|
||||
|
||||
background: #272822;
|
||||
color: #f8f8f2;
|
||||
background-color: #272822 !important;
|
||||
color: #f8f8f2 !important;
|
||||
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background:#272822 !important;
|
||||
color:#f8f8f2 !important;
|
||||
background-color :#272822 !important;
|
||||
color: #f8f8f2 !important;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
@@ -23,8 +22,8 @@ pre.code.monokai,
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #ffe792;
|
||||
color: #000000;
|
||||
background-color: #ffe792 !important;
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
.hll { background-color: #49483e }
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/* https://gist.github.com/qguv/7936275 */
|
||||
pre.code.highlight.solarized-dark,
|
||||
.code.solarized-dark {
|
||||
|
||||
background-color: #002b36;
|
||||
color: #93a1a1;
|
||||
background-color: #002b36 !important;
|
||||
color: #93a1a1 !important;
|
||||
|
||||
pre.code,
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background-color: #002b36 !important;
|
||||
@@ -23,7 +22,7 @@ pre.code.highlight.solarized-dark,
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #094554;
|
||||
background-color: #094554 !important;
|
||||
}
|
||||
|
||||
/* Solarized Dark
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/* https://gist.github.com/qguv/7936275 */
|
||||
pre.code.highlight.solarized-light,
|
||||
.code.solarized-light {
|
||||
|
||||
background-color: #fdf6e3;
|
||||
color: #586e75;
|
||||
background-color: #fdf6e3 !important;
|
||||
color: #586e75 !important;
|
||||
|
||||
pre.code,
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background-color: #fdf6e3 !important;
|
||||
@@ -23,7 +22,7 @@ pre.code.highlight.solarized-light,
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #eee8d5;
|
||||
background-color: #eee8d5 !important;
|
||||
}
|
||||
|
||||
/* Solarized Light
|
||||
|
||||
@@ -1,24 +1,20 @@
|
||||
/* https://github.com/aahan/pygments-github-style */
|
||||
pre.code.highlight.white,
|
||||
.code.white {
|
||||
background-color: #f8fafc;
|
||||
font-size: 13px;
|
||||
color: #5b6169;
|
||||
line-height: 1.6em;
|
||||
|
||||
background-color: #f8fafc !important;
|
||||
color: #5b6169 !important;
|
||||
|
||||
pre.highlight,
|
||||
.line-numbers,
|
||||
.line-numbers a {
|
||||
background-color: $background-color !important;
|
||||
color: $gl-gray !important;
|
||||
}
|
||||
|
||||
pre.highlight {
|
||||
background-color: #fff !important;
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
border-left: 1px solid $border-color;
|
||||
background-color: #fff !important;
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
// highlight line via anchor
|
||||
@@ -28,7 +24,7 @@ pre.code.highlight.white,
|
||||
|
||||
// Search result highlight
|
||||
span.highlight_word {
|
||||
background: #fafe3d;
|
||||
background-color: #fafe3d !important;
|
||||
}
|
||||
|
||||
.hll { background-color: #f8f8f8 }
|
||||
|
||||
@@ -6,11 +6,6 @@
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.wide-table-holder {
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
}
|
||||
|
||||
.builds,
|
||||
.projects-table {
|
||||
.light {
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
}
|
||||
|
||||
li.commit {
|
||||
list-style: none;
|
||||
|
||||
.commit-row-title {
|
||||
font-size: $list-font-size;
|
||||
line-height: 20px;
|
||||
@@ -113,3 +115,10 @@ li.commit {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.branch-commit {
|
||||
color: $gl-gray;
|
||||
.commit-id, .commit-row-message {
|
||||
color: $gl-gray;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -367,7 +367,6 @@
|
||||
|
||||
.inline-parallel-buttons {
|
||||
float: right;
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
// Mobile
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
.editor-file-name {
|
||||
.new-file-name {
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
width: 450px;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
.event-item {
|
||||
font-size: $gl-font-size;
|
||||
padding: $gl-padding;
|
||||
padding: $gl-padding $gl-padding $gl-padding ($gl-padding + $gl-avatar-size + 15px);
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
border-bottom: 1px solid #f1f2f4;
|
||||
border-bottom: 1px solid $table-border-color;
|
||||
color: #7f8fa4;
|
||||
|
||||
&.event-inline {
|
||||
@@ -16,10 +16,7 @@
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.event-title {
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
.event-title,
|
||||
.event-item-timestamp {
|
||||
line-height: 44px;
|
||||
}
|
||||
@@ -30,7 +27,7 @@
|
||||
}
|
||||
|
||||
.avatar {
|
||||
margin-right: 15px;
|
||||
margin-left: -($gl-avatar-size + 15px);
|
||||
}
|
||||
|
||||
.event-title {
|
||||
@@ -43,8 +40,7 @@
|
||||
}
|
||||
|
||||
.event-body {
|
||||
margin-left: 63px;
|
||||
margin-right: 80px;
|
||||
margin-right: 174px;
|
||||
|
||||
.event-note {
|
||||
margin-top: 5px;
|
||||
@@ -155,6 +151,8 @@
|
||||
|
||||
@media (max-width: $screen-xs-max) {
|
||||
.event-item {
|
||||
padding-left: $gl-padding;
|
||||
|
||||
.event-title {
|
||||
white-space: normal;
|
||||
overflow: visible;
|
||||
|
||||
@@ -68,3 +68,7 @@ body.modal-open {
|
||||
.modal .modal-dialog {
|
||||
width: 860px;
|
||||
}
|
||||
|
||||
.documentation {
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
@@ -80,3 +80,24 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.issuable-filter-count {
|
||||
span {
|
||||
display: block;
|
||||
margin-bottom: -16px;
|
||||
padding: 13px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.cross-project-reference {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
|
||||
.slead {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
span, button {
|
||||
background-color: $background-color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,6 +132,11 @@ form.edit-issue {
|
||||
}
|
||||
}
|
||||
|
||||
.issue-closed-by-widget {
|
||||
padding: 16px 0;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.issue-form .select2-container {
|
||||
width: 250px !important;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,20 @@
|
||||
.accept-merge-holder {
|
||||
.accept-action {
|
||||
display: inline-block;
|
||||
|
||||
.accept_merge_request {
|
||||
&.ci-pending,
|
||||
&.ci-running {
|
||||
@include btn-orange;
|
||||
}
|
||||
|
||||
&.ci-skipped,
|
||||
&.ci-failed,
|
||||
&.ci-canceled,
|
||||
&.ci-error {
|
||||
@include btn-red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.accept-control {
|
||||
@@ -205,6 +219,15 @@
|
||||
|
||||
#modal_merge_info .modal-dialog {
|
||||
width: 600px;
|
||||
|
||||
.btn-clipboard {
|
||||
@extend .pull-right;
|
||||
|
||||
margin-right: 18px;
|
||||
margin-top: 5px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.mr-source-target {
|
||||
|
||||
@@ -56,6 +56,10 @@
|
||||
.note_text {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.comment-hints {
|
||||
margin-top: -12px;
|
||||
}
|
||||
}
|
||||
|
||||
/* loading indicator */
|
||||
@@ -168,7 +172,7 @@
|
||||
color: #999;
|
||||
background: #FFF;
|
||||
padding: 7px;
|
||||
margin-top: -11px;
|
||||
margin-top: -7px;
|
||||
border: 1px solid $border-color;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ ul.notes {
|
||||
.discussion-header,
|
||||
.note-header {
|
||||
@extend .cgray;
|
||||
padding-bottom: 15px;
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
@@ -75,6 +74,10 @@ ul.notes {
|
||||
}
|
||||
}
|
||||
|
||||
.discussion-body {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.discussion {
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
|
||||
@@ -47,3 +47,31 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.calendar-hint {
|
||||
margin-top: -12px;
|
||||
float: right;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.profile-link-holder {
|
||||
display: inline;
|
||||
|
||||
&:after {
|
||||
content: "\00B7";
|
||||
padding: 0px 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&:after {
|
||||
content: "";
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: $blue-dark;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,17 @@
|
||||
}
|
||||
|
||||
.project-home-dropdown {
|
||||
margin: 11px 3px 0;
|
||||
margin: 13px 0px 0;
|
||||
}
|
||||
|
||||
.notifications-btn {
|
||||
.fa-bell {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.fa-angle-down {
|
||||
margin-left: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.project-home-desc {
|
||||
@@ -85,6 +95,7 @@
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.input-group {
|
||||
display: inline-table;
|
||||
position: relative;
|
||||
@@ -233,23 +244,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
.fa-fw {
|
||||
i {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.fa-bell {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.fa-angle-down {
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
.project-home-panel .project-home-dropdown {
|
||||
margin: 13px 0px 0;
|
||||
}
|
||||
|
||||
.project-visibility-level-holder {
|
||||
.radio {
|
||||
margin-bottom: 10px;
|
||||
@@ -457,7 +456,7 @@ pre.light-well {
|
||||
|
||||
.project-row {
|
||||
padding: $gl-padding;
|
||||
border-color: #f1f2f4;
|
||||
border-color: $table-border-color;
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
|
||||
@@ -511,3 +510,46 @@ pre.light-well {
|
||||
margin-top: -1px;
|
||||
}
|
||||
}
|
||||
|
||||
.project-last-commit {
|
||||
margin: 0 7px;
|
||||
|
||||
.ci-status {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.commit-row-message {
|
||||
color: $gl-gray;
|
||||
}
|
||||
|
||||
.commit_short_id {
|
||||
margin-right: 5px;
|
||||
color: $gl-link-color;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.commit-author-link {
|
||||
margin-left: 7px;
|
||||
text-decoration: none;
|
||||
.avatar {
|
||||
float: none;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.commit-author-name {
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.project-show-readme .readme-holder {
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
padding: ($gl-padding + 7px);
|
||||
border-top: 0;
|
||||
|
||||
.edit-project-readme {
|
||||
z-index: 100;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
@@ -1,36 +1,34 @@
|
||||
.ci-body {
|
||||
.runner-state {
|
||||
padding: 6px 12px;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
.runner-state {
|
||||
padding: 6px 12px;
|
||||
margin-right: 10px;
|
||||
color: #FFF;
|
||||
|
||||
&.runner-state-shared {
|
||||
background: #32b186;
|
||||
}
|
||||
&.runner-state-specific {
|
||||
background: #3498db;
|
||||
}
|
||||
&.runner-state-shared {
|
||||
background: #32b186;
|
||||
}
|
||||
&.runner-state-specific {
|
||||
background: #3498db;
|
||||
}
|
||||
}
|
||||
|
||||
.runner-status-online {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.runner-status-online {
|
||||
color: green;
|
||||
}
|
||||
.runner-status-offline {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.runner-status-offline {
|
||||
color: gray;
|
||||
}
|
||||
.runner-status-paused {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.runner-status-paused {
|
||||
color: red;
|
||||
.runner {
|
||||
.btn {
|
||||
padding: 1px 6px;
|
||||
}
|
||||
|
||||
.runner {
|
||||
.btn {
|
||||
padding: 1px 6px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-weight: normal;
|
||||
}
|
||||
h4 {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
table .sherlock-code {
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
.sherlock-code {
|
||||
pre {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
pre code {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
.sherlock-line-samples-table {
|
||||
margin-bottom: 0px !important;
|
||||
|
||||
thead tr th,
|
||||
tbody tr td {
|
||||
font-size: 13px !important;
|
||||
text-align: right;
|
||||
padding: 0px 10px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.sherlock-file-sample pre {
|
||||
padding-top: 28px !important;
|
||||
}
|
||||
|
||||
.sherlock-line-samples-table .slow {
|
||||
color: $red-light;
|
||||
font-weight: bold;
|
||||
}
|
||||
@@ -1,8 +1,3 @@
|
||||
.my-snippets li:first-child {
|
||||
h4 { margin-top: 0; }
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.snippet-form-holder .file-holder .file-title {
|
||||
padding: 2px;
|
||||
}
|
||||
@@ -30,3 +25,58 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.snippet-holder {
|
||||
.snippet-details {
|
||||
.page-title {
|
||||
margin-top: -15px;
|
||||
padding: 10px 0;
|
||||
margin-bottom: 0;
|
||||
color: #5c5d5e;
|
||||
font-size: 16px;
|
||||
|
||||
.author {
|
||||
color: #5c5d5e;
|
||||
}
|
||||
|
||||
.snippet-id {
|
||||
color: #5c5d5e;
|
||||
}
|
||||
}
|
||||
|
||||
.snippet-title {
|
||||
margin: 0;
|
||||
font-size: 23px;
|
||||
color: #313236;
|
||||
}
|
||||
|
||||
@media (max-width: $screen-md-max) {
|
||||
.new-snippet-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $screen-sm-max) {
|
||||
.creator,
|
||||
.page-title .btn-close {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.file-holder {
|
||||
border-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.snippet-box {
|
||||
@include border-radius(2px);
|
||||
|
||||
display: inline-block;
|
||||
padding: 10px $gl-padding;
|
||||
font-weight: normal;
|
||||
margin-right: 10px;
|
||||
font-size: $gl-font-size;
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
@@ -1,25 +1,11 @@
|
||||
.tree-holder {
|
||||
.tree-table-holder {
|
||||
margin-left: -$gl-padding;
|
||||
margin-right: -$gl-padding;
|
||||
}
|
||||
|
||||
.tree_progress {
|
||||
display: none;
|
||||
margin: 20px;
|
||||
&.loading {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.tree-table {
|
||||
margin-bottom: 0;
|
||||
|
||||
tr {
|
||||
> td, > th {
|
||||
padding: 10px $gl-padding;
|
||||
line-height: 32px;
|
||||
border-color: $table-border-color !important;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
@@ -9,6 +9,10 @@ class AbuseReportsController < ApplicationController
|
||||
@abuse_report.reporter = current_user
|
||||
|
||||
if @abuse_report.save
|
||||
if current_application_settings.admin_notification_email.present?
|
||||
AbuseReportMailer.delay.notify(@abuse_report.id)
|
||||
end
|
||||
|
||||
message = "Thank you for your report. A GitLab administrator will look into it shortly."
|
||||
redirect_to root_path, notice: message
|
||||
else
|
||||
|
||||
@@ -55,7 +55,9 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
|
||||
:default_snippet_visibility,
|
||||
:restricted_signup_domains_raw,
|
||||
:version_check_enabled,
|
||||
:admin_notification_email,
|
||||
:user_oauth_applications,
|
||||
:shared_runners_enabled,
|
||||
restricted_visibility_levels: [],
|
||||
import_sources: []
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ class Admin::BroadcastMessagesController < Admin::ApplicationController
|
||||
BroadcastMessage.find(params[:id]).destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to :back }
|
||||
format.html { redirect_back_or_default(default: { action: 'index' }) }
|
||||
format.js { render nothing: true }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -35,7 +35,7 @@ class Admin::HooksController < Admin::ApplicationController
|
||||
}
|
||||
@hook.execute(data, 'system_hooks')
|
||||
|
||||
redirect_to :back
|
||||
redirect_back_or_default
|
||||
end
|
||||
|
||||
def hook_params
|
||||
|
||||
@@ -39,7 +39,13 @@ class Admin::ServicesController < Admin::ApplicationController
|
||||
end
|
||||
|
||||
def application_services_params
|
||||
params.permit(:id,
|
||||
application_services_params = params.permit(:id,
|
||||
service: Projects::ServicesController::ALLOWED_PARAMS)
|
||||
if application_services_params[:service].is_a?(Hash)
|
||||
Projects::ServicesController::FILTER_BLANK_PARAMS.each do |param|
|
||||
application_services_params[:service].delete(param) if application_services_params[:service][param].blank?
|
||||
end
|
||||
end
|
||||
application_services_params
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,33 +33,33 @@ class Admin::UsersController < Admin::ApplicationController
|
||||
|
||||
def block
|
||||
if user.block
|
||||
redirect_to :back, notice: "Successfully blocked"
|
||||
redirect_back_or_admin_user(notice: "Successfully blocked")
|
||||
else
|
||||
redirect_to :back, alert: "Error occurred. User was not blocked"
|
||||
redirect_back_or_admin_user(alert: "Error occurred. User was not blocked")
|
||||
end
|
||||
end
|
||||
|
||||
def unblock
|
||||
if user.activate
|
||||
redirect_to :back, notice: "Successfully unblocked"
|
||||
redirect_back_or_admin_user(notice: "Successfully unblocked")
|
||||
else
|
||||
redirect_to :back, alert: "Error occurred. User was not unblocked"
|
||||
redirect_back_or_admin_user(alert: "Error occurred. User was not unblocked")
|
||||
end
|
||||
end
|
||||
|
||||
def unlock
|
||||
if user.unlock_access!
|
||||
redirect_to :back, alert: "Successfully unlocked"
|
||||
redirect_back_or_admin_user(alert: "Successfully unlocked")
|
||||
else
|
||||
redirect_to :back, alert: "Error occurred. User was not unlocked"
|
||||
redirect_back_or_admin_user(alert: "Error occurred. User was not unlocked")
|
||||
end
|
||||
end
|
||||
|
||||
def confirm
|
||||
if user.confirm
|
||||
redirect_to :back, notice: "Successfully confirmed"
|
||||
redirect_back_or_admin_user(notice: "Successfully confirmed")
|
||||
else
|
||||
redirect_to :back, alert: "Error occurred. User was not confirmed"
|
||||
redirect_back_or_admin_user(alert: "Error occurred. User was not confirmed")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -138,7 +138,7 @@ class Admin::UsersController < Admin::ApplicationController
|
||||
user.update_secondary_emails!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to :back, notice: "Successfully removed email." }
|
||||
format.html { redirect_back_or_admin_user(notice: "Successfully removed email.") }
|
||||
format.js { render nothing: true }
|
||||
end
|
||||
end
|
||||
@@ -157,4 +157,12 @@ class Admin::UsersController < Admin::ApplicationController
|
||||
:projects_limit, :can_create_group, :admin, :key_id
|
||||
)
|
||||
end
|
||||
|
||||
def redirect_back_or_admin_user(options = {})
|
||||
redirect_back_or_default(default: default_route, options: options)
|
||||
end
|
||||
|
||||
def default_route
|
||||
[:admin, @user]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,6 +33,10 @@ class ApplicationController < ActionController::Base
|
||||
render_404
|
||||
end
|
||||
|
||||
def redirect_back_or_default(default: root_path, options: {})
|
||||
redirect_to request.referer.present? ? :back : default, options
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
# From https://github.com/plataformatec/devise/wiki/How-To:-Simple-Token-Authentication-Example
|
||||
@@ -55,13 +59,8 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def authenticate_user!(*args)
|
||||
# If user is not signed-in and tries to access root_path - redirect him to landing page
|
||||
# Don't redirect to the default URL to prevent endless redirections
|
||||
if current_application_settings.home_page_url.present? &&
|
||||
current_application_settings.home_page_url.chomp('/') != Gitlab.config.gitlab['url'].chomp('/')
|
||||
if current_user.nil? && root_path == request.path
|
||||
redirect_to current_application_settings.home_page_url and return
|
||||
end
|
||||
if redirect_to_home_page_url?
|
||||
redirect_to current_application_settings.home_page_url and return
|
||||
end
|
||||
|
||||
super(*args)
|
||||
@@ -120,7 +119,6 @@ class ApplicationController < ActionController::Base
|
||||
project_path = "#{namespace}/#{id}"
|
||||
@project = Project.find_with_namespace(project_path)
|
||||
|
||||
|
||||
if @project and can?(current_user, :read_project, @project)
|
||||
if @project.path_with_namespace != project_path
|
||||
redirect_to request.original_url.gsub(project_path, @project.path_with_namespace) and return
|
||||
@@ -150,7 +148,7 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
def git_not_found!
|
||||
render "errors/git_not_found", layout: "errors", status: 404
|
||||
render html: "errors/git_not_found", layout: "errors", status: 404
|
||||
end
|
||||
|
||||
def method_missing(method_sym, *arguments, &block)
|
||||
@@ -343,4 +341,17 @@ class ApplicationController < ActionController::Base
|
||||
def git_import_enabled?
|
||||
current_application_settings.import_sources.include?('git')
|
||||
end
|
||||
|
||||
def redirect_to_home_page_url?
|
||||
# If user is not signed-in and tries to access root_path - redirect him to landing page
|
||||
# Don't redirect to the default URL to prevent endless redirections
|
||||
return false unless current_application_settings.home_page_url.present?
|
||||
|
||||
home_page_url = current_application_settings.home_page_url.chomp('/')
|
||||
root_urls = [Gitlab.config.gitlab['url'].chomp('/'), root_url.chomp('/')]
|
||||
|
||||
return false if root_urls.include?(home_page_url)
|
||||
|
||||
current_user.nil? && root_path == request.path
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ module Ci
|
||||
@runners = Ci::Runner.order('id DESC')
|
||||
@runners = @runners.search(params[:search]) if params[:search].present?
|
||||
@runners = @runners.page(params[:page]).per(30)
|
||||
@active_runners_cnt = Ci::Runner.where("contacted_at > ?", 1.minutes.ago).count
|
||||
@active_runners_cnt = Ci::Runner.online.count
|
||||
end
|
||||
|
||||
def show
|
||||
@@ -17,6 +17,7 @@ module Ci
|
||||
@projects = @projects.where(gitlab_id: @gl_projects.select(:id))
|
||||
end
|
||||
@projects = @projects.where("ci_projects.id NOT IN (?)", @runner.projects.pluck(:id)) if @runner.projects.any?
|
||||
@projects = @projects.joins(:gl_project)
|
||||
@projects = @projects.page(params[:page]).per(30)
|
||||
end
|
||||
|
||||
@@ -66,7 +67,7 @@ module Ci
|
||||
end
|
||||
|
||||
def runner_params
|
||||
params.require(:runner).permit(:token, :description, :tag_list, :contacted_at, :active)
|
||||
params.require(:runner).permit(:token, :description, :tag_list, :active)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,14 +8,6 @@ module Ci
|
||||
|
||||
private
|
||||
|
||||
def authenticate_public_page!
|
||||
unless project.public
|
||||
authenticate_user!
|
||||
|
||||
return access_denied! unless can?(current_user, :read_project, gl_project)
|
||||
end
|
||||
end
|
||||
|
||||
def authenticate_token!
|
||||
unless project.valid_token?(params[:token])
|
||||
return head(403)
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
module Ci
|
||||
class EventsController < Ci::ApplicationController
|
||||
EVENTS_PER_PAGE = 50
|
||||
|
||||
before_action :authenticate_user!
|
||||
before_action :project
|
||||
before_action :authorize_manage_project!
|
||||
|
||||
layout 'ci/project'
|
||||
|
||||
def index
|
||||
@events = project.events.order("created_at DESC").page(params[:page]).per(EVENTS_PER_PAGE)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def project
|
||||
@project ||= Ci::Project.find(params[:project_id])
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,12 +1,17 @@
|
||||
module Ci
|
||||
class ProjectsController < Ci::ApplicationController
|
||||
before_action :project
|
||||
before_action :authenticate_user!, except: [:build, :badge]
|
||||
before_action :authorize_access_project!, except: [:badge]
|
||||
before_action :project, except: [:index]
|
||||
before_action :authenticate_user!, except: [:index, :build, :badge]
|
||||
before_action :authorize_access_project!, except: [:index, :badge]
|
||||
before_action :authorize_manage_project!, only: [:toggle_shared_runners, :dumped_yaml]
|
||||
before_action :no_cache, only: [:badge]
|
||||
protect_from_forgery
|
||||
|
||||
def show
|
||||
# Temporary compatibility with CI badges pointing to CI project page
|
||||
redirect_to namespace_project_path(project.gl_project.namespace, project.gl_project)
|
||||
end
|
||||
|
||||
# Project status badge
|
||||
# Image with build status for sha or ref
|
||||
def badge
|
||||
|
||||
@@ -4,8 +4,6 @@ module Ci
|
||||
before_action :project
|
||||
before_action :authorize_manage_project!
|
||||
|
||||
layout 'ci/project'
|
||||
|
||||
def create
|
||||
@runner = Ci::Runner.find(params[:runner_project][:runner_id])
|
||||
|
||||
|
||||
@@ -4,12 +4,12 @@ class GroupsController < Groups::ApplicationController
|
||||
before_action :group, except: [:new, :create]
|
||||
|
||||
# Authorize
|
||||
before_action :authorize_read_group!, except: [:show, :new, :create]
|
||||
before_action :authorize_read_group!, except: [:show, :new, :create, :autocomplete]
|
||||
before_action :authorize_admin_group!, only: [:edit, :update, :destroy, :projects]
|
||||
before_action :authorize_create_group!, only: [:new, :create]
|
||||
|
||||
# Load group projects
|
||||
before_action :load_projects, except: [:new, :create, :projects, :edit, :update]
|
||||
before_action :load_projects, except: [:new, :create, :projects, :edit, :update, :autocomplete]
|
||||
before_action :event_filter, only: :show
|
||||
|
||||
layout :determine_layout
|
||||
@@ -133,7 +133,7 @@ class GroupsController < Groups::ApplicationController
|
||||
end
|
||||
|
||||
def group_params
|
||||
params.require(:group).permit(:name, :description, :path, :avatar)
|
||||
params.require(:group).permit(:name, :description, :path, :avatar, :public)
|
||||
end
|
||||
|
||||
def load_events
|
||||
|
||||
@@ -11,10 +11,6 @@ class Import::GithubController < Import::BaseController
|
||||
|
||||
def status
|
||||
@repos = client.repos
|
||||
client.orgs.each do |org|
|
||||
@repos += client.org_repos(org.login)
|
||||
end
|
||||
|
||||
@already_added_projects = current_user.created_projects.where(import_type: "github")
|
||||
already_added_projects_names = @already_added_projects.pluck(:import_source)
|
||||
|
||||
|
||||
@@ -10,18 +10,18 @@ class Import::GoogleCodeController < Import::BaseController
|
||||
dump_file = params[:dump_file]
|
||||
|
||||
unless dump_file.respond_to?(:read)
|
||||
return redirect_to :back, alert: "You need to upload a Google Takeout archive."
|
||||
return redirect_back_or_default(options: { alert: "You need to upload a Google Takeout archive." })
|
||||
end
|
||||
|
||||
begin
|
||||
dump = JSON.parse(dump_file.read)
|
||||
rescue
|
||||
return redirect_to :back, alert: "The uploaded file is not a valid Google Takeout archive."
|
||||
return redirect_back_or_default(options: { alert: "The uploaded file is not a valid Google Takeout archive." })
|
||||
end
|
||||
|
||||
client = Gitlab::GoogleCodeImport::Client.new(dump)
|
||||
unless client.valid?
|
||||
return redirect_to :back, alert: "The uploaded file is not a valid Google Takeout archive."
|
||||
return redirect_back_or_default(options: { alert: "The uploaded file is not a valid Google Takeout archive." })
|
||||
end
|
||||
|
||||
session[:google_code_dump] = dump
|
||||
|
||||
@@ -14,7 +14,7 @@ class InvitesController < ApplicationController
|
||||
|
||||
redirect_to path, notice: "You have been granted #{member.human_access} access to #{label}."
|
||||
else
|
||||
redirect_to :back, alert: "The invitation could not be accepted."
|
||||
redirect_back_or_default(options: { alert: "The invitation could not be accepted." })
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ class InvitesController < ApplicationController
|
||||
|
||||
redirect_to path, notice: "You have declined the invitation to join #{label}."
|
||||
else
|
||||
redirect_to :back, alert: "The invitation could not be declined."
|
||||
redirect_back_or_default(options: { alert: "The invitation could not be declined." })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class Profiles::NotificationsController < Profiles::ApplicationController
|
||||
flash[:alert] = "Failed to save new settings"
|
||||
end
|
||||
|
||||
redirect_to :back
|
||||
redirect_back_or_default(default: profile_notifications_path)
|
||||
end
|
||||
|
||||
format.js
|
||||
|
||||
@@ -26,7 +26,7 @@ class ProfilesController < Profiles::ApplicationController
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to :back }
|
||||
format.html { redirect_back_or_default(default: { action: 'show' }) }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ class Projects::BlobController < Projects::ApplicationController
|
||||
if params[:file].present?
|
||||
params[:file_name] = params[:file].original_filename
|
||||
end
|
||||
File.join(@path, File.basename(params[:file_name]))
|
||||
File.join(@path, params[:file_name])
|
||||
else
|
||||
@path
|
||||
end
|
||||
|
||||
@@ -1,14 +1,36 @@
|
||||
class Projects::BuildsController < Projects::ApplicationController
|
||||
before_action :ci_project
|
||||
before_action :build
|
||||
before_action :build, except: [:index, :cancel_all]
|
||||
|
||||
before_action :authorize_admin_project!, except: [:show, :status]
|
||||
before_action :authorize_manage_builds!, except: [:index, :show, :status]
|
||||
|
||||
layout "project"
|
||||
|
||||
def index
|
||||
@scope = params[:scope]
|
||||
@all_builds = project.ci_builds
|
||||
@builds = @all_builds.order('created_at DESC')
|
||||
@builds =
|
||||
case @scope
|
||||
when 'all'
|
||||
@builds
|
||||
when 'finished'
|
||||
@builds.finished
|
||||
else
|
||||
@builds.running_or_pending.reverse_order
|
||||
end
|
||||
@builds = @builds.page(params[:page]).per(30)
|
||||
end
|
||||
|
||||
def cancel_all
|
||||
@project.ci_builds.running_or_pending.each(&:cancel)
|
||||
|
||||
redirect_to namespace_project_builds_path(project.namespace, project)
|
||||
end
|
||||
|
||||
def show
|
||||
@builds = @ci_project.commits.find_by_sha(@build.sha).builds.order('id DESC')
|
||||
@builds = @builds.where("id not in (?)", @build.id).page(params[:page]).per(20)
|
||||
@builds = @builds.where("id not in (?)", @build.id)
|
||||
@commit = @build.commit
|
||||
|
||||
respond_to do |format|
|
||||
@@ -20,17 +42,13 @@ class Projects::BuildsController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def retry
|
||||
if @build.commands.blank?
|
||||
unless @build.retryable?
|
||||
return page_404
|
||||
end
|
||||
|
||||
build = Ci::Build.retry(@build)
|
||||
|
||||
if params[:return_to]
|
||||
redirect_to URI.parse(params[:return_to]).path
|
||||
else
|
||||
redirect_to build_path(build)
|
||||
end
|
||||
redirect_to build_path(build)
|
||||
end
|
||||
|
||||
def status
|
||||
@@ -52,4 +70,10 @@ class Projects::BuildsController < Projects::ApplicationController
|
||||
def build_path(build)
|
||||
namespace_project_build_path(build.gl_project.namespace, build.gl_project, build)
|
||||
end
|
||||
|
||||
def authorize_manage_builds!
|
||||
unless can?(current_user, :manage_builds, project)
|
||||
return page_404
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,23 +14,23 @@ class Projects::CiServicesController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def update
|
||||
if @service.update_attributes(service_params)
|
||||
redirect_to edit_namespace_project_ci_service_path(@project, @project.namespace, @service.to_param)
|
||||
if service.update_attributes(service_params)
|
||||
redirect_to edit_namespace_project_ci_service_path(@project.namespace, @project, service.to_param)
|
||||
else
|
||||
render 'edit'
|
||||
end
|
||||
end
|
||||
|
||||
def test
|
||||
last_build = @project.builds.last
|
||||
last_build = @project.ci_builds.last
|
||||
|
||||
if @service.execute(last_build)
|
||||
if service.execute(last_build)
|
||||
message = { notice: 'We successfully tested the service' }
|
||||
else
|
||||
message = { alert: 'We tried to test the service but error occurred' }
|
||||
end
|
||||
|
||||
redirect_to :back, message
|
||||
redirect_back_or_default(options: message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -24,7 +24,7 @@ class Projects::CiWebHooksController < Projects::ApplicationController
|
||||
def test
|
||||
Ci::TestHookService.new.execute(hook, current_user)
|
||||
|
||||
redirect_to :back
|
||||
redirect_back_or_default(default: { action: 'index' })
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
||||
@@ -4,16 +4,17 @@
|
||||
class Projects::CommitController < Projects::ApplicationController
|
||||
# Authorize
|
||||
before_action :require_non_empty_project
|
||||
before_action :authorize_download_code!
|
||||
before_action :authorize_download_code!, except: [:cancel_builds]
|
||||
before_action :authorize_manage_builds!, only: [:cancel_builds]
|
||||
before_action :commit
|
||||
before_action :authorize_manage_builds!, only: [:cancel_builds, :retry_builds]
|
||||
before_action :define_show_vars, only: [:show, :builds]
|
||||
|
||||
def show
|
||||
return git_not_found! unless @commit
|
||||
|
||||
@line_notes = commit.notes.inline
|
||||
@diffs = @commit.diffs
|
||||
@note = @project.build_commit_note(commit)
|
||||
@notes_count = commit.notes.count
|
||||
@notes = commit.notes.not_inline.fresh
|
||||
@noteable = @commit
|
||||
@comments_allowed = @reply_allowed = true
|
||||
@@ -22,8 +23,6 @@ class Projects::CommitController < Projects::ApplicationController
|
||||
commit_id: @commit.id
|
||||
}
|
||||
|
||||
@ci_commit = project.ci_commit(commit.sha)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.diff { render text: @commit.to_diff }
|
||||
@@ -31,20 +30,25 @@ class Projects::CommitController < Projects::ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def ci
|
||||
@ci_commit = @project.ci_commit(@commit.sha)
|
||||
@builds = @ci_commit.builds if @ci_commit
|
||||
@notes_count = @commit.notes.count
|
||||
def builds
|
||||
@ci_project = @project.gitlab_ci_project
|
||||
end
|
||||
|
||||
def cancel_builds
|
||||
@ci_commit = @project.ci_commit(@commit.sha)
|
||||
@ci_commit.builds.running_or_pending.each(&:cancel)
|
||||
ci_commit.builds.running_or_pending.each(&:cancel)
|
||||
|
||||
redirect_to ci_namespace_project_commit_path(project.namespace, project, commit.sha)
|
||||
redirect_to builds_namespace_project_commit_path(project.namespace, project, commit.sha)
|
||||
end
|
||||
|
||||
def retry_builds
|
||||
ci_commit.builds.latest.failed.each do |build|
|
||||
if build.retryable?
|
||||
Ci::Build.retry(build)
|
||||
end
|
||||
end
|
||||
|
||||
redirect_to builds_namespace_project_commit_path(project.namespace, project, commit.sha)
|
||||
end
|
||||
|
||||
def branches
|
||||
@branches = @project.repository.branch_names_contains(commit.id)
|
||||
@@ -52,7 +56,26 @@ class Projects::CommitController < Projects::ApplicationController
|
||||
render layout: false
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def commit
|
||||
@commit ||= @project.commit(params[:id])
|
||||
end
|
||||
|
||||
def ci_commit
|
||||
@ci_commit ||= project.ci_commit(commit.sha)
|
||||
end
|
||||
|
||||
def define_show_vars
|
||||
@diffs = commit.diffs
|
||||
@notes_count = commit.notes.count
|
||||
|
||||
@builds = ci_commit.builds if ci_commit
|
||||
end
|
||||
|
||||
def authorize_manage_builds!
|
||||
unless can?(current_user, :manage_builds, project)
|
||||
return page_404
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,7 +12,7 @@ class Projects::CommitsController < Projects::ApplicationController
|
||||
@limit, @offset = (params[:limit] || 40), (params[:offset] || 0)
|
||||
|
||||
@commits = @repo.commits(@ref, @path, @limit, @offset)
|
||||
@note_counts = Note.where(commit_id: @commits.map(&:id)).
|
||||
@note_counts = project.notes.where(commit_id: @commits.map(&:id)).
|
||||
group(:commit_id).count
|
||||
|
||||
respond_to do |format|
|
||||
|
||||
@@ -17,9 +17,10 @@ class Projects::CompareController < Projects::ApplicationController
|
||||
execute(@project, head_ref, @project, base_ref)
|
||||
|
||||
if compare_result
|
||||
@commits = compare_result.commits
|
||||
@commits = Commit.decorate(compare_result.commits, @project)
|
||||
@diffs = compare_result.diffs
|
||||
@commit = @commits.last
|
||||
@first_commit = @commits.first
|
||||
@line_notes = []
|
||||
end
|
||||
end
|
||||
|
||||
@@ -46,7 +46,7 @@ class Projects::DeployKeysController < Projects::ApplicationController
|
||||
def disable
|
||||
@project.deploy_keys_projects.find_by(deploy_key_id: params[:id]).destroy
|
||||
|
||||
redirect_to :back
|
||||
redirect_back_or_default(default: { action: 'index' })
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
@@ -37,7 +37,7 @@ class Projects::HooksController < Projects::ApplicationController
|
||||
flash[:alert] = 'Hook execution failed. Ensure the project has commits.'
|
||||
end
|
||||
|
||||
redirect_to :back
|
||||
redirect_back_or_default(default: { action: 'index' })
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
||||
@@ -14,6 +14,9 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
# Allow issues bulk update
|
||||
before_action :authorize_admin_issues!, only: [:bulk_update]
|
||||
|
||||
# Cross-reference merge requests
|
||||
before_action :closed_by_merge_requests, only: [:show]
|
||||
|
||||
respond_to :html
|
||||
|
||||
def index
|
||||
@@ -55,9 +58,9 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
@participants = @issue.participants(current_user, @project)
|
||||
@participants = @issue.participants(current_user)
|
||||
@note = @project.notes.new(noteable: @issue)
|
||||
@notes = @issue.notes.inc_author.fresh
|
||||
@notes = @issue.notes.with_associations.fresh
|
||||
@noteable = @issue
|
||||
|
||||
respond_with(@issue)
|
||||
@@ -103,7 +106,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
|
||||
def bulk_update
|
||||
result = Issues::BulkUpdateService.new(project, current_user, bulk_update_params).execute
|
||||
redirect_to :back, notice: "#{result[:count]} issues updated"
|
||||
redirect_back_or_default(default: { action: 'index' }, options: { notice: "#{result[:count]} issues updated" })
|
||||
end
|
||||
|
||||
def toggle_subscription
|
||||
@@ -112,6 +115,10 @@ class Projects::IssuesController < Projects::ApplicationController
|
||||
render nothing: true
|
||||
end
|
||||
|
||||
def closed_by_merge_requests
|
||||
@closed_by_merge_requests ||= @issue.closed_by_merge_requests(current_user)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def issue
|
||||
|
||||
@@ -31,6 +31,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
@merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE)
|
||||
@merge_requests = @merge_requests.preload(:target_project)
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
@@ -56,6 +57,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
|
||||
def diffs
|
||||
@commit = @merge_request.last_commit
|
||||
@first_commit = @merge_request.first_commit
|
||||
|
||||
@comments_allowed = @reply_allowed = true
|
||||
@comments_target = {
|
||||
noteable_type: 'MergeRequest',
|
||||
@@ -89,7 +92,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
@target_project = merge_request.target_project
|
||||
@source_project = merge_request.source_project
|
||||
@commits = @merge_request.compare_commits
|
||||
@commit = @merge_request.compare_commits.last
|
||||
@commit = @merge_request.last_commit
|
||||
@first_commit = @merge_request.first_commit
|
||||
@diffs = @merge_request.compare_diffs
|
||||
@note_counts = Note.where(commit_id: @commits.map(&:id)).
|
||||
group(:commit_id).count
|
||||
@@ -246,7 +250,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def define_show_vars
|
||||
@participants = @merge_request.participants(current_user, @project)
|
||||
@participants = @merge_request.participants(current_user)
|
||||
|
||||
# Build a note object for comment form
|
||||
@note = @project.notes.new(noteable: @merge_request)
|
||||
@@ -259,7 +263,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
|
||||
@commits = @merge_request.commits
|
||||
|
||||
@merge_request_diff = @merge_request.merge_request_diff
|
||||
|
||||
|
||||
if @merge_request.locked_long_ago?
|
||||
@merge_request.unlock_mr
|
||||
@merge_request.close
|
||||
|
||||
@@ -75,11 +75,7 @@ class Projects::MilestonesController < Projects::ApplicationController
|
||||
end
|
||||
|
||||
def sort_issues
|
||||
@issues = @milestone.issues.where(id: params['sortable_issue'])
|
||||
@issues.each do |issue|
|
||||
issue.position = params['sortable_issue'].index(issue.id.to_s) + 1
|
||||
issue.save
|
||||
end
|
||||
@milestone.sort_issues(params['sortable_issue'].map(&:to_i))
|
||||
|
||||
render json: { saved: true }
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ class Projects::NotesController < Projects::ApplicationController
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render_note_json(@note) }
|
||||
format.html { redirect_to :back }
|
||||
format.html { redirect_back_or_default }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ class Projects::NotesController < Projects::ApplicationController
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render_note_json(@note) }
|
||||
format.html { redirect_to :back }
|
||||
format.html { redirect_back_or_default }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -72,7 +72,8 @@ class Projects::ProjectMembersController < Projects::ApplicationController
|
||||
|
||||
def leave
|
||||
if @project.namespace == current_user.namespace
|
||||
return redirect_to(:back, alert: 'You can not leave your own project. Transfer or delete the project.')
|
||||
message = 'You can not leave your own project. Transfer or delete the project.'
|
||||
return redirect_back_or_default(default: { action: 'index' }, options: { alert: message })
|
||||
end
|
||||
|
||||
@project.project_members.find_by(user_id: current_user).destroy
|
||||
|
||||
@@ -3,6 +3,7 @@ class Projects::RefsController < Projects::ApplicationController
|
||||
include TreeHelper
|
||||
|
||||
before_action :require_non_empty_project
|
||||
before_action :validate_ref_id
|
||||
before_action :assign_ref_vars
|
||||
before_action :authorize_download_code!
|
||||
|
||||
@@ -71,4 +72,10 @@ class Projects::RefsController < Projects::ApplicationController
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_ref_id
|
||||
return not_found! if params[:id].present? && params[:id] !~ Gitlab::Regex.git_reference_regex
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
class Projects::ReleasesController < Projects::ApplicationController
|
||||
# Authorize
|
||||
before_action :require_non_empty_project
|
||||
before_action :authorize_download_code!
|
||||
before_action :authorize_push_code!
|
||||
before_action :tag
|
||||
before_action :release
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def update
|
||||
release.update_attributes(release_params)
|
||||
|
||||
redirect_to namespace_project_tag_path(@project.namespace, @project, @tag.name)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def tag
|
||||
@tag ||= @repository.find_tag(params[:tag_id])
|
||||
end
|
||||
|
||||
def release
|
||||
@release ||= @project.releases.find_or_initialize_by(tag: @tag.name)
|
||||
end
|
||||
|
||||
def release_params
|
||||
params.require(:release).permit(:description)
|
||||
end
|
||||
end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user