From ab0093fc8a0ce1e1e418e613bf5191ddf9b70e19 Mon Sep 17 00:00:00 2001 From: Praveen Arimbrathodiyil Date: Thu, 29 Sep 2016 09:46:39 +0530 Subject: [PATCH] New upstream version 8.12.1+dfsg1 --- .flayignore | 1 + .gitignore | 1 + .gitlab-ci.yml | 27 +- .gitlab/issue_templates/Bug.md | 44 + .gitlab/issue_templates/Feature Proposal.md | 7 + .../merge_request_templates/Documentation.md | 14 + .haml-lint.yml | 103 + .pkgr.yml | 12 + .rubocop.yml | 7 +- .rubocop_todo.yml | 125 +- CHANGELOG | 1966 +++-------------- CONTRIBUTING.md | 84 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 14 +- Gemfile.lock | 42 +- PROCESS.md | 2 +- README.md | 3 +- VERSION | 2 +- app/assets/images/icon-link.png | Bin 729 -> 0 bytes app/assets/images/icon_anchor.svg | 1 + app/assets/javascripts/LabelManager.js | 5 + app/assets/javascripts/abuse_reports.js.es6 | 38 + app/assets/javascripts/activities.js | 4 +- app/assets/javascripts/api.js | 14 +- app/assets/javascripts/application.js | 69 +- app/assets/javascripts/autosave.js | 6 +- app/assets/javascripts/awards_handler.js | 70 +- app/assets/javascripts/behaviors/autosize.js | 2 - .../javascripts/behaviors/details_behavior.js | 6 + .../javascripts/behaviors/quick_submit.js | 20 +- .../javascripts/behaviors/requires_input.js | 19 +- .../javascripts/behaviors/toggler_behavior.js | 9 +- .../javascripts/blob/blob_file_dropzone.js | 3 + .../javascripts/blob/template_selector.js | 10 + app/assets/javascripts/blob_edit/edit_blob.js | 2 + .../javascripts/boards/boards_bundle.js.es6 | 7 + .../boards/components/board.js.es6 | 15 - .../boards/components/board_list.js.es6 | 18 +- .../javascripts/boards/models/list.js.es6 | 29 +- .../boards/stores/boards_store.js.es6 | 3 +- .../boards/test_utils/simulate_drag.js | 0 .../boards/vue_resource_interceptor.js.es6 | 9 +- app/assets/javascripts/breakpoints.js | 2 + app/assets/javascripts/build.js | 25 +- app/assets/javascripts/build_variables.js.es6 | 6 + app/assets/javascripts/commit/image-file.js | 2 + app/assets/javascripts/commits.js | 1 + app/assets/javascripts/copy_to_clipboard.js | 7 +- app/assets/javascripts/cycle-analytics.js.es6 | 93 + app/assets/javascripts/diff.js | 3 + app/assets/javascripts/dispatcher.js | 13 + app/assets/javascripts/due_date_select.js | 3 + app/assets/javascripts/extensions/jquery.js | 2 + .../javascripts/files_comment_button.js | 15 +- .../javascripts/gfm_auto_complete.js.es6 | 24 + app/assets/javascripts/gl_dropdown.js | 121 +- app/assets/javascripts/gl_form.js | 6 + .../javascripts/graphs/graphs_bundle.js | 8 +- .../graphs/stat_graph_contributors_graph.js | 1 + app/assets/javascripts/groups_select.js | 1 + app/assets/javascripts/importer_status.js | 17 +- .../{issuable.js => issuable.js.es6} | 78 +- app/assets/javascripts/issuable_form.js | 24 +- app/assets/javascripts/issue.js | 12 +- .../javascripts/issues-bulk-assignment.js | 10 +- app/assets/javascripts/labels.js | 3 + app/assets/javascripts/labels_select.js | 11 +- app/assets/javascripts/layout_nav.js | 25 +- app/assets/javascripts/lib/chart.js | 1 - app/assets/javascripts/lib/cropper.js | 1 - app/assets/javascripts/lib/d3.js | 1 - app/assets/javascripts/lib/raphael.js | 5 - .../javascripts/lib/utils/datetime_utility.js | 9 + .../lib/utils/emoji_aliases.js.coffee.erb | 2 - .../lib/utils/emoji_aliases.js.erb | 6 + app/assets/javascripts/lib/utils/notify.js | 5 + .../javascripts/lib/utils/text_utility.js | 10 +- .../javascripts/lib/utils/url_utility.js | 6 + app/assets/javascripts/line_highlighter.js | 69 +- app/assets/javascripts/logo.js | 54 +- .../merge_conflict_resolver.js.es6 | 4 +- app/assets/javascripts/merge_request.js | 15 +- app/assets/javascripts/merge_request_tabs.js | 88 +- .../javascripts/merge_request_widget.js | 8 + app/assets/javascripts/milestone.js | 1 + app/assets/javascripts/milestone_select.js | 1 + .../javascripts/network/branch-graph.js | 13 + .../javascripts/network/network_bundle.js | 7 +- app/assets/javascripts/notes.js | 81 +- app/assets/javascripts/preview_markdown.js | 10 + app/assets/javascripts/profile/gl_crop.js | 12 +- app/assets/javascripts/profile/profile.js | 4 + .../javascripts/profile/profile_bundle.js | 1 - app/assets/javascripts/project.js | 19 +- app/assets/javascripts/project_find_file.js | 9 + app/assets/javascripts/project_new.js | 20 +- app/assets/javascripts/project_show.js | 2 + app/assets/javascripts/projects_list.js | 1 + .../protected_branch_dropdown.js.es6 | 1 + app/assets/javascripts/right_sidebar.js | 2 +- app/assets/javascripts/search_autocomplete.js | 22 + app/assets/javascripts/shortcuts.js | 1 + app/assets/javascripts/shortcuts_find_file.js | 2 + app/assets/javascripts/shortcuts_issuable.js | 6 +- .../javascripts/shortcuts_navigation.js | 3 + app/assets/javascripts/sidebar.js | 41 - app/assets/javascripts/sidebar.js.es6 | 93 + app/assets/javascripts/snippets_list.js.es6 | 11 + app/assets/javascripts/syntax_highlight.js | 11 + app/assets/javascripts/todos.js | 34 +- app/assets/javascripts/tree.js | 3 + app/assets/javascripts/u2f/authenticate.js | 18 + app/assets/javascripts/u2f/register.js | 7 + app/assets/javascripts/user.js | 31 - app/assets/javascripts/user.js.es6 | 34 + app/assets/javascripts/user_tabs.js | 69 + app/assets/javascripts/users/calendar.js | 74 +- app/assets/javascripts/users/users_bundle.js | 1 - app/assets/javascripts/users_select.js | 8 + app/assets/javascripts/zen_mode.js | 37 +- app/assets/stylesheets/framework.scss | 1 + .../stylesheets/framework/animations.scss | 83 +- app/assets/stylesheets/framework/blocks.scss | 4 + app/assets/stylesheets/framework/buttons.scss | 6 + app/assets/stylesheets/framework/common.scss | 6 +- .../stylesheets/framework/dropdowns.scss | 28 + app/assets/stylesheets/framework/files.scss | 27 +- app/assets/stylesheets/framework/filters.scss | 4 + app/assets/stylesheets/framework/forms.scss | 1 - app/assets/stylesheets/framework/gfm.scss | 2 +- app/assets/stylesheets/framework/header.scss | 58 +- .../stylesheets/framework/highlight.scss | 15 +- app/assets/stylesheets/framework/lists.scss | 4 + app/assets/stylesheets/framework/logo.scss | 118 + app/assets/stylesheets/framework/mixins.scss | 66 +- app/assets/stylesheets/framework/mobile.scss | 4 - app/assets/stylesheets/framework/modal.scss | 1 - app/assets/stylesheets/framework/nav.scss | 36 +- app/assets/stylesheets/framework/selects.scss | 5 +- app/assets/stylesheets/framework/sidebar.scss | 18 +- .../framework/tw_bootstrap_variables.scss | 2 +- .../stylesheets/framework/typography.scss | 27 +- .../stylesheets/framework/variables.scss | 146 +- app/assets/stylesheets/pages/admin.scss | 46 +- app/assets/stylesheets/pages/awards.scss | 7 +- app/assets/stylesheets/pages/boards.scss | 158 +- app/assets/stylesheets/pages/builds.scss | 35 +- app/assets/stylesheets/pages/commits.scss | 12 +- .../stylesheets/pages/cycle_analytics.scss | 144 ++ app/assets/stylesheets/pages/diff.scss | 9 +- .../stylesheets/pages/environments.scss | 5 +- app/assets/stylesheets/pages/events.scss | 9 +- app/assets/stylesheets/pages/groups.scss | 13 + app/assets/stylesheets/pages/import.scss | 19 - app/assets/stylesheets/pages/issuable.scss | 17 +- app/assets/stylesheets/pages/issues.scss | 24 +- app/assets/stylesheets/pages/labels.scss | 1 + .../stylesheets/pages/merge_conflicts.scss | 2 +- .../stylesheets/pages/merge_requests.scss | 45 +- app/assets/stylesheets/pages/notes.scss | 16 +- app/assets/stylesheets/pages/pipelines.scss | 194 +- app/assets/stylesheets/pages/projects.scss | 63 +- app/assets/stylesheets/pages/search.scss | 4 +- app/assets/stylesheets/pages/snippets.scss | 46 +- app/assets/stylesheets/pages/status.scss | 9 + app/assets/stylesheets/pages/todos.scss | 49 +- app/assets/stylesheets/pages/tree.scss | 25 +- app/assets/stylesheets/pages/xterm.scss | 3 + app/controllers/admin/groups_controller.rb | 10 +- app/controllers/application_controller.rb | 37 +- app/controllers/ci/lints_controller.rb | 11 +- .../concerns/authenticates_with_two_factor.rb | 1 + app/controllers/concerns/creates_commit.rb | 3 +- app/controllers/concerns/issuable_actions.rb | 35 +- app/controllers/concerns/service_params.rb | 2 +- .../concerns/toggle_award_emoji.rb | 16 +- app/controllers/groups_controller.rb | 12 +- app/controllers/import/base_controller.rb | 23 +- .../import/bitbucket_controller.rb | 23 +- app/controllers/import/github_controller.rb | 16 +- app/controllers/import/gitlab_controller.rb | 15 +- .../import/gitorious_controller.rb | 47 - app/controllers/jwt_controller.rb | 36 +- app/controllers/namespaces_controller.rb | 2 +- .../projects/application_controller.rb | 2 +- .../projects/artifacts_controller.rb | 44 +- .../projects/avatars_controller.rb | 2 +- app/controllers/projects/blob_controller.rb | 10 +- .../projects/boards/issues_controller.rb | 15 +- .../projects/branches_controller.rb | 7 + app/controllers/projects/builds_controller.rb | 12 +- .../projects/cycle_analytics_controller.rb | 67 + .../projects/discussions_controller.rb | 2 +- .../projects/git_http_client_controller.rb | 70 +- .../projects/git_http_controller.rb | 5 +- app/controllers/projects/hooks_controller.rb | 1 + app/controllers/projects/issues_controller.rb | 45 +- app/controllers/projects/labels_controller.rb | 2 +- .../projects/lfs_storage_controller.rb | 11 +- .../projects/merge_requests_controller.rb | 60 +- .../projects/milestones_controller.rb | 2 +- .../projects/pipelines_controller.rb | 9 +- .../projects/services_controller.rb | 5 +- .../projects/snippets_controller.rb | 7 +- app/controllers/projects/tags_controller.rb | 8 +- app/controllers/projects_controller.rb | 27 +- app/controllers/search_controller.rb | 4 +- .../sent_notifications_controller.rb | 9 +- app/controllers/snippets_controller.rb | 3 + app/controllers/users_controller.rb | 2 +- app/finders/issuable_finder.rb | 11 +- app/finders/issues_finder.rb | 4 + app/finders/merge_requests_finder.rb | 10 + app/finders/move_to_project_finder.rb | 6 + app/finders/pipelines_finder.rb | 32 +- app/finders/tags_finder.rb | 29 + app/finders/todos_finder.rb | 2 +- app/helpers/application_helper.rb | 4 +- app/helpers/avatars_helper.rb | 3 +- app/helpers/award_emoji_helper.rb | 9 + app/helpers/ci_status_helper.rb | 11 +- app/helpers/compare_helper.rb | 2 +- app/helpers/git_helper.rb | 4 + app/helpers/gitlab_routing_helper.rb | 32 + app/helpers/groups_helper.rb | 25 + app/helpers/import_helper.rb | 5 + app/helpers/issuables_helper.rb | 13 + app/helpers/issues_helper.rb | 14 +- app/helpers/lfs_helper.rb | 16 +- app/helpers/merge_requests_helper.rb | 12 +- app/helpers/namespaces_helper.rb | 5 +- app/helpers/nav_helper.rb | 19 +- app/helpers/notes_helper.rb | 4 + app/helpers/projects_helper.rb | 39 +- app/helpers/search_helper.rb | 37 +- app/helpers/sentry_helper.rb | 9 + app/helpers/services_helper.rb | 6 +- app/helpers/sidekiq_helper.rb | 19 + app/helpers/snippets_helper.rb | 6 +- app/helpers/tags_helper.rb | 10 + app/helpers/todos_helper.rb | 34 +- app/helpers/workhorse_helper.rb | 4 + app/mailers/base_mailer.rb | 2 +- app/mailers/notify.rb | 6 + app/models/ability.rb | 587 +---- app/models/application_setting.rb | 2 +- app/models/blob.rb | 12 + app/models/ci/build.rb | 86 +- app/models/ci/pipeline.rb | 67 +- app/models/ci/runner.rb | 2 +- app/models/ci/variable.rb | 6 +- app/models/commit.rb | 9 - app/models/commit_range.rb | 7 - app/models/commit_status.rb | 18 +- app/models/concerns/awardable.rb | 20 +- .../{statuseable.rb => has_status.rb} | 11 +- app/models/concerns/issuable.rb | 15 + app/models/concerns/note_on_diff.rb | 4 + .../project_features_compatibility.rb | 37 + app/models/concerns/taskable.rb | 4 +- app/models/cycle_analytics.rb | 97 + app/models/cycle_analytics/summary.rb | 24 + app/models/deployment.rb | 34 + app/models/diff_note.rb | 22 +- app/models/discussion.rb | 39 +- app/models/environment.rb | 16 + app/models/event.rb | 29 +- app/models/group.rb | 7 + app/models/hooks/project_hook.rb | 1 + app/models/hooks/web_hook.rb | 1 + app/models/issue.rb | 4 + app/models/issue/metrics.rb | 21 + app/models/member.rb | 31 +- app/models/merge_request.rb | 162 +- app/models/merge_request/metrics.rb | 11 + app/models/merge_request_diff.rb | 188 +- app/models/merge_requests_closing_issues.rb | 7 + app/models/namespace.rb | 5 + app/models/project.rb | 91 +- app/models/project_feature.rb | 69 + .../project_services/hipchat_service.rb | 2 +- app/models/project_services/slack_service.rb | 72 +- .../slack_service/build_message.rb | 4 +- .../slack_service/pipeline_message.rb | 79 + app/models/repository.rb | 227 +- app/models/service.rb | 5 +- app/models/snippet.rb | 1 + app/models/user.rb | 8 +- app/policies/base_policy.rb | 116 + app/policies/ci/build_policy.rb | 13 + app/policies/ci/runner_policy.rb | 13 + app/policies/commit_status_policy.rb | 5 + app/policies/deployment_policy.rb | 5 + app/policies/environment_policy.rb | 5 + app/policies/external_issue_policy.rb | 5 + app/policies/global_policy.rb | 8 + app/policies/group_member_policy.rb | 19 + app/policies/group_policy.rb | 45 + app/policies/issuable_policy.rb | 14 + app/policies/issue_policy.rb | 28 + app/policies/merge_request_policy.rb | 3 + app/policies/namespace_policy.rb | 10 + app/policies/note_policy.rb | 19 + app/policies/personal_snippet_policy.rb | 16 + app/policies/project_member_policy.rb | 22 + app/policies/project_policy.rb | 235 ++ app/policies/project_snippet_policy.rb | 20 + app/policies/user_policy.rb | 11 + ...ntainer_registry_authentication_service.rb | 32 +- app/services/base_service.rb | 6 +- app/services/boards/lists/create_service.rb | 9 +- app/services/ci/process_pipeline_service.rb | 20 +- app/services/ci/register_build_service.rb | 8 +- app/services/ci/web_hook_service.rb | 35 - app/services/commits/change_service.rb | 20 +- app/services/commits/cherry_pick_service.rb | 14 +- app/services/commits/revert_service.rb | 14 +- app/services/create_deployment_service.rb | 44 +- app/services/files/base_service.rb | 2 + app/services/files/create_dir_service.rb | 2 +- app/services/files/create_service.rb | 2 +- app/services/files/delete_service.rb | 2 +- app/services/files/update_service.rb | 4 +- app/services/git_push_service.rb | 10 +- app/services/issuable/bulk_update_service.rb | 26 + app/services/issuable_base_service.rb | 25 +- app/services/issues/base_service.rb | 7 +- app/services/issues/bulk_update_service.rb | 25 - app/services/merge_requests/build_service.rb | 2 +- app/services/merge_requests/create_service.rb | 1 + .../merge_requests/get_urls_service.rb | 2 +- .../merge_requests/refresh_service.rb | 9 + .../merge_requests/resolve_service.rb | 21 +- app/services/merge_requests/update_service.rb | 8 + app/services/milestones/create_service.rb | 2 +- app/services/notes/slash_commands_service.rb | 21 +- app/services/projects/create_service.rb | 4 +- app/services/projects/destroy_service.rb | 2 + app/services/projects/fork_service.rb | 4 +- app/services/projects/housekeeping_service.rb | 12 +- app/services/system_note_service.rb | 10 +- app/services/todo_service.rb | 23 +- .../abuse_reports/_abuse_report.html.haml | 17 +- app/views/admin/abuse_reports/index.html.haml | 33 +- app/views/admin/appearances/_form.html.haml | 2 +- .../application_settings/_form.html.haml | 54 +- .../admin/background_jobs/_head.html.haml | 46 +- .../admin/background_jobs/show.html.haml | 8 +- app/views/admin/builds/_build.html.haml | 77 - app/views/admin/builds/index.html.haml | 43 +- app/views/admin/dashboard/_head.html.haml | 54 +- app/views/admin/groups/_form.html.haml | 2 + app/views/admin/groups/show.html.haml | 6 + app/views/admin/projects/show.html.haml | 6 + app/views/award_emoji/_awards_block.html.haml | 2 +- app/views/ci/lints/show.html.haml | 3 + app/views/dashboard/todos/_todo.html.haml | 15 +- app/views/dashboard/todos/index.html.haml | 38 +- .../devise/sessions/two_factor.html.haml | 3 +- app/views/discussions/_jump_to_next.html.haml | 2 +- app/views/discussions/_notes.html.haml | 3 +- app/views/events/_event.html.haml | 2 +- app/views/explore/groups/index.html.haml | 2 +- .../groups/_group_lfs_settings.html.haml | 11 + app/views/groups/edit.html.haml | 2 + .../groups/group_members/index.html.haml | 2 +- app/views/groups/group_members/update.js.haml | 2 +- app/views/groups/show.html.haml | 2 +- app/views/help/_shortcuts.html.haml | 553 ++--- app/views/help/ui.html.haml | 2 +- app/views/import/base/create.js.haml | 21 +- app/views/import/base/unauthorized.js.haml | 14 + app/views/import/bitbucket/deploy_key.js.haml | 3 + app/views/import/bitbucket/status.html.haml | 2 +- app/views/import/github/status.html.haml | 12 +- app/views/import/gitlab/status.html.haml | 2 +- app/views/import/gitorious/status.html.haml | 54 - app/views/layouts/_page.html.haml | 2 +- app/views/layouts/nav/_group.html.haml | 2 +- .../layouts/nav/_group_settings.html.haml | 38 +- app/views/layouts/nav/_project.html.haml | 6 +- .../layouts/nav/_project_settings.html.haml | 2 +- app/views/layouts/notify.html.haml | 4 +- app/views/layouts/project.html.haml | 3 - app/views/profiles/keys/index.html.haml | 1 + app/views/profiles/update_username.js.haml | 2 +- .../_merge_request_settings.html.haml | 25 +- app/views/projects/_zen.html.haml | 3 + app/views/projects/blame/show.html.haml | 3 +- app/views/projects/blob/_editor.html.haml | 2 +- .../boards/components/_board.html.haml | 14 +- app/views/projects/branches/_branch.html.haml | 11 +- app/views/projects/builds/_sidebar.html.haml | 80 +- app/views/projects/builds/_table.html.haml | 24 + app/views/projects/builds/index.html.haml | 47 +- .../projects/buttons/_download.html.haml | 46 +- app/views/projects/buttons/_fork.html.haml | 4 +- app/views/projects/buttons/_star.html.haml | 6 +- app/views/projects/ci/builds/_build.html.haml | 40 +- .../ci/builds/_build_pipeline.html.haml | 24 +- .../projects/ci/pipelines/_pipeline.html.haml | 16 +- app/views/projects/commit/_change.html.haml | 4 +- app/views/projects/commit/_ci_stage.html.haml | 4 +- app/views/projects/commit/_pipeline.html.haml | 3 +- .../projects/commit/_pipeline_stage.html.haml | 14 + .../commit/_pipeline_status_group.html.haml | 11 + .../projects/commit/_pipelines_list.haml | 5 +- app/views/projects/commits/_commit.html.haml | 2 +- app/views/projects/commits/_head.html.haml | 5 +- .../projects/cycle_analytics/show.html.haml | 59 + app/views/projects/deployments/_actions.haml | 4 +- app/views/projects/diffs/_file.html.haml | 2 +- app/views/projects/edit.html.haml | 87 +- app/views/projects/forks/index.html.haml | 4 +- .../_generic_commit_status_pipeline.html.haml | 16 +- app/views/projects/graphs/_head.html.haml | 32 +- .../projects/hooks/_project_hook.html.haml | 2 +- app/views/projects/issues/_head.html.haml | 54 +- app/views/projects/issues/_issue.html.haml | 6 +- app/views/projects/issues/_issues.html.haml | 2 +- .../projects/issues/_merge_requests.html.haml | 2 +- .../projects/issues/_new_branch.html.haml | 19 +- .../issues/_related_branches.html.haml | 4 +- app/views/projects/issues/index.html.haml | 2 + app/views/projects/issues/show.html.haml | 2 +- .../merge_requests/_discussion.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 6 +- .../merge_requests/_merge_requests.html.haml | 2 +- .../projects/merge_requests/_show.html.haml | 33 +- .../projects/merge_requests/index.html.haml | 2 + .../merge_requests/show/_diffs.html.haml | 1 + .../show/_how_to_merge.html.haml | 7 +- .../merge_requests/show/_mr_title.html.haml | 6 +- .../merge_requests/show/_versions.html.haml | 74 + .../merge_requests/widget/_heading.html.haml | 25 +- app/views/projects/new.html.haml | 7 +- app/views/projects/notes/_form.html.haml | 6 +- app/views/projects/notes/_note.html.haml | 7 +- app/views/projects/pipelines/_head.html.haml | 42 +- app/views/projects/pipelines/_info.html.haml | 2 + app/views/projects/pipelines/index.html.haml | 5 +- .../projects/project_members/update.js.haml | 2 +- app/views/projects/refs/logs_tree.js.haml | 4 +- .../repositories/_download_archive.html.haml | 37 - app/views/projects/show.html.haml | 2 +- .../projects/snippets/_actions.html.haml | 14 +- app/views/projects/snippets/show.html.haml | 12 +- app/views/projects/tags/_download.html.haml | 14 - app/views/projects/tags/_tag.html.haml | 3 +- app/views/projects/tags/index.html.haml | 17 +- app/views/projects/tags/show.html.haml | 3 +- app/views/projects/tree/_blob_item.html.haml | 6 +- app/views/projects/tree/_readme.html.haml | 2 +- .../projects/tree/_tree_content.html.haml | 9 +- app/views/projects/tree/_tree_item.html.haml | 6 +- app/views/projects/tree/show.html.haml | 3 +- app/views/projects/triggers/index.html.haml | 130 +- app/views/projects/variables/_table.html.haml | 2 +- app/views/projects/wikis/_nav.html.haml | 22 +- app/views/search/_results.html.haml | 16 +- app/views/search/results/_blob.html.haml | 2 +- app/views/search/results/_commit.html.haml | 3 +- app/views/search/results/_wiki_blob.html.haml | 2 +- .../sent_notifications/unsubscribe.html.haml | 19 + app/views/shared/_logo.svg | 16 +- app/views/shared/_nav_scroll.html.haml | 4 + app/views/shared/_ref_switcher.html.haml | 2 +- app/views/shared/_visibility_level.html.haml | 2 +- app/views/shared/builds/_tabs.html.haml | 24 + .../icons/_icon_cycle_analytics_splash.svg | 1 + app/views/shared/icons/_icon_fork.svg | 2 +- app/views/shared/icons/_icon_play.svg | 4 +- .../shared/icons/_icon_status_created.svg | 1 + app/views/shared/issuable/_filter.html.haml | 42 +- app/views/shared/issuable/_form.html.haml | 17 +- .../shared/issuable/_search_form.html.haml | 4 +- app/views/shared/issuable/_sidebar.html.haml | 2 +- app/views/shared/projects/_project.html.haml | 4 +- app/views/shared/snippets/_header.html.haml | 8 +- app/views/shared/snippets/_snippet.html.haml | 21 +- app/views/shared/web_hooks/_form.html.haml | 7 + app/views/snippets/_actions.html.haml | 14 +- app/views/snippets/_snippets.html.haml | 16 +- app/views/snippets/show.html.haml | 21 +- app/views/u2f/_authenticate.html.haml | 2 + app/views/users/calendar.html.haml | 4 +- app/views/users/show.html.haml | 2 +- app/workers/prune_old_events_worker.rb | 17 + changelogs/archive.md | 1810 +++++++++++++++ changelogs/unreleased/.gitkeep | 0 config/initializers/1_settings.rb | 5 +- config/initializers/ar_monkey_patch.rb | 57 + .../initializers/gitlab_workhorse_secret.rb | 8 + config/initializers/metrics.rb | 3 +- config/initializers/mime_types.rb | 8 +- config/initializers/sentry.rb | 1 + config/routes.rb | 35 +- db/fixtures/development/14_builds.rb | 138 -- db/fixtures/development/14_pipelines.rb | 157 ++ db/fixtures/development/17_cycle_analytics.rb | 246 +++ .../20140502125220_migrate_repo_size.rb | 5 +- .../20160707104333_add_lock_to_issuables.rb | 18 + ...25104020_merge_request_diff_remove_uniq.rb | 35 + ...0725104452_merge_request_diff_add_index.rb | 17 + .../20160808085531_add_token_to_build.rb | 10 + ...0160808085602_add_index_for_build_token.rb | 12 + ...160823081327_change_merge_error_to_text.rb | 10 + ...60823213309_add_lfs_enabled_to_projects.rb | 29 + .../20160824103857_drop_unused_ci_tables.rb | 11 + .../20160824124900_add_table_issue_metrics.rb | 37 + ...5052008_add_table_merge_request_metrics.rb | 38 + ...1312_ensure_lock_version_has_no_default.rb | 16 + ...confidential_issues_events_to_web_hooks.rb | 15 + ..._confidential_issues_events_to_services.rb | 15 + ...0830232601_change_lock_version_not_null.rb | 13 + .../20160831214002_create_project_features.rb | 16 + ...20160831214543_migrate_project_features.rb | 44 + ...0_remove_features_enabled_from_projects.rb | 29 + ..._confidential_issues_events_on_webhooks.rb | 15 + ...901213340_add_lfs_enabled_to_namespaces.rb | 12 + ...torious_field_from_application_settings.rb | 39 + ...11_add_environment_type_to_environments.rb | 9 + ...3162434_remove_projects_pushes_since_gc.rb | 19 + ...0913212128_change_artifacts_size_column.rb | 15 + ...21_create_merge_requests_closing_issues.rb | 34 + db/schema.rb | 173 +- doc/README.md | 5 +- doc/administration/container_registry.md | 4 +- doc/administration/issue_closing_pattern.md | 49 + doc/api/README.md | 24 +- doc/api/award_emoji.md | 15 +- doc/api/broadcast_messages.md | 158 ++ doc/api/ci/builds.md | 9 + doc/api/ci/lint.md | 49 + doc/api/commits.md | 14 +- doc/api/groups.md | 18 +- doc/api/issues.md | 51 +- doc/api/members.md | 4 +- doc/api/merge_requests.md | 155 +- doc/api/notes.md | 6 +- doc/api/notification_settings.md | 169 ++ doc/api/project_snippets.md | 3 +- doc/api/projects.md | 126 +- doc/api/repository_files.md | 12 +- doc/api/settings.md | 2 +- doc/api/users.md | 3 +- doc/ci/README.md | 2 + doc/ci/examples/README.md | 14 +- doc/ci/pipelines.md | 2 +- doc/ci/quick_start/README.md | 3 +- doc/ci/ssh_keys/README.md | 3 +- doc/ci/triggers/README.md | 4 + doc/ci/triggers/img/builds_page.png | Bin 33324 -> 76181 bytes doc/ci/triggers/img/trigger_single_build.png | Bin 2387 -> 21152 bytes doc/ci/triggers/img/trigger_variables.png | Bin 4433 -> 9315 bytes doc/ci/triggers/img/triggers_page.png | Bin 12943 -> 12002 bytes doc/ci/variables/README.md | 10 +- doc/ci/yaml/README.md | 155 +- doc/container_registry/README.md | 6 +- doc/customization/issue_closing.md | 41 +- doc/development/README.md | 2 + doc/development/doc_styleguide.md | 55 +- doc/development/instrumentation.md | 15 + .../merge_request_performance_guidelines.md | 171 ++ doc/development/migration_style_guide.md | 22 + doc/development/newlines_styleguide.md | 2 +- doc/gitlab-basics/add-file.md | 4 - doc/gitlab-basics/create-issue.md | 4 +- doc/install/installation.md | 9 +- doc/install/requirements.md | 34 +- doc/integration/bitbucket.md | 235 +- doc/integration/img/bitbucket_oauth_keys.png | Bin 0 -> 12073 bytes .../img/bitbucket_oauth_settings_page.png | Bin 0 -> 82818 bytes doc/integration/omniauth.md | 4 +- doc/intro/README.md | 8 +- ...corporate_contributor_license_agreement.md | 4 +- doc/raketasks/backup_restore.md | 6 + doc/update/8.10-to-8.11.md | 2 +- doc/update/8.11-to-8.12.md | 199 ++ doc/user/account/security.md | 3 + doc/user/account/two_factor_authentication.md | 68 + doc/user/markdown.md | 20 +- doc/user/permissions.md | 41 +- doc/user/project/builds/artifacts.md | 32 + .../img/build_latest_artifacts_browser.png | Bin 0 -> 26617 bytes doc/user/project/cycle_analytics.md | 114 + .../img/cycle_analytics_landing_page.png | Bin 0 -> 58203 bytes .../project/issues/automatic_issue_closing.md | 55 + doc/user/project/koding.md | 2 +- doc/user/project/merge_requests.md | 169 ++ .../authorization_for_merge_requests.md | 56 + .../merge_requests/cherry_pick_changes.md | 52 + .../img/cherry_pick_changes_commit.png | Bin .../img/cherry_pick_changes_commit_modal.png | Bin .../img/cherry_pick_changes_mr.png | Bin .../img/cherry_pick_changes_mr_modal.png | Bin .../merge_requests/img}/commit_compare.png | Bin .../merge_requests/img/merge_request_diff.png | Bin 0 -> 69394 bytes .../img/merge_when_build_succeeds_enable.png} | Bin ...en_build_succeeds_only_if_succeeds_msg.png | Bin 0 -> 11136 bytes ...ld_succeeds_only_if_succeeds_settings.png} | Bin .../img/merge_when_build_succeeds_status.png} | Bin .../img/revert_changes_commit.png | Bin .../img/revert_changes_commit_modal.png | Bin .../merge_requests}/img/revert_changes_mr.png | Bin .../img/revert_changes_mr_modal.png | Bin .../merge_requests/img/versions-compare.png | Bin 0 -> 68722 bytes .../merge_requests/img/versions-dropdown.png | Bin 0 -> 60587 bytes .../project/merge_requests/img/versions.png | Bin 0 -> 171413 bytes .../img/wip_blocked_accept_button.png} | Bin .../merge_requests/img/wip_mark_as_wip.png} | Bin .../merge_requests/img/wip_unmark_as_wip.png} | Bin .../merge_when_build_succeeds.md | 46 + .../project/merge_requests/revert_changes.md | 64 + doc/user/project/merge_requests/versions.md | 32 + .../work_in_progress_merge_requests.md | 17 + .../project/new_ci_build_permissions_model.md | 289 +++ .../img/web_editor_new_branch_dropdown.png | Bin .../img/web_editor_new_branch_page.png | Bin .../img/web_editor_new_directory_dialog.png | Bin .../img/web_editor_new_directory_dropdown.png | Bin .../img/web_editor_new_file_dropdown.png | Bin .../img/web_editor_new_file_editor.png | Bin .../img/web_editor_new_push_widget.png | Bin .../img/web_editor_new_tag_dropdown.png | Bin .../img/web_editor_new_tag_page.png | Bin .../web_editor_start_new_merge_request.png | Bin .../web_editor_template_dropdown_buttons.png | Bin 0 -> 14131 bytes ...eb_editor_template_dropdown_first_file.png | Bin 0 -> 25748 bytes ...b_editor_template_dropdown_mit_license.png | Bin 0 -> 85413 bytes .../img/web_editor_upload_file_dialog.png | Bin .../img/web_editor_upload_file_dropdown.png | Bin doc/user/project/repository/web_editor.md | 175 ++ doc/user/project/settings/import_export.md | 18 +- doc/user/project/slash_commands.md | 2 +- doc/workflow/README.md | 19 +- .../authorization_for_merge_requests.md | 41 +- doc/workflow/cherry_pick_changes.md | 53 +- doc/workflow/gitlab_flow.md | 4 +- .../import_projects_from_github_importer.png | Bin 22711 -> 65288 bytes ..._projects_from_github_new_project_page.png | Bin 13668 -> 24911 bytes ...rojects_from_github_select_auth_method.png | Bin 0 -> 42043 bytes .../importing/import_projects_from_github.md | 129 +- doc/workflow/lfs/lfs_administration.md | 4 +- .../lfs/manage_large_binaries_with_git_lfs.md | 8 + doc/workflow/merge_requests.md | 64 +- .../merge_requests/merge_request_diff.png | Bin 103239 -> 0 bytes .../merge_request_diff_without_whitespace.png | Bin 71896 -> 0 bytes doc/workflow/merge_when_build_succeeds.md | 16 +- doc/workflow/project_features.md | 10 +- doc/workflow/revert_changes.md | 65 +- doc/workflow/web_editor.md | 152 +- doc/workflow/wip_merge_requests.md | 14 +- features/dashboard/todos.feature | 20 - features/project/merge_requests.feature | 4 +- features/steps/admin/settings.rb | 1 + features/steps/dashboard/new_project.rb | 1 - features/steps/dashboard/todos.rb | 24 +- features/steps/project/issues/award_emoji.rb | 2 +- features/steps/project/issues/issues.rb | 2 +- features/steps/project/merge_requests.rb | 12 +- features/steps/project/project.rb | 2 +- features/steps/shared/issuable.rb | 2 +- features/steps/shared/project.rb | 6 +- lib/api/access_requests.rb | 2 +- lib/api/api.rb | 16 +- lib/api/api_guard.rb | 56 +- lib/api/award_emoji.rb | 33 +- lib/api/broadcast_messages.rb | 99 + lib/api/commit_statuses.rb | 56 +- lib/api/entities.rb | 84 +- lib/api/files.rb | 12 +- lib/api/groups.rb | 28 +- lib/api/helpers.rb | 71 +- lib/api/internal.rb | 54 +- lib/api/issues.rb | 46 +- lib/api/lint.rb | 21 + lib/api/members.rb | 8 +- lib/api/merge_request_diffs.rb | 45 + lib/api/notes.rb | 8 +- lib/api/notification_settings.rb | 97 + lib/api/pipelines.rb | 5 +- lib/api/project_hooks.rb | 2 + lib/api/projects.rb | 141 +- lib/api/users.rb | 2 +- lib/backup/repository.rb | 2 +- .../filter/abstract_reference_filter.rb | 10 +- .../filter/commit_range_reference_filter.rb | 2 +- lib/banzai/filter/commit_reference_filter.rb | 4 - lib/banzai/filter/label_reference_filter.rb | 5 + .../filter/milestone_reference_filter.rb | 4 + lib/banzai/filter/reference_filter.rb | 2 +- lib/banzai/filter/sanitization_filter.rb | 64 +- .../filter/wiki_link_filter/rewriter.rb | 1 + lib/banzai/reference_parser/base_parser.rb | 2 +- lib/ci/api/api.rb | 12 +- lib/ci/api/builds.rb | 8 +- lib/ci/api/entities.rb | 9 + lib/ci/api/helpers.rb | 30 +- lib/ci/gitlab_ci_yaml_processor.rb | 29 +- lib/ci/mask_secret.rb | 10 + lib/expand_variables.rb | 17 + lib/extracts_path.rb | 13 +- lib/gitlab/auth.rb | 123 +- lib/gitlab/auth/result.rb | 21 + lib/gitlab/backend/shell.rb | 15 +- lib/gitlab/badge/coverage/report.rb | 4 +- lib/gitlab/bitbucket_import/importer.rb | 4 +- lib/gitlab/checks/change_access.rb | 1 + lib/gitlab/ci/config.rb | 2 +- lib/gitlab/ci/config/node/configurable.rb | 10 +- lib/gitlab/ci/config/node/entry.rb | 14 +- lib/gitlab/ci/config/node/environment.rb | 68 + lib/gitlab/ci/config/node/factory.rb | 8 +- lib/gitlab/ci/config/node/global.rb | 14 +- .../config/node/{hidden_job.rb => hidden.rb} | 3 +- lib/gitlab/ci/config/node/job.rb | 81 +- lib/gitlab/ci/config/node/jobs.rb | 24 +- lib/gitlab/ci/config/node/null.rb | 34 - lib/gitlab/ci/config/node/undefined.rb | 27 +- lib/gitlab/ci/config/node/unspecified.rb | 19 + lib/gitlab/ci/pipeline_duration.rb | 141 ++ lib/gitlab/conflict/parser.rb | 2 +- lib/gitlab/contributions_calendar.rb | 18 +- lib/gitlab/current_settings.rb | 2 +- lib/gitlab/database/date_time.rb | 27 + lib/gitlab/database/median.rb | 112 + lib/gitlab/database/migration_helpers.rb | 10 +- ...merge_request.rb => merge_request_diff.rb} | 16 +- lib/gitlab/git.rb | 10 + lib/gitlab/git/hook.rb | 12 +- lib/gitlab/git_access.rb | 19 +- lib/gitlab/github_import/base_formatter.rb | 7 +- lib/gitlab/github_import/comment_formatter.rb | 8 +- lib/gitlab/github_import/importer.rb | 32 +- lib/gitlab/github_import/issue_formatter.rb | 16 +- lib/gitlab/github_import/label_formatter.rb | 6 + .../github_import/milestone_formatter.rb | 36 +- lib/gitlab/github_import/project_creator.rb | 21 +- .../github_import/pull_request_formatter.rb | 21 +- lib/gitlab/github_import/release_formatter.rb | 23 + lib/gitlab/gitlab_import/importer.rb | 5 +- lib/gitlab/gitorious_import.rb | 5 - lib/gitlab/gitorious_import/client.rb | 29 - .../gitorious_import/project_creator.rb | 27 - lib/gitlab/gitorious_import/repository.rb | 35 - lib/gitlab/gon_helper.rb | 1 - lib/gitlab/import_export.rb | 3 +- lib/gitlab/import_export/import_export.yml | 14 +- lib/gitlab/import_export/relation_factory.rb | 28 +- lib/gitlab/import_export/repo_restorer.rb | 4 - lib/gitlab/import_export/version_checker.rb | 4 +- lib/gitlab/import_sources.rb | 13 +- lib/gitlab/ldap/adapter.rb | 58 +- lib/gitlab/lfs_token.rb | 54 + lib/gitlab/metrics/rack_middleware.rb | 22 +- lib/gitlab/popen.rb | 16 +- lib/gitlab/project_search_results.rb | 5 - lib/gitlab/regex.rb | 4 +- lib/gitlab/search_results.rb | 9 - lib/gitlab/sentry.rb | 27 + lib/gitlab/snippet_search_results.rb | 4 - lib/gitlab/url_builder.rb | 2 + lib/gitlab/workhorse.rb | 52 +- lib/tasks/haml-lint.rake | 5 + .../autocomplete_controller_spec.rb | 50 + .../import/bitbucket_controller_spec.rb | 41 +- .../import/github_controller_spec.rb | 79 +- .../import/gitlab_controller_spec.rb | 41 +- .../import/gitorious_controller_spec.rb | 69 - .../projects/boards/issues_controller_spec.rb | 4 +- .../projects/boards/lists_controller_spec.rb | 43 +- .../projects/boards_controller_spec.rb | 4 +- .../projects/discussions_controller_spec.rb | 2 +- .../projects/issues_controller_spec.rb | 6 + .../merge_requests_controller_spec.rb | 35 + .../projects/services_controller_spec.rb | 16 + .../projects/snippets_controller_spec.rb | 2 +- spec/controllers/projects_controller_spec.rb | 19 + .../sent_notifications_controller_spec.rb | 109 +- spec/controllers/sessions_controller_spec.rb | 23 + spec/controllers/snippets_controller_spec.rb | 33 +- spec/factories/ci/runner_projects.rb | 11 - spec/factories/ci/runners.rb | 23 +- spec/factories/ci/variables.rb | 14 - spec/factories/deployments.rb | 3 +- spec/factories/events.rb | 5 +- spec/factories/group_members.rb | 13 - spec/factories/issues.rb | 4 + spec/factories/notes.rb | 5 + spec/factories/project_hooks.rb | 1 + spec/factories/projects.rb | 21 +- spec/features/boards/boards_spec.rb | 286 ++- .../features/boards/keyboard_shortcut_spec.rb | 24 + spec/features/calendar_spec.rb | 39 + spec/features/environments_spec.rb | 2 +- spec/features/expand_collapse_diffs_spec.rb | 7 + spec/features/issues/award_emoji_spec.rb | 1 - spec/features/issues/filter_issues_spec.rb | 51 +- .../features/issues/new_branch_button_spec.rb | 2 +- spec/features/issues/reset_filters_spec.rb | 81 + .../issues/user_uses_slash_commands_spec.rb | 15 +- spec/features/issues_spec.rb | 13 +- .../merge_requests/diff_notes_spec.rb | 238 ++ spec/features/merge_requests/edit_mr_spec.rb | 11 + .../merge_request_versions_spec.rb | 76 + .../update_merge_requests_spec.rb | 132 ++ .../user_uses_slash_commands_spec.rb | 10 +- spec/features/milestone_spec.rb | 21 +- spec/features/notes_on_merge_requests_spec.rb | 2 +- spec/features/profiles/keys_spec.rb | 18 + .../features/projects/branches/delete_spec.rb | 24 + .../branches/download_buttons_spec.rb | 44 + spec/features/projects/branches_spec.rb | 50 +- spec/features/{ => projects}/builds_spec.rb | 134 +- .../projects/commits/cherry_pick_spec.rb | 31 +- spec/features/projects/edit_spec.rb | 57 + .../projects/features_visibility_spec.rb | 122 + .../projects/files/download_buttons_spec.rb | 45 + ...project_owner_creates_license_file_spec.rb | 4 +- ...eate_license_file_in_empty_project_spec.rb | 2 +- .../projects/gfm_autocomplete_load_spec.rb | 21 + .../import_export/export_file_spec.rb | 80 + .../import_export/import_file_spec.rb | 2 +- .../import_export/test_project_export.tar.gz | Bin 687442 -> 1363770 bytes .../projects/issuable_templates_spec.rb | 33 +- .../projects/main/download_buttons_spec.rb | 44 + .../projects/tags/download_buttons_spec.rb | 45 + spec/features/projects_spec.rb | 8 +- spec/features/search_spec.rb | 32 + spec/features/task_lists_spec.rb | 274 ++- spec/features/todos/todos_filtering_spec.rb | 75 + spec/features/todos/todos_spec.rb | 35 + spec/features/triggers_spec.rb | 2 +- spec/features/u2f_spec.rb | 14 + spec/features/unsubscribe_links_spec.rb | 75 + spec/features/users/snippets_spec.rb | 32 + spec/finders/issues_finder_spec.rb | 20 +- spec/finders/move_to_project_finder_spec.rb | 22 + spec/finders/pipelines_finder_spec.rb | 52 + spec/finders/tags_finder_spec.rb | 79 + spec/fixtures/api/schemas/issues.json | 15 +- spec/helpers/git_helper_spec.rb | 9 + spec/helpers/groups_helper_spec.rb | 63 + spec/helpers/import_helper_spec.rb | 24 + spec/helpers/issues_helper_spec.rb | 26 + spec/helpers/nav_helper_spec.rb | 25 - spec/helpers/projects_helper_spec.rb | 44 + spec/helpers/search_helper_spec.rb | 36 + spec/helpers/sidekiq_helper_spec.rb | 40 + spec/javascripts/abuse_reports_spec.js.es6 | 41 + spec/javascripts/application_spec.js | 10 +- spec/javascripts/awards_handler_spec.js | 85 +- .../behaviors/quick_submit_spec.js | 3 + spec/javascripts/boards/list_spec.js.es6 | 9 - spec/javascripts/boards/mock_data.js.es6 | 15 +- .../datetime_utility_spec.js.coffee | 31 - spec/javascripts/datetime_utility_spec.js.es6 | 64 + .../fixtures/abuse_reports.html.haml | 16 + .../fixtures/awards_handler.html.haml | 2 +- spec/javascripts/fixtures/comments.html.haml | 21 + spec/javascripts/fixtures/projects.json | 2 +- .../fixtures/u2f/authenticate.html.haml | 2 +- .../stat_graph_contributors_graph_spec.js | 8 +- spec/javascripts/issue_spec.js | 2 - spec/javascripts/new_branch_spec.js | 2 - spec/javascripts/notes_spec.js | 57 +- spec/javascripts/project_title_spec.js | 12 - spec/javascripts/right_sidebar_spec.js | 4 - spec/javascripts/search_autocomplete_spec.js | 14 +- spec/javascripts/shortcuts_issuable_spec.js | 1 + spec/javascripts/spec_helper.js | 38 +- spec/javascripts/u2f/authenticate_spec.js | 8 - spec/javascripts/u2f/register_spec.js | 8 - spec/javascripts/zen_mode_spec.js | 4 +- .../commit_range_reference_filter_spec.rb | 6 +- .../filter/commit_reference_filter_spec.rb | 4 +- .../external_issue_reference_filter_spec.rb | 2 +- .../filter/issue_reference_filter_spec.rb | 4 +- .../filter/label_reference_filter_spec.rb | 2 +- .../merge_request_reference_filter_spec.rb | 4 +- .../filter/milestone_reference_filter_spec.rb | 2 +- .../filter/snippet_reference_filter_spec.rb | 4 +- .../filter/user_reference_filter_spec.rb | 2 +- .../lib/banzai/pipeline/wiki_pipeline_spec.rb | 7 + .../reference_parser/base_parser_spec.rb | 8 +- .../reference_parser/user_parser_spec.rb | 10 +- spec/lib/ci/gitlab_ci_yaml_processor_spec.rb | 56 +- spec/lib/ci/mask_secret_spec.rb | 27 + spec/lib/expand_variables_spec.rb | 73 + spec/lib/extracts_path_spec.rb | 10 + spec/lib/gitlab/auth_spec.rb | 97 +- spec/lib/gitlab/backend/shell_spec.rb | 32 +- spec/lib/gitlab/ci/config/node/cache_spec.rb | 2 +- .../gitlab/ci/config/node/environment_spec.rb | 155 ++ .../lib/gitlab/ci/config/node/factory_spec.rb | 3 +- spec/lib/gitlab/ci/config/node/global_spec.rb | 81 +- .../{hidden_job_spec.rb => hidden_spec.rb} | 17 +- spec/lib/gitlab/ci/config/node/job_spec.rb | 96 +- spec/lib/gitlab/ci/config/node/jobs_spec.rb | 10 +- spec/lib/gitlab/ci/config/node/null_spec.rb | 41 - spec/lib/gitlab/ci/config/node/script_spec.rb | 4 +- .../gitlab/ci/config/node/undefined_spec.rb | 33 +- .../gitlab/ci/config/node/unspecified_spec.rb | 32 + spec/lib/gitlab/ci/pipeline_duration_spec.rb | 115 + spec/lib/gitlab/conflict/parser_spec.rb | 4 +- .../gitlab/database/migration_helpers_spec.rb | 103 +- spec/lib/gitlab/git_access_spec.rb | 120 +- spec/lib/gitlab/git_access_wiki_spec.rb | 9 +- spec/lib/gitlab/git_spec.rb | 45 + .../github_import/comment_formatter_spec.rb | 6 + .../lib/gitlab/github_import/importer_spec.rb | 46 +- .../github_import/issue_formatter_spec.rb | 11 +- .../github_import/label_formatter_spec.rb | 28 +- .../github_import/milestone_formatter_spec.rb | 5 +- .../github_import/project_creator_spec.rb | 54 +- .../pull_request_formatter_spec.rb | 13 +- .../github_import/release_formatter_spec.rb | 54 + .../lib/gitlab/gitlab_import/importer_spec.rb | 2 + .../gitorious_import/project_creator_spec.rb | 26 - spec/lib/gitlab/import_export/all_models.yml | 187 ++ .../attribute_configuration_spec.rb | 55 + .../import_export/model_configuration_spec.rb | 57 + spec/lib/gitlab/import_export/project.json | 82 +- .../project_tree_restorer_spec.rb | 49 +- .../import_export/project_tree_saver_spec.rb | 12 + spec/lib/gitlab/import_export/reader_spec.rb | 6 + .../import_export/safe_model_attributes.yml | 330 +++ .../import_export/version_checker_spec.rb | 2 +- spec/lib/gitlab/ldap/adapter_spec.rb | 71 +- spec/lib/gitlab/lfs_token_spec.rb | 51 + .../gitlab/metrics/rack_middleware_spec.rb | 21 +- spec/lib/gitlab/popen_spec.rb | 9 + spec/lib/gitlab/search_results_spec.rb | 18 - .../lib/gitlab/snippet_search_results_spec.rb | 6 - spec/lib/gitlab/workhorse_spec.rb | 91 +- spec/mailers/notify_spec.rb | 10 +- spec/mailers/shared/notify.rb | 8 + spec/models/ability_spec.rb | 77 +- spec/models/blob_spec.rb | 20 + spec/models/build_spec.rb | 114 +- spec/models/ci/build_spec.rb | 62 +- spec/models/ci/pipeline_spec.rb | 148 +- spec/models/commit_range_spec.rb | 10 - spec/models/commit_status_spec.rb | 43 +- spec/models/concerns/awardable_spec.rb | 10 + ...statuseable_spec.rb => has_status_spec.rb} | 6 +- .../project_features_compatibility_spec.rb | 25 + spec/models/cycle_analytics/code_spec.rb | 42 + spec/models/cycle_analytics/issue_spec.rb | 50 + spec/models/cycle_analytics/plan_spec.rb | 52 + .../models/cycle_analytics/production_spec.rb | 54 + spec/models/cycle_analytics/review_spec.rb | 35 + spec/models/cycle_analytics/staging_spec.rb | 64 + spec/models/cycle_analytics/summary_spec.rb | 53 + spec/models/cycle_analytics/test_spec.rb | 94 + spec/models/diff_note_spec.rb | 37 + spec/models/discussion_spec.rb | 96 +- spec/models/environment_spec.rb | 16 + spec/models/event_spec.rb | 43 +- spec/models/group_spec.rb | 46 + spec/models/hooks/project_hook_spec.rb | 18 - spec/models/hooks/service_hook_spec.rb | 18 - spec/models/hooks/system_hook_spec.rb | 20 +- spec/models/hooks/web_hook_spec.rb | 18 - spec/models/issue/metrics_spec.rb | 55 + spec/models/member_spec.rb | 42 +- spec/models/members/group_member_spec.rb | 19 - spec/models/members/project_member_spec.rb | 26 +- spec/models/merge_request/metrics_spec.rb | 18 + spec/models/merge_request_diff_spec.rb | 43 + spec/models/merge_request_spec.rb | 344 ++- spec/models/note_spec.rb | 22 +- spec/models/project_feature_spec.rb | 91 + spec/models/project_security_spec.rb | 112 - .../project_services/asana_service_spec.rb | 20 - .../project_services/assembla_service_spec.rb | 20 - .../project_services/bamboo_service_spec.rb | 20 - .../project_services/bugzilla_service_spec.rb | 20 - .../buildkite_service_spec.rb | 20 - .../project_services/campfire_service_spec.rb | 20 - .../custom_issue_tracker_service_spec.rb | 20 - .../project_services/drone_ci_service_spec.rb | 20 - .../external_wiki_service_spec.rb | 21 - .../project_services/flowdock_service_spec.rb | 20 - .../gemnasium_service_spec.rb | 20 - .../gitlab_issue_tracker_service_spec.rb | 20 - .../project_services/hipchat_service_spec.rb | 20 - .../project_services/irker_service_spec.rb | 20 - .../project_services/jira_service_spec.rb | 20 - .../pivotaltracker_service_spec.rb | 20 - .../project_services/pushover_service_spec.rb | 20 - .../project_services/redmine_service_spec.rb | 20 - .../slack_service/build_message_spec.rb | 34 +- .../slack_service/pipeline_message_spec.rb | 55 + .../project_services/slack_service_spec.rb | 91 +- .../project_services/teamcity_service_spec.rb | 20 - spec/models/project_spec.rb | 289 ++- spec/models/repository_spec.rb | 245 +- spec/models/snippet_spec.rb | 2 + spec/models/user_spec.rb | 3 +- spec/policies/project_policy_spec.rb | 49 + spec/requests/api/api_helpers_spec.rb | 52 + spec/requests/api/award_emoji_spec.rb | 72 +- spec/requests/api/broadcast_messages_spec.rb | 180 ++ spec/requests/api/builds_spec.rb | 20 +- spec/requests/api/commit_statuses_spec.rb | 39 +- spec/requests/api/commits_spec.rb | 6 +- spec/requests/api/files_spec.rb | 75 + spec/requests/api/fork_spec.rb | 66 + spec/requests/api/groups_spec.rb | 11 +- spec/requests/api/internal_spec.rb | 108 + spec/requests/api/issues_spec.rb | 220 +- spec/requests/api/lint_spec.rb | 49 + spec/requests/api/members_spec.rb | 27 +- spec/requests/api/merge_request_diffs_spec.rb | 49 + spec/requests/api/merge_requests_spec.rb | 10 +- spec/requests/api/milestones_spec.rb | 23 +- spec/requests/api/notes_spec.rb | 11 +- .../api/notification_settings_spec.rb | 89 + spec/requests/api/project_hooks_spec.rb | 8 + spec/requests/api/project_snippets_spec.rb | 1 + spec/requests/api/projects_spec.rb | 53 +- spec/requests/api/users_spec.rb | 1 + spec/requests/ci/api/builds_spec.rb | 157 +- spec/requests/git_http_spec.rb | 91 +- spec/requests/jwt_controller_spec.rb | 39 +- spec/requests/lfs_http_spec.rb | 375 +++- .../projects/artifacts_controller_spec.rb | 117 + spec/routing/routing_spec.rb | 4 +- ...er_registry_authentication_service_spec.rb | 66 +- .../boards/lists/create_service_spec.rb | 11 +- .../ci/image_for_build_service_spec.rb | 2 +- .../ci/register_build_service_spec.rb | 19 + .../create_deployment_service_spec.rb | 122 +- spec/services/git_push_service_spec.rb | 52 + .../bulk_update_service_spec.rb | 6 +- spec/services/issues/close_service_spec.rb | 40 +- spec/services/issues/create_service_spec.rb | 18 + spec/services/issues/reopen_service_spec.rb | 46 +- spec/services/issues/update_service_spec.rb | 93 +- .../merge_requests/build_service_spec.rb | 4 +- .../merge_requests/create_service_spec.rb | 29 + .../merge_requests/get_urls_service_spec.rb | 2 +- .../merge_request_diff_cache_service_spec.rb | 2 +- .../merge_requests/refresh_service_spec.rb | 52 + .../merge_requests/resolve_service_spec.rb | 87 + .../merge_requests/update_service_spec.rb | 37 + .../notes/slash_commands_service_spec.rb | 69 + spec/services/notification_service_spec.rb | 2 + spec/services/projects/create_service_spec.rb | 6 +- .../projects/housekeeping_service_spec.rb | 33 +- .../protected_branches/create_service_spec.rb | 23 + spec/services/system_note_service_spec.rb | 10 +- spec/services/todo_service_spec.rb | 37 + spec/spec_helper.rb | 6 +- spec/support/cycle_analytics_helpers.rb | 64 + .../test_generation.rb | 161 ++ spec/support/db_cleaner.rb | 2 +- spec/support/git_helpers.rb | 9 + .../import_export/configuration_helper.rb | 29 + .../import_export/export_file_helper.rb | 133 ++ ...issuable_slash_commands_shared_examples.rb | 68 +- spec/support/ldap_helpers.rb | 47 + spec/support/login_helpers.rb | 1 + spec/support/slash_commands_helpers.rb | 10 + spec/support/taskable_shared_examples.rb | 71 +- spec/support/test_env.rb | 47 +- spec/support/wait_for_vue_resource.rb | 7 + spec/support/workhorse_helpers.rb | 5 + .../projects/builds/show.html.haml_spec.rb | 12 +- .../merge_requests/_heading.html.haml_spec.rb | 2 + .../merge_requests/edit.html.haml_spec.rb | 53 + .../merge_requests/show.html.haml_spec.rb | 44 + .../projects/notes/_form.html.haml_spec.rb | 36 + .../projects/pipelines/show.html.haml_spec.rb | 53 + spec/workers/prune_old_events_worker_spec.rb | 24 + .../single_repository_worker_spec.rb | 8 +- vendor/assets/javascripts/Chart.js | 0 vendor/assets/javascripts/autosize.js | 0 vendor/assets/javascripts/jquery.scrollTo.js | 0 vendor/assets/javascripts/task_list.js | 161 +- vendor/gitignore/Global/NetBeans.gitignore | 1 - vendor/gitignore/Global/Tags.gitignore | 1 + .../Global/{OSX.gitignore => macOS.gitignore} | 3 +- vendor/gitignore/Haskell.gitignore | 1 + vendor/gitignore/Joomla.gitignore | 16 + vendor/gitignore/Node.gitignore | 3 + vendor/gitignore/Objective-C.gitignore | 2 + vendor/gitignore/Python.gitignore | 1 + vendor/gitignore/Rails.gitignore | 6 +- vendor/gitignore/VisualStudio.gitignore | 7 + vendor/gitlab-ci-yml/Docker.gitlab-ci.yml | 7 +- vendor/gitlab-ci-yml/Ruby.gitlab-ci.yml | 9 + vendor/gitlab-ci-yml/Swift.gitlab-ci.yml | 30 + 1096 files changed, 26288 insertions(+), 9715 deletions(-) create mode 100644 .gitlab/issue_templates/Bug.md create mode 100644 .gitlab/issue_templates/Feature Proposal.md create mode 100644 .gitlab/merge_request_templates/Documentation.md create mode 100644 .haml-lint.yml delete mode 100644 app/assets/images/icon-link.png create mode 100644 app/assets/images/icon_anchor.svg create mode 100644 app/assets/javascripts/abuse_reports.js.es6 mode change 100755 => 100644 app/assets/javascripts/boards/test_utils/simulate_drag.js create mode 100644 app/assets/javascripts/build_variables.js.es6 create mode 100644 app/assets/javascripts/cycle-analytics.js.es6 rename app/assets/javascripts/{issuable.js => issuable.js.es6} (54%) delete mode 100644 app/assets/javascripts/lib/utils/emoji_aliases.js.coffee.erb create mode 100644 app/assets/javascripts/lib/utils/emoji_aliases.js.erb delete mode 100644 app/assets/javascripts/sidebar.js create mode 100644 app/assets/javascripts/sidebar.js.es6 create mode 100644 app/assets/javascripts/snippets_list.js.es6 delete mode 100644 app/assets/javascripts/user.js create mode 100644 app/assets/javascripts/user.js.es6 create mode 100644 app/assets/stylesheets/framework/logo.scss create mode 100644 app/assets/stylesheets/pages/cycle_analytics.scss delete mode 100644 app/controllers/import/gitorious_controller.rb create mode 100644 app/controllers/projects/cycle_analytics_controller.rb create mode 100644 app/finders/tags_finder.rb create mode 100644 app/helpers/award_emoji_helper.rb create mode 100644 app/helpers/sentry_helper.rb create mode 100644 app/helpers/sidekiq_helper.rb rename app/models/concerns/{statuseable.rb => has_status.rb} (89%) create mode 100644 app/models/concerns/project_features_compatibility.rb create mode 100644 app/models/cycle_analytics.rb create mode 100644 app/models/cycle_analytics/summary.rb create mode 100644 app/models/issue/metrics.rb create mode 100644 app/models/merge_request/metrics.rb create mode 100644 app/models/merge_requests_closing_issues.rb create mode 100644 app/models/project_feature.rb create mode 100644 app/models/project_services/slack_service/pipeline_message.rb create mode 100644 app/policies/base_policy.rb create mode 100644 app/policies/ci/build_policy.rb create mode 100644 app/policies/ci/runner_policy.rb create mode 100644 app/policies/commit_status_policy.rb create mode 100644 app/policies/deployment_policy.rb create mode 100644 app/policies/environment_policy.rb create mode 100644 app/policies/external_issue_policy.rb create mode 100644 app/policies/global_policy.rb create mode 100644 app/policies/group_member_policy.rb create mode 100644 app/policies/group_policy.rb create mode 100644 app/policies/issuable_policy.rb create mode 100644 app/policies/issue_policy.rb create mode 100644 app/policies/merge_request_policy.rb create mode 100644 app/policies/namespace_policy.rb create mode 100644 app/policies/note_policy.rb create mode 100644 app/policies/personal_snippet_policy.rb create mode 100644 app/policies/project_member_policy.rb create mode 100644 app/policies/project_policy.rb create mode 100644 app/policies/project_snippet_policy.rb create mode 100644 app/policies/user_policy.rb delete mode 100644 app/services/ci/web_hook_service.rb create mode 100644 app/services/issuable/bulk_update_service.rb delete mode 100644 app/services/issues/bulk_update_service.rb delete mode 100644 app/views/admin/builds/_build.html.haml create mode 100644 app/views/groups/_group_lfs_settings.html.haml create mode 100644 app/views/import/base/unauthorized.js.haml create mode 100644 app/views/import/bitbucket/deploy_key.js.haml delete mode 100644 app/views/import/gitorious/status.html.haml create mode 100644 app/views/projects/builds/_table.html.haml create mode 100644 app/views/projects/commit/_pipeline_stage.html.haml create mode 100644 app/views/projects/commit/_pipeline_status_group.html.haml create mode 100644 app/views/projects/cycle_analytics/show.html.haml create mode 100644 app/views/projects/merge_requests/show/_versions.html.haml delete mode 100644 app/views/projects/repositories/_download_archive.html.haml delete mode 100644 app/views/projects/tags/_download.html.haml create mode 100644 app/views/sent_notifications/unsubscribe.html.haml create mode 100644 app/views/shared/_nav_scroll.html.haml create mode 100644 app/views/shared/builds/_tabs.html.haml create mode 100644 app/views/shared/icons/_icon_cycle_analytics_splash.svg create mode 100644 app/views/shared/icons/_icon_status_created.svg create mode 100644 app/workers/prune_old_events_worker.rb create mode 100644 changelogs/archive.md create mode 100644 changelogs/unreleased/.gitkeep create mode 100644 config/initializers/ar_monkey_patch.rb create mode 100644 config/initializers/gitlab_workhorse_secret.rb delete mode 100644 db/fixtures/development/14_builds.rb create mode 100644 db/fixtures/development/14_pipelines.rb create mode 100644 db/fixtures/development/17_cycle_analytics.rb create mode 100644 db/migrate/20160707104333_add_lock_to_issuables.rb create mode 100644 db/migrate/20160725104020_merge_request_diff_remove_uniq.rb create mode 100644 db/migrate/20160725104452_merge_request_diff_add_index.rb create mode 100644 db/migrate/20160808085531_add_token_to_build.rb create mode 100644 db/migrate/20160808085602_add_index_for_build_token.rb create mode 100644 db/migrate/20160823081327_change_merge_error_to_text.rb create mode 100644 db/migrate/20160823213309_add_lfs_enabled_to_projects.rb create mode 100644 db/migrate/20160824103857_drop_unused_ci_tables.rb create mode 100644 db/migrate/20160824124900_add_table_issue_metrics.rb create mode 100644 db/migrate/20160825052008_add_table_merge_request_metrics.rb create mode 100644 db/migrate/20160827011312_ensure_lock_version_has_no_default.rb create mode 100644 db/migrate/20160830203109_add_confidential_issues_events_to_web_hooks.rb create mode 100644 db/migrate/20160830211132_add_confidential_issues_events_to_services.rb create mode 100644 db/migrate/20160830232601_change_lock_version_not_null.rb create mode 100644 db/migrate/20160831214002_create_project_features.rb create mode 100644 db/migrate/20160831214543_migrate_project_features.rb create mode 100644 db/migrate/20160831223750_remove_features_enabled_from_projects.rb create mode 100644 db/migrate/20160901141443_set_confidential_issues_events_on_webhooks.rb create mode 100644 db/migrate/20160901213340_add_lfs_enabled_to_namespaces.rb create mode 100644 db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb create mode 100644 db/migrate/20160907131111_add_environment_type_to_environments.rb create mode 100644 db/migrate/20160913162434_remove_projects_pushes_since_gc.rb create mode 100644 db/migrate/20160913212128_change_artifacts_size_column.rb create mode 100644 db/migrate/20160915042921_create_merge_requests_closing_issues.rb create mode 100644 doc/administration/issue_closing_pattern.md create mode 100644 doc/api/broadcast_messages.md create mode 100644 doc/api/ci/lint.md create mode 100644 doc/api/notification_settings.md create mode 100644 doc/development/merge_request_performance_guidelines.md create mode 100644 doc/integration/img/bitbucket_oauth_keys.png create mode 100644 doc/integration/img/bitbucket_oauth_settings_page.png create mode 100644 doc/update/8.11-to-8.12.md create mode 100644 doc/user/account/security.md create mode 100644 doc/user/account/two_factor_authentication.md create mode 100644 doc/user/project/builds/img/build_latest_artifacts_browser.png create mode 100644 doc/user/project/cycle_analytics.md create mode 100644 doc/user/project/img/cycle_analytics_landing_page.png create mode 100644 doc/user/project/issues/automatic_issue_closing.md create mode 100644 doc/user/project/merge_requests.md create mode 100644 doc/user/project/merge_requests/authorization_for_merge_requests.md create mode 100644 doc/user/project/merge_requests/cherry_pick_changes.md rename doc/{workflow => user/project/merge_requests}/img/cherry_pick_changes_commit.png (100%) rename doc/{workflow => user/project/merge_requests}/img/cherry_pick_changes_commit_modal.png (100%) rename doc/{workflow => user/project/merge_requests}/img/cherry_pick_changes_mr.png (100%) rename doc/{workflow => user/project/merge_requests}/img/cherry_pick_changes_mr_modal.png (100%) rename doc/{workflow/merge_requests => user/project/merge_requests/img}/commit_compare.png (100%) create mode 100644 doc/user/project/merge_requests/img/merge_request_diff.png rename doc/{workflow/merge_when_build_succeeds/enable.png => user/project/merge_requests/img/merge_when_build_succeeds_enable.png} (100%) create mode 100644 doc/user/project/merge_requests/img/merge_when_build_succeeds_only_if_succeeds_msg.png rename doc/{workflow/merge_requests/only_allow_merge_if_build_succeeds.png => user/project/merge_requests/img/merge_when_build_succeeds_only_if_succeeds_settings.png} (100%) rename doc/{workflow/merge_when_build_succeeds/status.png => user/project/merge_requests/img/merge_when_build_succeeds_status.png} (100%) rename doc/{workflow => user/project/merge_requests}/img/revert_changes_commit.png (100%) rename doc/{workflow => user/project/merge_requests}/img/revert_changes_commit_modal.png (100%) rename doc/{workflow => user/project/merge_requests}/img/revert_changes_mr.png (100%) rename doc/{workflow => user/project/merge_requests}/img/revert_changes_mr_modal.png (100%) create mode 100644 doc/user/project/merge_requests/img/versions-compare.png create mode 100644 doc/user/project/merge_requests/img/versions-dropdown.png create mode 100644 doc/user/project/merge_requests/img/versions.png rename doc/{workflow/wip_merge_requests/blocked_accept_button.png => user/project/merge_requests/img/wip_blocked_accept_button.png} (100%) rename doc/{workflow/wip_merge_requests/mark_as_wip.png => user/project/merge_requests/img/wip_mark_as_wip.png} (100%) rename doc/{workflow/wip_merge_requests/unmark_as_wip.png => user/project/merge_requests/img/wip_unmark_as_wip.png} (100%) create mode 100644 doc/user/project/merge_requests/merge_when_build_succeeds.md create mode 100644 doc/user/project/merge_requests/revert_changes.md create mode 100644 doc/user/project/merge_requests/versions.md create mode 100644 doc/user/project/merge_requests/work_in_progress_merge_requests.md create mode 100644 doc/user/project/new_ci_build_permissions_model.md rename doc/{workflow => user/project/repository}/img/web_editor_new_branch_dropdown.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_branch_page.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_directory_dialog.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_directory_dropdown.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_file_dropdown.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_file_editor.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_push_widget.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_tag_dropdown.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_new_tag_page.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_start_new_merge_request.png (100%) create mode 100644 doc/user/project/repository/img/web_editor_template_dropdown_buttons.png create mode 100644 doc/user/project/repository/img/web_editor_template_dropdown_first_file.png create mode 100644 doc/user/project/repository/img/web_editor_template_dropdown_mit_license.png rename doc/{workflow => user/project/repository}/img/web_editor_upload_file_dialog.png (100%) rename doc/{workflow => user/project/repository}/img/web_editor_upload_file_dropdown.png (100%) create mode 100644 doc/user/project/repository/web_editor.md create mode 100644 doc/workflow/importing/img/import_projects_from_github_select_auth_method.png delete mode 100644 doc/workflow/merge_requests/merge_request_diff.png delete mode 100644 doc/workflow/merge_requests/merge_request_diff_without_whitespace.png create mode 100644 lib/api/broadcast_messages.rb create mode 100644 lib/api/lint.rb create mode 100644 lib/api/merge_request_diffs.rb create mode 100644 lib/api/notification_settings.rb create mode 100644 lib/ci/mask_secret.rb create mode 100644 lib/expand_variables.rb create mode 100644 lib/gitlab/auth/result.rb create mode 100644 lib/gitlab/ci/config/node/environment.rb rename lib/gitlab/ci/config/node/{hidden_job.rb => hidden.rb} (82%) delete mode 100644 lib/gitlab/ci/config/node/null.rb create mode 100644 lib/gitlab/ci/config/node/unspecified.rb create mode 100644 lib/gitlab/ci/pipeline_duration.rb create mode 100644 lib/gitlab/database/date_time.rb create mode 100644 lib/gitlab/database/median.rb rename lib/gitlab/diff/file_collection/{merge_request.rb => merge_request_diff.rb} (83%) create mode 100644 lib/gitlab/github_import/release_formatter.rb delete mode 100644 lib/gitlab/gitorious_import.rb delete mode 100644 lib/gitlab/gitorious_import/client.rb delete mode 100644 lib/gitlab/gitorious_import/project_creator.rb delete mode 100644 lib/gitlab/gitorious_import/repository.rb create mode 100644 lib/gitlab/lfs_token.rb create mode 100644 lib/gitlab/sentry.rb create mode 100644 lib/tasks/haml-lint.rake delete mode 100644 spec/controllers/import/gitorious_controller_spec.rb create mode 100644 spec/features/boards/keyboard_shortcut_spec.rb create mode 100644 spec/features/calendar_spec.rb create mode 100644 spec/features/issues/reset_filters_spec.rb create mode 100644 spec/features/merge_requests/diff_notes_spec.rb create mode 100644 spec/features/merge_requests/merge_request_versions_spec.rb create mode 100644 spec/features/merge_requests/update_merge_requests_spec.rb create mode 100644 spec/features/profiles/keys_spec.rb create mode 100644 spec/features/projects/branches/delete_spec.rb create mode 100644 spec/features/projects/branches/download_buttons_spec.rb rename spec/features/{ => projects}/builds_spec.rb (66%) create mode 100644 spec/features/projects/edit_spec.rb create mode 100644 spec/features/projects/features_visibility_spec.rb create mode 100644 spec/features/projects/files/download_buttons_spec.rb create mode 100644 spec/features/projects/gfm_autocomplete_load_spec.rb create mode 100644 spec/features/projects/import_export/export_file_spec.rb create mode 100644 spec/features/projects/main/download_buttons_spec.rb create mode 100644 spec/features/projects/tags/download_buttons_spec.rb create mode 100644 spec/features/todos/todos_filtering_spec.rb create mode 100644 spec/features/unsubscribe_links_spec.rb create mode 100644 spec/features/users/snippets_spec.rb create mode 100644 spec/finders/pipelines_finder_spec.rb create mode 100644 spec/finders/tags_finder_spec.rb create mode 100644 spec/helpers/git_helper_spec.rb delete mode 100644 spec/helpers/nav_helper_spec.rb create mode 100644 spec/helpers/sidekiq_helper_spec.rb create mode 100644 spec/javascripts/abuse_reports_spec.js.es6 delete mode 100644 spec/javascripts/datetime_utility_spec.js.coffee create mode 100644 spec/javascripts/datetime_utility_spec.js.es6 create mode 100644 spec/javascripts/fixtures/abuse_reports.html.haml create mode 100644 spec/javascripts/fixtures/comments.html.haml create mode 100644 spec/lib/ci/mask_secret_spec.rb create mode 100644 spec/lib/expand_variables_spec.rb create mode 100644 spec/lib/gitlab/ci/config/node/environment_spec.rb rename spec/lib/gitlab/ci/config/node/{hidden_job_spec.rb => hidden_spec.rb} (66%) delete mode 100644 spec/lib/gitlab/ci/config/node/null_spec.rb create mode 100644 spec/lib/gitlab/ci/config/node/unspecified_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline_duration_spec.rb create mode 100644 spec/lib/gitlab/git_spec.rb create mode 100644 spec/lib/gitlab/github_import/release_formatter_spec.rb delete mode 100644 spec/lib/gitlab/gitorious_import/project_creator_spec.rb create mode 100644 spec/lib/gitlab/import_export/all_models.yml create mode 100644 spec/lib/gitlab/import_export/attribute_configuration_spec.rb create mode 100644 spec/lib/gitlab/import_export/model_configuration_spec.rb create mode 100644 spec/lib/gitlab/import_export/safe_model_attributes.yml create mode 100644 spec/lib/gitlab/lfs_token_spec.rb rename spec/models/concerns/{statuseable_spec.rb => has_status_spec.rb} (97%) create mode 100644 spec/models/concerns/project_features_compatibility_spec.rb create mode 100644 spec/models/cycle_analytics/code_spec.rb create mode 100644 spec/models/cycle_analytics/issue_spec.rb create mode 100644 spec/models/cycle_analytics/plan_spec.rb create mode 100644 spec/models/cycle_analytics/production_spec.rb create mode 100644 spec/models/cycle_analytics/review_spec.rb create mode 100644 spec/models/cycle_analytics/staging_spec.rb create mode 100644 spec/models/cycle_analytics/summary_spec.rb create mode 100644 spec/models/cycle_analytics/test_spec.rb create mode 100644 spec/models/issue/metrics_spec.rb create mode 100644 spec/models/merge_request/metrics_spec.rb create mode 100644 spec/models/project_feature_spec.rb delete mode 100644 spec/models/project_security_spec.rb create mode 100644 spec/models/project_services/slack_service/pipeline_message_spec.rb create mode 100644 spec/policies/project_policy_spec.rb create mode 100644 spec/requests/api/broadcast_messages_spec.rb create mode 100644 spec/requests/api/lint_spec.rb create mode 100644 spec/requests/api/merge_request_diffs_spec.rb create mode 100644 spec/requests/api/notification_settings_spec.rb create mode 100644 spec/requests/projects/artifacts_controller_spec.rb rename spec/services/{issues => issuable}/bulk_update_service_spec.rb (97%) create mode 100644 spec/services/merge_requests/resolve_service_spec.rb create mode 100644 spec/services/protected_branches/create_service_spec.rb create mode 100644 spec/support/cycle_analytics_helpers.rb create mode 100644 spec/support/cycle_analytics_helpers/test_generation.rb create mode 100644 spec/support/git_helpers.rb create mode 100644 spec/support/import_export/configuration_helper.rb create mode 100644 spec/support/import_export/export_file_helper.rb create mode 100644 spec/support/ldap_helpers.rb create mode 100644 spec/support/slash_commands_helpers.rb create mode 100644 spec/support/wait_for_vue_resource.rb create mode 100644 spec/views/projects/merge_requests/edit.html.haml_spec.rb create mode 100644 spec/views/projects/merge_requests/show.html.haml_spec.rb create mode 100644 spec/views/projects/notes/_form.html.haml_spec.rb create mode 100644 spec/views/projects/pipelines/show.html.haml_spec.rb create mode 100644 spec/workers/prune_old_events_worker_spec.rb mode change 100755 => 100644 vendor/assets/javascripts/Chart.js mode change 100755 => 100644 vendor/assets/javascripts/autosize.js mode change 100755 => 100644 vendor/assets/javascripts/jquery.scrollTo.js rename vendor/gitignore/Global/{OSX.gitignore => macOS.gitignore} (98%) create mode 100644 vendor/gitlab-ci-yml/Swift.gitlab-ci.yml diff --git a/.flayignore b/.flayignore index 9c9875d4f9..f120de527b 100644 --- a/.flayignore +++ b/.flayignore @@ -1 +1,2 @@ *.erb +lib/gitlab/sanitizers/svg/whitelist.rb diff --git a/.gitignore b/.gitignore index 1bf9a47aef..9166512606 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ /vendor/bundle/* /builds/* /shared/* +/.gitlab_workhorse_secret diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be5614520a..b167fc7499 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,7 +82,7 @@ update-knapsack: - export KNAPSACK_REPORT_PATH=knapsack/rspec_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - export KNAPSACK_GENERATE_REPORT=true - cp knapsack/rspec_report.json ${KNAPSACK_REPORT_PATH} - - knapsack rspec + - knapsack rspec "--color --format documentation" artifacts: expire_in: 31d paths: @@ -206,10 +206,15 @@ spinach 9 10 ruby21: *spinach-knapsack-ruby21 - bundle exec $CI_BUILD_NAME rubocop: *exec +rake haml_lint: *exec rake scss_lint: *exec rake brakeman: *exec -rake flog: *exec -rake flay: *exec +rake flog: + <<: *exec + allow_failure: yes +rake flay: + <<: *exec + allow_failure: yes license_finder: *exec rake downtime_check: *exec @@ -248,6 +253,21 @@ bundler:audit: script: - "bundle exec bundle-audit check --update --ignore OSVDB-115941" +migration paths: + stage: test + <<: *use-db + only: + - master@gitlab-org/gitlab-ce + script: + - git checkout HEAD . + - git fetch --tags + - git checkout v8.5.9 + - 'echo test: unix:/var/opt/gitlab/redis/redis.socket > config/resque.yml' + - bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" --retry=3 + - rake db:drop db:create db:schema:load db:seed_fu + - git checkout $CI_BUILD_REF + - rake db:migrate + coverage: stage: post-test services: [] @@ -263,7 +283,6 @@ coverage: - coverage/index.html - coverage/assets/ - # Notify slack in the end notify:slack: diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 0000000000..ac38f0c952 --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,44 @@ +### Summary + +(Summarize the bug encountered concisely) + +### Steps to reproduce + +(How one can reproduce the issue - this is very important) + +### Expected behavior + +(What you should see instead) + +### Actual behavior + +(What actually happens) + +### Relevant logs and/or screenshots + +(Paste any relevant logs - please use code blocks (```) to format console output, +logs, and code as it's very hard to read otherwise.) + +### Output of checks + +#### Results of GitLab application Check + +(For installations with omnibus-gitlab package run and paste the output of: +`sudo gitlab-rake gitlab:check SANITIZE=true`) + +(For installations from source run and paste the output of: +`sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true`) + +(we will only investigate if the tests are passing) + +#### Results of GitLab environment info + +(For installations with omnibus-gitlab package run and paste the output of: +`sudo gitlab-rake gitlab:env:info`) + +(For installations from source run and paste the output of: +`sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production`) + +### Possible fixes + +(If you can, link to the line of code that might be responsible for the problem) diff --git a/.gitlab/issue_templates/Feature Proposal.md b/.gitlab/issue_templates/Feature Proposal.md new file mode 100644 index 0000000000..ea895ee627 --- /dev/null +++ b/.gitlab/issue_templates/Feature Proposal.md @@ -0,0 +1,7 @@ +### Description + +(Include problem, use cases, benefits, and/or goals) + +### Proposal + +### Links / references diff --git a/.gitlab/merge_request_templates/Documentation.md b/.gitlab/merge_request_templates/Documentation.md new file mode 100644 index 0000000000..d2a1eb5642 --- /dev/null +++ b/.gitlab/merge_request_templates/Documentation.md @@ -0,0 +1,14 @@ +See the general Documentation guidelines http://docs.gitlab.com/ce/development/doc_styleguide.html. + +## What does this MR do? + +(briefly describe what this MR is about) + +## Moving docs to a new location? + +See the guidelines: http://docs.gitlab.com/ce/development/doc_styleguide.html#changing-document-location + +- [ ] Make sure the old link is not removed and has its contents replaced with a link to the new location. +- [ ] Make sure internal links pointing to the document in question are not broken. +- [ ] Search and replace any links referring to old docs in GitLab Rails app, specifically under the `app/views/` directory. +- [ ] If working on CE, submit an MR to EE with the changes as well. diff --git a/.haml-lint.yml b/.haml-lint.yml new file mode 100644 index 0000000000..da9a43d9c6 --- /dev/null +++ b/.haml-lint.yml @@ -0,0 +1,103 @@ +# Whether to ignore frontmatter at the beginning of HAML documents for +# frameworks such as Jekyll/Middleman +skip_frontmatter: false +exclude: + - 'vendor/**/*' + - 'spec/**/*' + +linters: + AltText: + enabled: false + + ClassAttributeWithStaticValue: + enabled: false + + ClassesBeforeIds: + enabled: false + + ConsecutiveComments: + enabled: false + + ConsecutiveSilentScripts: + enabled: false + max_consecutive: 2 + + EmptyObjectReference: + enabled: true + + EmptyScript: + enabled: true + + FinalNewline: + enabled: false + present: true + + HtmlAttributes: + enabled: false + + ImplicitDiv: + enabled: false + + LeadingCommentSpace: + enabled: false + + LineLength: + enabled: false + max: 80 + + MultilinePipe: + enabled: false + + MultilineScript: + enabled: true + + ObjectReferenceAttributes: + enabled: true + + RuboCop: + enabled: false + # These cops are incredibly noisy when it comes to HAML templates, so we + # ignore them. + ignored_cops: + - Lint/BlockAlignment + - Lint/EndAlignment + - Lint/Void + - Metrics/LineLength + - Style/AlignParameters + - Style/BlockNesting + - Style/ElseAlignment + - Style/FileName + - Style/FinalNewline + - Style/FrozenStringLiteralComment + - Style/IfUnlessModifier + - Style/IndentationWidth + - Style/Next + - Style/TrailingBlankLines + - Style/TrailingWhitespace + - Style/WhileUntilModifier + + RubyComments: + enabled: false + + SpaceBeforeScript: + enabled: false + + SpaceInsideHashAttributes: + enabled: false + style: space + + Indentation: + enabled: true + character: space # or tab + + TagName: + enabled: true + + TrailingWhitespace: + enabled: false + + UnnecessaryInterpolation: + enabled: false + + UnnecessaryStringOutput: + enabled: false diff --git a/.pkgr.yml b/.pkgr.yml index 8fc9fddf8f..10bcd7bd4b 100644 --- a/.pkgr.yml +++ b/.pkgr.yml @@ -3,6 +3,8 @@ group: git services: - postgres before_precompile: ./bin/pkgr_before_precompile.sh +env: + - SKIP_STORAGE_VALIDATION=true targets: debian-7: &wheezy build_dependencies: @@ -25,6 +27,16 @@ targets: - libicu52 - libpcre3 - git + ubuntu-16.04: + build_dependencies: + - libkrb5-dev + - libicu-dev + - cmake + - pkg-config + dependencies: + - libicu55 + - libpcre3 + - git centos-6: build_dependencies: - krb5-devel diff --git a/.rubocop.yml b/.rubocop.yml index 282f4539f0..5bd31ccf32 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,8 +5,8 @@ require: inherit_from: .rubocop_todo.yml AllCops: - TargetRubyVersion: 2.1 - # Cop names are not displayed in offense messages by default. Change behavior + TargetRubyVersion: 2.3 + # Cop names are not d§splayed in offense messages by default. Change behavior # by overriding DisplayCopNames, or by giving the -D/--display-cop-names # option. DisplayCopNames: true @@ -192,6 +192,9 @@ Style/FlipFlop: Style/For: Enabled: true +# Checks if there is a magic comment to enforce string literals +Style/FrozenStringLiteralComment: + Enabled: false # Do not introduce global variables. Style/GlobalVars: Enabled: true diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 20daf1619a..87520c67dd 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,21 +1,21 @@ # This configuration was generated by # `rubocop --auto-gen-config --exclude-limit 0` -# on 2016-07-13 12:36:08 -0600 using RuboCop version 0.41.2. +# on 2016-09-14 15:44:53 -0400 using RuboCop version 0.42.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. -# Offense count: 154 +# Offense count: 158 Lint/AmbiguousRegexpLiteral: Enabled: false -# Offense count: 43 +# Offense count: 41 # Configuration parameters: AllowSafeAssignment. Lint/AssignmentInCondition: Enabled: false -# Offense count: 14 +# Offense count: 16 Lint/HandleExceptions: Enabled: false @@ -23,28 +23,28 @@ Lint/HandleExceptions: Lint/Loop: Enabled: false -# Offense count: 15 +# Offense count: 16 Lint/ShadowingOuterLocalVariable: Enabled: false -# Offense count: 3 +# Offense count: 6 # Cop supports --auto-correct. Lint/StringConversionInInterpolation: Enabled: false -# Offense count: 44 +# Offense count: 49 # Cop supports --auto-correct. # Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments. Lint/UnusedBlockArgument: Enabled: false -# Offense count: 129 +# Offense count: 144 # Cop supports --auto-correct. # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods. Lint/UnusedMethodArgument: Enabled: false -# Offense count: 12 +# Offense count: 9 # Cop supports --auto-correct. Performance/PushSplat: Enabled: false @@ -59,51 +59,51 @@ Performance/RedundantBlockCall: Performance/RedundantMatch: Enabled: false -# Offense count: 24 +# Offense count: 27 # Cop supports --auto-correct. # Configuration parameters: MaxKeyValuePairs. Performance/RedundantMerge: Enabled: false -# Offense count: 60 +# Offense count: 61 Rails/OutputSafety: Enabled: false -# Offense count: 128 +# Offense count: 129 # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: strict, flexible Rails/TimeZone: Enabled: false -# Offense count: 12 +# Offense count: 15 # Cop supports --auto-correct. # Configuration parameters: Include. # Include: app/models/**/*.rb Rails/Validation: Enabled: false -# Offense count: 217 +# Offense count: 273 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # SupportedStyles: with_first_parameter, with_fixed_indentation Style/AlignParameters: Enabled: false -# Offense count: 32 +# Offense count: 30 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: always, conditionals Style/AndOr: Enabled: false -# Offense count: 47 +# Offense count: 50 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: percent_q, bare_percent Style/BarePercentLiterals: Enabled: false -# Offense count: 258 +# Offense count: 289 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: braces, no_braces, context_dependent @@ -126,14 +126,14 @@ Style/ColonMethodCall: Style/CommentAnnotation: Enabled: false -# Offense count: 34 +# Offense count: 33 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, SingleLineConditionsOnly. # SupportedStyles: assign_to_condition, assign_inside_condition Style/ConditionalAssignment: Enabled: false -# Offense count: 789 +# Offense count: 881 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: leading, trailing @@ -144,11 +144,12 @@ Style/DotPosition: Style/DoubleNegation: Enabled: false -# Offense count: 3 +# Offense count: 4 +# Cop supports --auto-correct. Style/EachWithObject: Enabled: false -# Offense count: 30 +# Offense count: 25 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: empty, nil, both @@ -160,7 +161,7 @@ Style/EmptyElse: Style/EmptyLiteral: Enabled: false -# Offense count: 123 +# Offense count: 135 # Cop supports --auto-correct. # Configuration parameters: AllowForAlignment, ForceEqualSignAlignment. Style/ExtraSpacing: @@ -172,16 +173,16 @@ Style/ExtraSpacing: Style/FormatString: Enabled: false -# Offense count: 48 +# Offense count: 51 # Configuration parameters: MinBodyLength. Style/GuardClause: Enabled: false -# Offense count: 11 +# Offense count: 9 Style/IfInsideElse: Enabled: false -# Offense count: 177 +# Offense count: 174 # Cop supports --auto-correct. # Configuration parameters: MaxLineLength. Style/IfUnlessModifier: @@ -194,7 +195,7 @@ Style/IfUnlessModifier: Style/IndentArray: Enabled: false -# Offense count: 89 +# Offense count: 97 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # SupportedStyles: special_inside_parentheses, consistent, align_braces @@ -208,7 +209,7 @@ Style/IndentHash: Style/Lambda: Enabled: false -# Offense count: 6 +# Offense count: 5 # Cop supports --auto-correct. Style/LineEndConcatenation: Enabled: false @@ -218,17 +219,21 @@ Style/LineEndConcatenation: Style/MethodCallParentheses: Enabled: false -# Offense count: 62 +# Offense count: 8 +Style/MethodMissing: + Enabled: false + +# Offense count: 85 # Cop supports --auto-correct. Style/MutableConstant: Enabled: false -# Offense count: 10 +# Offense count: 8 # Cop supports --auto-correct. Style/NestedParenthesizedCalls: Enabled: false -# Offense count: 12 +# Offense count: 13 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles. # SupportedStyles: skip_modifier_ifs, always @@ -242,12 +247,19 @@ Style/Next: Style/NumericLiteralPrefix: Enabled: false +# Offense count: 64 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles. +# SupportedStyles: predicate, comparison +Style/NumericPredicate: + Enabled: false + # Offense count: 29 # Cop supports --auto-correct. Style/ParallelAssignment: Enabled: false -# Offense count: 208 +# Offense count: 264 # Cop supports --auto-correct. # Configuration parameters: PreferredDelimiters. Style/PercentLiteralDelimiters: @@ -265,7 +277,7 @@ Style/PercentQLiterals: Style/PerlBackrefs: Enabled: false -# Offense count: 32 +# Offense count: 35 # Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist. # NamePrefix: is_, has_, have_ # NamePrefixBlacklist: is_, has_, have_ @@ -273,7 +285,7 @@ Style/PerlBackrefs: Style/PredicateName: Enabled: false -# Offense count: 28 +# Offense count: 27 # Cop supports --auto-correct. Style/PreferredHashMethods: Enabled: false @@ -283,14 +295,14 @@ Style/PreferredHashMethods: Style/Proc: Enabled: false -# Offense count: 20 +# Offense count: 22 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: compact, exploded Style/RaiseArgs: Enabled: false -# Offense count: 3 +# Offense count: 4 # Cop supports --auto-correct. Style/RedundantBegin: Enabled: false @@ -300,29 +312,29 @@ Style/RedundantBegin: Style/RedundantException: Enabled: false -# Offense count: 23 +# Offense count: 24 # Cop supports --auto-correct. Style/RedundantFreeze: Enabled: false -# Offense count: 377 +# Offense count: 408 # Cop supports --auto-correct. Style/RedundantSelf: Enabled: false -# Offense count: 94 +# Offense count: 93 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes. # SupportedStyles: slashes, percent_r, mixed Style/RegexpLiteral: Enabled: false -# Offense count: 17 +# Offense count: 18 # Cop supports --auto-correct. Style/RescueModifier: Enabled: false -# Offense count: 2 +# Offense count: 5 # Cop supports --auto-correct. Style/SelfAssignment: Enabled: false @@ -339,42 +351,42 @@ Style/SingleLineBlockParams: Style/SingleLineMethods: Enabled: false -# Offense count: 119 +# Offense count: 124 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: space, no_space Style/SpaceBeforeBlockBraces: Enabled: false -# Offense count: 11 +# Offense count: 10 # Cop supports --auto-correct. # Configuration parameters: AllowForAlignment. Style/SpaceBeforeFirstArg: Enabled: false -# Offense count: 130 +# Offense count: 141 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters. # SupportedStyles: space, no_space Style/SpaceInsideBlockBraces: Enabled: false -# Offense count: 98 +# Offense count: 96 # Cop supports --auto-correct. Style/SpaceInsideBrackets: Enabled: false -# Offense count: 60 +# Offense count: 62 # Cop supports --auto-correct. Style/SpaceInsideParens: Enabled: false -# Offense count: 5 +# Offense count: 7 # Cop supports --auto-correct. Style/SpaceInsidePercentLiteralDelimiters: Enabled: false -# Offense count: 36 +# Offense count: 40 # Cop supports --auto-correct. # Configuration parameters: SupportedStyles. # SupportedStyles: use_perl_names, use_english_names @@ -388,21 +400,28 @@ Style/SpecialGlobalVars: Style/StringLiteralsInInterpolation: Enabled: false -# Offense count: 24 +# Offense count: 32 # Cop supports --auto-correct. # Configuration parameters: IgnoredMethods. # IgnoredMethods: respond_to, define_method Style/SymbolProc: Enabled: false -# Offense count: 23 +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: EnforcedStyle, SupportedStyles, AllowSafeAssignment. +# SupportedStyles: require_parentheses, require_no_parentheses +Style/TernaryParentheses: + Enabled: false + +# Offense count: 24 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyleForMultiline, SupportedStyles. # SupportedStyles: comma, consistent_comma, no_comma Style/TrailingCommaInArguments: Enabled: false -# Offense count: 113 +# Offense count: 102 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyleForMultiline, SupportedStyles. # SupportedStyles: comma, consistent_comma, no_comma @@ -415,7 +434,7 @@ Style/TrailingCommaInLiteral: Style/TrailingUnderscoreVariable: Enabled: false -# Offense count: 90 +# Offense count: 76 # Cop supports --auto-correct. Style/TrailingWhitespace: Enabled: false @@ -427,12 +446,12 @@ Style/TrailingWhitespace: Style/TrivialAccessors: Enabled: false -# Offense count: 3 +# Offense count: 2 # Cop supports --auto-correct. Style/UnlessElse: Enabled: false -# Offense count: 13 +# Offense count: 14 # Cop supports --auto-correct. Style/UnneededInterpolation: Enabled: false diff --git a/CHANGELOG b/CHANGELOG index 22c5cd7b79..fcaaa284ce 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,14 +1,242 @@ Please view this file on the master branch, on stable branches it's out of date. +v 8.12.2 (unreleased) + +v 8.12.1 + - Fix a memory leak in HTML::Pipeline::SanitizationFilter::WHITELIST + - Fix issue with search filter labels not displaying + +v 8.12.0 + - Update the rouge gem to 2.0.6, which adds highlighting support for JSX, Prometheus, and others. !6251 + - Only check :can_resolve permission if the note is resolvable + - Bump fog-aws to v0.11.0 to support ap-south-1 region + - Add ability to fork to a specific namespace using API. (ritave) + - Allow to set request_access_enabled for groups and projects + - Cleanup misalignments in Issue list view !6206 + - Only create a protected branch upon a push to a new branch if a rule for that branch doesn't exist + - Prune events older than 12 months. (ritave) + - Prepend blank line to `Closes` message on merge request linked to issue (lukehowell) + - Fix issues/merge-request templates dropdown for forked projects + - Amends the packager.io configuration file to create a build for Ubuntu 16.04. !6247 (Jon "The Nice Guy" Spriggs) + - Filter tags by name !6121 + - Update gitlab shell secret file also when it is empty. !3774 (glensc) + - Give project selection dropdowns responsive width, make non-wrapping. + - Fix note form hint showing slash commands supported for commits. + - Make push events have equal vertical spacing. + - API: Ensure invitees are not returned in Members API. + - Preserve applied filters on issues search. + - Add two-factor recovery endpoint to internal API !5510 + - Pass the "Remember me" value to the U2F authentication form + - Display stages in valid order in stages dropdown on build page + - Only update projects.last_activity_at once per hour when creating a new event + - Cycle analytics (first iteration) !5986 + - Remove vendor prefixes for linear-gradient CSS (ClemMakesApps) + - Move pushes_since_gc from the database to Redis + - Limit number of shown environments on Merge Request: show only environments for target_branch, source_branch and tags + - Add font color contrast to external label in admin area (ClemMakesApps) + - Change logo animation to CSS (ClemMakesApps) + - Instructions for enabling Git packfile bitmaps !6104 + - Use Search::GlobalService.new in the `GET /projects/search/:query` endpoint + - Fix long comments in diffs messing with table width + - Add spec covering 'Gitlab::Git::committer_hash' !6433 (dandunckelman) + - Fix pagination on user snippets page + - Run CI builds with the permissions of users !5735 + - Fix sorting of issues in API + - Fix download artifacts button links !6407 + - Sort project variables by key. !6275 (Diego Souza) + - Ensure specs on sorting of issues in API are deterministic on MySQL + - Added ability to use predefined CI variables for environment name + - Added ability to specify URL in environment configuration in gitlab-ci.yml + - Escape search term before passing it to Regexp.new !6241 (winniehell) + - Fix pinned sidebar behavior in smaller viewports !6169 + - Fix file permissions change when updating a file on the Gitlab UI !5979 + - Added horizontal padding on build page sidebar on code coverage block. !6196 (Vitaly Baev) + - Change merge_error column from string to text type + - Reduce contributions calendar data payload (ClemMakesApps) + - Show all pipelines for merge requests even from discarded commits !6414 + - Replace contributions calendar timezone payload with dates (ClemMakesApps) + - Add `web_url` field to issue, merge request, and snippet API objects (Ben Boeckel) + - Enable pipeline events by default !6278 + - Move parsing of sidekiq ps into helper !6245 (pascalbetz) + - Added go to issue boards keyboard shortcut + - Expose `sha` and `merge_commit_sha` in merge request API (Ben Boeckel) + - Emoji can be awarded on Snippets !4456 + - Set path for all JavaScript cookies to honor GitLab's subdirectory setting !5627 (Mike Greiling) + - Fix blame table layout width + - Spec testing if issue authors can read issues on private projects + - Fix bug where pagination is still displayed despite all todos marked as done (ClemMakesApps) + - Request only the LDAP attributes we need !6187 + - Center build stage columns in pipeline overview (ClemMakesApps) + - Fix bug with tooltip not hiding on discussion toggle button + - Rename behaviour to behavior in bug issue template for consistency (ClemMakesApps) + - Fix bug stopping issue description being scrollable after selecting issue template + - Remove suggested colors hover underline (ClemMakesApps) + - Fix jump to discussion button being displayed on commit notes + - Shorten task status phrase (ClemMakesApps) + - Fix project visibility level fields on settings + - Add hover color to emoji icon (ClemMakesApps) + - Increase ci_builds artifacts_size column to 8-byte integer to allow larger files + - Add textarea autoresize after comment (ClemMakesApps) + - Do not write SSH public key 'comments' to authorized_keys !6381 + - Refresh todos count cache when an Issue/MR is deleted + - Fix branches page dropdown sort alignment (ClemMakesApps) + - Hides merge request button on branches page is user doesn't have permissions + - Add white background for no readme container (ClemMakesApps) + - API: Expose issue confidentiality flag. (Robert Schilling) + - Fix markdown anchor icon interaction (ClemMakesApps) + - Test migration paths from 8.5 until current release !4874 + - Replace animateEmoji timeout with eventListener (ClemMakesApps) + - Optimistic locking for Issues and Merge Requests (title and description overriding prevention) + - Require confirmation when not logged in for unsubscribe links !6223 (Maximiliano Perez Coto) + - Add `wiki_page_events` to project hook APIs (Ben Boeckel) + - Remove Gitorious import + - Loads GFM autocomplete source only when required + - Fix issue with slash commands not loading on new issue page + - Fix inconsistent background color for filter input field (ClemMakesApps) + - Remove prefixes from transition CSS property (ClemMakesApps) + - Add Sentry logging to API calls + - Add BroadcastMessage API + - Use 'git update-ref' for safer web commits !6130 + - Sort pipelines requested through the API + - Automatically expand hidden discussions when accessed by a permalink !5585 (Mike Greiling) + - Fix issue boards loading on large screens + - Change pipeline duration to be jobs running time instead of simple wall time from start to end !6084 + - Show queued time when showing a pipeline !6084 + - Remove unused mixins (ClemMakesApps) + - Add search to all issue board lists + - Scroll active tab into view on mobile + - Fix groups sort dropdown alignment (ClemMakesApps) + - Add horizontal scrolling to all sub-navs on mobile viewports (ClemMakesApps) + - Use JavaScript tooltips for mentions !5301 (winniehell) + - Add hover state to todos !5361 (winniehell) + - Fix icon alignment of star and fork buttons !5451 (winniehell) + - Fix alignment of icon buttons !5887 (winniehell) + - Added Ubuntu 16.04 support for packager.io (JonTheNiceGuy) + - Fix markdown help references (ClemMakesApps) + - Add last commit time to repo view (ClemMakesApps) + - Fix accessibility and visibility of project list dropdown button !6140 + - Fix missing flash messages on service edit page (airatshigapov) + - Added project-specific enable/disable setting for LFS !5997 + - Added group-specific enable/disable setting for LFS !6164 + - Add optional 'author' param when making commits. !5822 (dandunckelman) + - Don't expose a user's token in the `/api/v3/user` API (!6047) + - Remove redundant js-timeago-pending from user activity log (ClemMakesApps) + - Ability to manage project issues, snippets, wiki, merge requests and builds access level + - Remove inconsistent font weight for sidebar's labels (ClemMakesApps) + - Align add button on repository view (ClemMakesApps) + - Fix contributions calendar month label truncation (ClemMakesApps) + - Import release note descriptions from GitHub (EspadaV8) + - Added tests for diff notes + - Add pipeline events to Slack integration !5525 + - Add a button to download latest successful artifacts for branches and tags !5142 + - Remove redundant pipeline tooltips (ClemMakesApps) + - Expire commit info views after one day, instead of two weeks, to allow for user email updates + - Add delimiter to project stars and forks count (ClemMakesApps) + - Fix badge count alignment (ClemMakesApps) + - Remove green outline from `New branch unavailable` button on issue page !5858 (winniehell) + - Fix repo title alignment (ClemMakesApps) + - Change update interval of contacted_at + - Add LFS support to SSH !6043 + - Fix branch title trailing space on hover (ClemMakesApps) + - Don't include 'Created By' tag line when importing from GitHub if there is a linked GitLab account (EspadaV8) + - Award emoji tooltips containing more than 10 usernames are now truncated !4780 (jlogandavison) + - Fix duplicate "me" in award emoji tooltip !5218 (jlogandavison) + - Order award emoji tooltips in order they were added (EspadaV8) + - Fix spacing and vertical alignment on build status icon on commits page (ClemMakesApps) + - Update merge_requests.md with a simpler way to check out a merge request. !5944 + - Fix button missing type (ClemMakesApps) + - Gitlab::Checks is now instrumented + - Move to project dropdown with infinite scroll for better performance + - Fix leaking of submit buttons outside the width of a main container !18731 (originally by @pavelloz) + - Load branches asynchronously in Cherry Pick and Revert dialogs. + - Convert datetime coffeescript spec to ES6 (ClemMakesApps) + - Add merge request versions !5467 + - Change using size to use count and caching it for number of group members. !5935 + - Replace play icon font with svg (ClemMakesApps) + - Added 'only_allow_merge_if_build_succeeds' project setting in the API. !5930 (Duck) + - Reduce number of database queries on builds tab + - Wrap text in commit message containers + - Capitalize mentioned issue timeline notes (ClemMakesApps) + - Fix inconsistent checkbox alignment (ClemMakesApps) + - Use the default branch for displaying the project icon instead of master !5792 (Hannes Rosenögger) + - Adds response mime type to transaction metric action when it's not HTML + - Fix hover leading space bug in pipeline graph !5980 + - Avoid conflict with admin labels when importing GitHub labels + - User can edit closed MR with deleted fork (Katarzyna Kobierska Ula Budziszewska) !5496 + - Fix repository page ui issues + - Avoid protected branches checks when verifying access without branch name + - Add information about user and manual build start to runner as variables !6201 (Sergey Gnuskov) + - Fixed invisible scroll controls on build page on iPhone + - Fix error on raw build trace download for old builds stored in database !4822 + - Refactor the triggers page and documentation !6217 + - Show values of CI trigger variables only when clicked (Katarzyna Kobierska Ula Budziszewska) + - Use default clone protocol on "check out, review, and merge locally" help page URL + - Let the user choose a namespace and name on GitHub imports + - API for Ci Lint !5953 (Katarzyna Kobierska Urszula Budziszewska) + - Allow bulk update merge requests from merge requests index page + - Ensure validation messages are shown within the milestone form + - Add notification_settings API calls !5632 (mahcsig) + - Remove duplication between project builds and admin builds view !5680 (Katarzyna Kobierska Ula Budziszewska) + - Fix URLs with anchors in wiki !6300 (houqp) + - Deleting source project with existing fork link will close all related merge requests !6177 (Katarzyna Kobierska Ula Budziszeska) + - Return 204 instead of 404 for /ci/api/v1/builds/register.json if no builds are scheduled for a runner !6225 + - Fix Gitlab::Popen.popen thread-safety issue + - Add specs to removing project (Katarzyna Kobierska Ula Budziszewska) + - Clean environment variables when running git hooks + - Fix Import/Export issues importing protected branches and some specific models + - Fix non-master branch readme display in tree view + - Add UX improvements for merge request version diffs + +v 8.11.6 + - Fix unnecessary horizontal scroll area in pipeline visualizations. !6005 + - Make merge conflict file size limit 200 KB, to match the docs. !6052 + - Fix an error where we were unable to create a CommitStatus for running state. !6107 + - Optimize discussion notes resolving and unresolving. !6141 + - Fix GitLab import button. !6167 + - Restore SSH Key title auto-population behavior. !6186 + - Fix DB schema to match latest migration. !6256 + - Exclude some pending or inactivated rows in Member scopes. + +v 8.11.5 + - Optimize branch lookups and force a repository reload for Repository#find_branch. !6087 + - Fix member expiration date picker after update. !6184 + - Fix suggested colors options for new labels in the admin area. !6138 + - Optimize discussion notes resolving and unresolving + - Fix GitLab import button + - Fix confidential issues being exposed as public using gitlab.com export + - Remove gitorious from import_sources. !6180 + - Scope webhooks/services that will run for confidential issues + - Remove gitorious from import_sources + - Fix confidential issues being exposed as public using gitlab.com export + - Use oj gem for faster JSON processing + +v 8.11.4 + - Fix resolving conflicts on forks. !6082 + - Fix diff commenting on merge requests created prior to 8.10. !6029 + - Fix pipelines tab layout regression. !5952 + - Fix "Wiki" link not appearing in navigation for projects with external wiki. !6057 + - Do not enforce using hash with hidden key in CI configuration. !6079 + - Fix hover leading space bug in pipeline graph !5980 + - Fix sorting issues by "last updated" doesn't work after import from GitHub + - GitHub importer use default project visibility for non-private projects + - Creating an issue through our API now emails label subscribers !5720 + - Block concurrent updates for Pipeline + - Don't create groups for unallowed users when importing projects + - Fix issue boards leak private label names and descriptions + - Fix broken gitlab:backup:restore because of bad permissions on repo storage !6098 (Dirk Hörner) + - Remove gitorious. !5866 + - Allow compare merge request versions + v 8.11.3 - - Don't show resolve conflicts link before MR status is updated - - Fix IE11 fork button bug !598 - - Don't prevent viewing the MR when git refs for conflicts can't be found on disk - Allow system info page to handle case where info is unavailable + - Label list shows all issues (opened or closed) with that label + - Don't show resolve conflicts link before MR status is updated + - Fix IE11 fork button bug !5982 + - Don't prevent viewing the MR when git refs for conflicts can't be found on disk - Fix external issue tracker "Issues" link leading to 404s - Don't try to show merge conflict resolution info if a merge conflict contains non-UTF-8 characters - - Label list shows all issues (opened or closed) with that label - Automatically expand hidden discussions when accessed by a permalink !5585 (Mike Greiling) + - Issues filters reset button v 8.11.2 - Show "Create Merge Request" widget for push events to fork projects on the source project. !5978 @@ -27,6 +255,7 @@ v 8.11.0 - Add Koding (online IDE) integration - Ability to specify branches for Pivotal Tracker integration (Egor Lynko) - Fix don't pass a local variable called `i` to a partial. !20510 (herminiotorres) + - Add delimiter to project stars and forks count (ClemMakesApps) - Fix rename `add_users_into_project` and `projects_ids`. !20512 (herminiotorres) - Fix adding line comments on the initial commit to a repo !5900 - Fix the title of the toggle dropdown button. !5515 (herminiotorres) @@ -77,11 +306,10 @@ v 8.11.0 - Update `timeago` plugin to use multiple string/locale settings - Remove unused images (ClemMakesApps) - Get issue and merge request description templates from repositories - - Add hover state to todos !5361 (winniehell) - - Fix icon alignment of star and fork buttons !5451 (winniehell) - Enforce 2FA restrictions on API authentication endpoints !5820 - Limit git rev-list output count to one in forced push check - Show deployment status on merge requests with external URLs + - Fix branch title trailing space on hover (ClemMakesApps) - Clean up unused routes (Josef Strzibny) - Fix issue on empty project to allow developers to only push to protected branches if given permission - API: Add enpoints for pipelines @@ -175,8 +403,22 @@ v 8.11.0 - Update gitlab_git gem to 10.4.7 - Simplify SQL queries of marking a todo as done -v 8.10.6 (unreleased) - - Fix import/export configuration missing some included attributes +v 8.10.9 + - Exclude some pending or inactivated rows in Member scopes + +v 8.10.8 + - Fix information disclosure in issue boards. + - Fix privilege escalation in project import. + +v 8.10.7 + - Upgrade Hamlit to 2.6.1. !5873 + - Upgrade Doorkeeper to 4.2.0. !5881 + +v 8.10.6 + - Upgrade Rails to 4.2.7.1 for security fixes. !5781 + - Restore "Largest repository" sort option on Admin > Projects page. !5797 + - Fix privilege escalation via project export. + - Require administrator privileges to perform a project import. v 8.10.5 - Add a data migration to fix some missing timestamps in the members table. !5670 @@ -346,6 +588,7 @@ v 8.10.0 - Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab - RailsCache metris now includes fetch_hit/fetch_miss and read_hit/read_miss info. - Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w) + - Made project list visibility icon fixed width - Set import_url validation to be more strict - Memoize MR merged/closed events retrieval - Don't render discussion notes when requesting diff tab through AJAX @@ -392,6 +635,16 @@ v 8.10.0 - Fix migration corrupting import data for old version upgrades - Show tooltip on GitLab export link in new project page +v 8.9.9 + - Exclude some pending or inactivated rows in Member scopes + +v 8.9.8 + - Upgrade Doorkeeper to 4.2.0. !5881 + +v 8.9.7 + - Upgrade Rails to 4.2.7.1 for security fixes. !5781 + - Require administrator privileges to perform a project import. + v 8.9.6 - Fix importing of events under notes for GitLab projects. !5154 - Fix log statements in import/export. !5129 @@ -657,6 +910,12 @@ v 8.9.0 - Add tooltip to pin/unpin navbar - Add new sub nav style to Wiki and Graphs sub navigation +v 8.8.9 + - Upgrade Doorkeeper to 4.2.0. !5881 + +v 8.8.8 + - Upgrade Rails to 4.2.7.1 for security fixes. !5781 + v 8.8.7 - Fix privilege escalation issue with OAuth external users. - Ensure references to private repos aren't shown to logged-out users. @@ -1865,1692 +2124,5 @@ v 8.0.0 - Redirect from incorrectly cased group or project path to correct one (Francesco Levorato) - Removed API calls from CE to CI -v 7.14.3 - - No changes - -v 7.14.2 - - Upgrade gitlab_git to 7.2.15 to fix `git blame` errors with ISO-encoded files (Stan Hu) - - Allow configuration of LDAP attributes GitLab will use for the new user account. - -v 7.14.1 - - Improve abuse reports management from admin area - - Fix "Reload with full diff" URL button in compare branch view (Stan Hu) - - Disabled DNS lookups for SSH in docker image (Rowan Wookey) - - Only include base URL in OmniAuth full_host parameter (Stan Hu) - - Fix Error 500 in API when accessing a group that has an avatar (Stan Hu) - - Ability to enable SSL verification for Webhooks - -v 7.14.0 - - Fix bug where non-project members of the target project could set labels on new merge requests. - - Update default robots.txt rules to disallow crawling of irrelevant pages (Ben Bodenmiller) - - Fix redirection after sign in when using auto_sign_in_with_provider - - Upgrade gitlab_git to 7.2.14 to ignore CRLFs in .gitmodules (Stan Hu) - - Clear cache to prevent listing deleted branches after MR removes source branch (Stan Hu) - - Provide more feedback what went wrong if HipChat service failed test (Stan Hu) - - Fix bug where backslashes in inline diffs could be dropped (Stan Hu) - - Disable turbolinks when linking to Bitbucket import status (Stan Hu) - - Fix broken code import and display error messages if something went wrong with creating project (Stan Hu) - - Fix corrupted binary files when using API files endpoint (Stan Hu) - - Bump Haml to 4.0.7 to speed up textarea rendering (Stan Hu) - - Show incompatible projects in Bitbucket import status (Stan Hu) - - Fix coloring of diffs on MR Discussion-tab (Gert Goet) - - Fix "Network" and "Graphs" pages for branches with encoded slashes (Stan Hu) - - Fix errors deleting and creating branches with encoded slashes (Stan Hu) - - Always add current user to autocomplete controller to support filter by "Me" (Stan Hu) - - Fix multi-line syntax highlighting (Stan Hu) - - Fix network graph when branch name has single quotes (Stan Hu) - - Add "Confirm user" button in user admin page (Stan Hu) - - Upgrade gitlab_git to version 7.2.6 to fix Error 500 when creating network graphs (Stan Hu) - - Add support for Unicode filenames in relative links (Hiroyuki Sato) - - Fix URL used for refreshing notes if relative_url is present (Bartłomiej Święcki) - - Fix commit data retrieval when branch name has single quotes (Stan Hu) - - Check that project was actually created rather than just validated in import:repos task (Stan Hu) - - 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) - - Fix the "Reload with full diff" URL button (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) - - Fix file upload dialog for comment editing (Daniel Gerhardt) - - Set OmniAuth full_host parameter to ensure redirect URIs are correct (Stan Hu) - - Return comments in created order in merge request API (Stan Hu) - - Disable internal issue tracker controller if external tracker is used (Stan Hu) - - Expire Rails cache entries after two weeks to prevent endless Redis growth - - Add support for destroying project milestones (Stan Hu) - - Allow custom backup archive permissions - - Add project star and fork count, group avatar URL and user/group web URL attributes to API - - Show who last edited a comment if it wasn't the original author - - Send notification to all participants when MR is merged. - - Add ability to manage user email addresses via the API. - - Show buttons to add license, changelog and contribution guide if they're missing. - - Tweak project page buttons. - - Disabled autocapitalize and autocorrect on login field (Daryl Chan) - - Mention group and project name in creation, update and deletion notices (Achilleas Pipinellis) - - Update gravatar link on profile page to link to configured gravatar host (Ben Bodenmiller) - - Remove redis-store TTL monkey patch - - Add support for CI skipped status - - Fetch code from forks to refs/merge-requests/:id/head when merge request created - - Remove comments and email addresses when publicly exposing ssh keys (Zeger-Jan van de Weg) - - Add "Check out branch" button to the MR page. - - Improve MR merge widget text and UI consistency. - - Improve text in MR "How To Merge" modal. - - Cache all events - - Order commits by date when comparing branches - - Fix bug causing error when the target branch of a symbolic ref was deleted - - Include branch/tag name in archive file and directory name - - Add dropzone upload progress - - Add a label for merged branches on branches page (Florent Baldino) - - Detect .mkd and .mkdn files as markdown (Ben Boeckel) - - Fix: User search feature in admin area does not respect filters - - Set max-width for README, issue and merge request description for easier read on big screens - - Update Flowdock integration to support new Flowdock API (Boyan Tabakov) - - Remove author from files view (Sven Strickroth) - - Fix infinite loop when SAML was incorrectly configured. - -v 7.13.5 - - Satellites reverted - -v 7.13.4 - - Allow users to send abuse reports - -v 7.13.3 - - Fix bug causing Bitbucket importer to crash when OAuth application had been removed. - - Allow users to send abuse reports - - Remove satellites - - Link username to profile on Group Members page (Tom Webster) - -v 7.13.2 - - Fix randomly failed spec - - Create project services on Project creation - - Add admin_merge_request ability to Developer level and up - - Fix Error 500 when browsing projects with no HEAD (Stan Hu) - - Fix labels / assignee / milestone for the merge requests when issues are disabled - - Show the first tab automatically on MergeRequests#new - - Add rake task 'gitlab:update_commit_count' (Daniel Gerhardt) - - Fix Gmail Actions - -v 7.13.1 - - Fix: Label modifications are not reflected in existing notes and in the issue list - - Fix: Label not shown in the Issue list, although it's set through web interface - - Fix: Group/project references are linked incorrectly - - Improve documentation - - Fix of migration: Check if session_expire_delay column exists before adding the column - - Fix: ActionView::Template::Error - - Fix: "Create Merge Request" isn't always shown in event for newly pushed branch - - Fix bug causing "Remove source-branch" option not to work for merge requests from the same project. - - Render Note field hints consistently for "new" and "edit" forms - -v 7.13.0 - - 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) - - Add branch switching support for graphs (Daniel Gerhardt) - - Fix external issue tracker hook/test for HTTPS URLs (Daniel Gerhardt) - - Remove link leading to a 404 error in Deploy Keys page (Stan Hu) - - Add support for unlocking users in admin settings (Stan Hu) - - Add Irker service configuration options (Stan Hu) - - Fix order of issues imported from GitHub (Hiroyuki Sato) - - Bump rugments to 1.0.0beta8 to fix C prototype function highlighting (Jonathon Reinhart) - - Fix Merge Request webhook to properly fire "merge" action when accepted from the web UI - - 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) - - 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) - - Support commenting on diffs in side-by-side mode (Stan Hu) - - Fix JavaScript error when clicking on the comment button on a diff line that has a comment already (Stan Hu) - - Return 40x error codes if branch could not be deleted in UI (Stan Hu) - - Remove project visibility icons from dashboard projects list - - Rename "Design" profile settings page to "Preferences". - - Allow users to customize their default Dashboard page. - - Update ssl_ciphers in Nginx example to remove DHE settings. This will deny forward secrecy for Android 2.3.7, Java 6 and OpenSSL 0.9.8 - - Admin can edit and remove user identities - - Convert CRLF newlines to LF when committing using the web editor. - - API request /projects/:project_id/merge_requests?state=closed will return only closed merge requests without merged one. If you need ones that were merged - use state=merged. - - Allow Administrators to filter the user list by those with or without Two-factor Authentication enabled. - - Show a user's Two-factor Authentication status in the administration area. - - Explicit error when commit not found in the CI - - Improve performance for issue and merge request pages - - Users with guest access level can not set assignee, labels or milestones for issue and merge request - - Reporter role can manage issue tracker now: edit any issue, set assignee or milestone and manage labels - - Better performance for pages with events list, issues list and commits list - - Faster automerge check and merge itself when source and target branches are in same repository - - Correctly show anonymous authorized applications under Profile > Applications. - - Query Optimization in MySQL. - - Allow users to be blocked and unblocked via the API - - Use native Postgres database cleaning during backup restore - - Redesign project page. Show README as default instead of activity. Move project activity to separate page - - Make left menu more hierarchical and less contextual by adding back item at top - - A fork can’t have a visibility level that is greater than the original project. - - 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 - - Fix transferring of project to another group using the API. - -v 7.12.2 - - Correctly show anonymous authorized applications under Profile > Applications. - - Faster automerge check and merge itself when source and target branches are in same repository - - Audit log for user authentication - - Allow custom label to be set for authentication providers. - -v 7.12.1 - - Fix error when deleting a user who has projects (Stan Hu) - - Fix post-receive errors on a push when an external issue tracker is configured (Stan Hu) - - Add SAML to list of social_provider (Matt Firtion) - - Fix merge requests API scope to keep compatibility in 7.12.x patch release (Dmitriy Zaporozhets) - - Fix closed merge request scope at milestone page (Dmitriy Zaporozhets) - - Revert merge request states renaming - - Fix hooks for web based events with external issue references (Daniel Gerhardt) - - Improve performance for issue and merge request pages - - Compress database dumps to reduce backup size - -v 7.12.0 - - Fix Error 500 when one user attempts to access a personal, internal snippet (Stan Hu) - - Disable changing of target branch in new merge request page when a branch has already been specified (Stan Hu) - - Fix post-receive errors on a push when an external issue tracker is configured (Stan Hu) - - Update oauth button logos for Twitter and Google to recommended assets - - Update browser gem to version 0.8.0 for IE11 support (Stan Hu) - - Fix timeout when rendering file with thousands of lines. - - Add "Remember me" checkbox to LDAP signin form. - - Add session expiration delay configuration through UI application settings - - Don't notify users mentioned in code blocks or blockquotes. - - Omit link to generate labels if user does not have access to create them (Stan Hu) - - Show warning when a comment will add 10 or more people to the discussion. - - Disable changing of the source branch in merge request update API (Stan Hu) - - Shorten merge request WIP text. - - Add option to disallow users from registering any application to use GitLab as an OAuth provider - - Support editing target branch of merge request (Stan Hu) - - Refactor permission checks with issues and merge requests project settings (Stan Hu) - - Fix Markdown preview not working in Edit Milestone page (Stan Hu) - - Fix Zen Mode not closing with ESC key (Stan Hu) - - Allow HipChat API version to be blank and default to v2 (Stan Hu) - - Add file attachment support in Milestone description (Stan Hu) - - Fix milestone "Browse Issues" button. - - Set milestone on new issue when creating issue from index with milestone filter active. - - Make namespace API available to all users (Stan Hu) - - Add webhook support for note events (Stan Hu) - - Disable "New Issue" and "New Merge Request" buttons when features are disabled in project settings (Stan Hu) - - Remove Rack Attack monkey patches and bump to version 4.3.0 (Stan Hu) - - Fix clone URL losing selection after a single click in Safari and Chrome (Stan Hu) - - Fix git blame syntax highlighting when different commits break up lines (Stan Hu) - - Add "Resend confirmation e-mail" link in profile settings (Stan Hu) - - Allow to configure location of the `.gitlab_shell_secret` file. (Jakub Jirutka) - - Disabled expansion of top/bottom blobs for new file diffs - - Update Asciidoctor gem to version 1.5.2. (Jakub Jirutka) - - Fix resolving of relative links to repository files in AsciiDoc documents. (Jakub Jirutka) - - Use the user list from the target project in a merge request (Stan Hu) - - Default extention for wiki pages is now .md instead of .markdown (Jeroen van Baarsen) - - Add validation to wiki page creation (only [a-zA-Z0-9/_-] are allowed) (Jeroen van Baarsen) - - Fix new/empty milestones showing 100% completion value (Jonah Bishop) - - Add a note when an Issue or Merge Request's title changes - - Consistently refer to MRs as either Merged or Closed. - - Add Merged tab to MR lists. - - Prefix EmailsOnPush email subject with `[Git]`. - - Group project contributions by both name and email. - - Clarify navigation labels for Project Settings and Group Settings. - - Move user avatar and logout button to sidebar - - You can not remove user if he/she is an only owner of group - - User should be able to leave group. If not - show him proper message - - User has ability to leave project - - Add SAML support as an omniauth provider - - Allow to configure a URL to show after sign out - - Add an option to automatically sign-in with an Omniauth provider - - GitLab CI service sends .gitlab-ci.yml in each push call - - When remove project - move repository and schedule it removal - - 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 - - Set rel="nofollow" on external links - -v 7.11.3 - - no changes - - Fix upgrader script (Martins Polakovs) - -v 7.11.2 - - no changes - -v 7.11.1 - - no changes - -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. - - 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) - - Make the first branch pushed to an empty repository the default HEAD (Stan Hu) - - Fix broken view when using a tag to display a tree that contains git submodules (Stan Hu) - - Make Reply-To config apply to change e-mail confirmation and other Devise notifications (Stan Hu) - - Add application setting to restrict user signups to e-mail domains (Stan Hu) - - Don't allow a merge request to be merged when its title starts with "WIP". - - Add a page title to every page. - - Allow primary email to be set to an email that you've already added. - - Fix clone URL field and X11 Primary selection (Dmitry Medvinsky) - - Ignore invalid lines in .gitmodules - - Fix "Cannot move project" error message from popping up after a successful transfer (Stan Hu) - - Redirect to sign in page after signing out. - - Fix "Hello @username." references not working by no longer allowing usernames to end in period. - - Fix "Revspec not found" errors when viewing diffs in a forked project with submodules (Stan Hu) - - Improve project page UI - - Fix broken file browsing with relative submodule in personal projects (Stan Hu) - - Add "Reply quoting selected text" shortcut key (`r`) - - Fix bug causing `@whatever` inside an issue's first code block to be picked up as a user mention. - - Fix bug causing `@whatever` inside an inline code snippet (backtick-style) to be picked up as a user mention. - - When use change branches link at MR form - save source branch selection instead of target one - - Improve handling of large diffs - - Added GitLab Event header for project hooks - - Add Two-factor authentication (2FA) for GitLab logins - - Show Atom feed buttons everywhere where applicable. - - Add project activity atom feed. - - Don't crash when an MR from a fork has a cross-reference comment from the target project on one of its commits. - - Explain how to get a new password reset token in welcome emails - - Include commit comments in MR from a forked project. - - Group milestones by title in the dashboard and all other issue views. - - Query issues, merge requests and milestones with their IID through API (Julien Bianchi) - - Add default project and snippet visibility settings to the admin web UI. - - Show incompatible projects in Google Code import status (Stan Hu) - - Fix bug where commit data would not appear in some subdirectories (Stan Hu) - - Task lists are now usable in comments, and will show up in Markdown previews. - - Fix bug where avatar filenames were not actually deleted from the database during removal (Stan Hu) - - Fix bug where Slack service channel was not saved in admin template settings. (Stan Hu) - - Protect OmniAuth request phase against CSRF. - - Don't send notifications to mentioned users that don't have access to the project in question. - - Add search issues/MR by number - - Change plots to bar graphs in commit statistics screen - - Move snippets UI to fluid layout - - Improve UI for sidebar. Increase separation between navigation and content - - Improve new project command options (Ben Bodenmiller) - - Add common method to force UTF-8 and use it to properly handle non-ascii OAuth user properties (Onur Küçük) - - Prevent sending empty messages to HipChat (Chulki Lee) - - Improve UI for mobile phones on dashboard and project pages - - Add room notification and message color option for HipChat - - Allow to use non-ASCII letters and dashes in project and namespace name. (Jakub Jirutka) - - Add footnotes support to Markdown (Guillaume Delbergue) - - Add current_sign_in_at to UserFull REST api. - - Make Sidekiq MemoryKiller shutdown signal configurable - - Add "Create Merge Request" buttons to commits and branches pages and push event. - - Show user roles by comments. - - Fix automatic blocking of auto-created users from Active Directory. - - Call merge request webhook for each new commits (Arthur Gautier) - - Use SIGKILL by default in Sidekiq::MemoryKiller - - Fix mentioning of private groups. - - Add style for element in markdown - - Spin spinner icon next to "Checking for CI status..." on MR page. - - Fix reference links in dashboard activity and ATOM feeds. - - Ensure that the first added admin performs repository imports - -v 7.10.4 - - Fix migrations broken in 7.10.2 - - Make tags for GitLab installations running on MySQL case sensitive - - Get Gitorious importer to work again. - - Fix adding new group members from admin area - - Fix DB error when trying to tag a repository (Stan Hu) - - Fix Error 500 when searching Wiki pages (Stan Hu) - - Unescape branch names in compare commit (Stan Hu) - - Order commit comments chronologically in API. - -v 7.10.2 - - Fix CI links on MR page - -v 7.10.0 - - Ignore submodules that are defined in .gitmodules but are checked in as directories. - - Allow projects to be imported from Google Code. - - Remove access control for uploaded images to fix broken images in emails (Hannes Rosenögger) - - Allow users to be invited by email to join a group or project. - - Don't crash when project repository doesn't exist. - - Add config var to block auto-created LDAP users. - - Don't use HTML ellipsis in EmailsOnPush subject truncated commit message. - - Set EmailsOnPush reply-to address to committer email when enabled. - - Fix broken file browsing with a submodule that contains a relative link (Stan Hu) - - Fix persistent XSS vulnerability around profile website URLs. - - Fix project import URL regex to prevent arbitary local repos from being imported. - - Fix directory traversal vulnerability around uploads routes. - - Fix directory traversal vulnerability around help pages. - - Don't leak existence of project via search autocomplete. - - Don't leak existence of group or project via search. - - Fix bug where Wiki pages that included a '/' were no longer accessible (Stan Hu) - - Fix bug where error messages from Dropzone would not be displayed on the issues page (Stan Hu) - - Add a rake task to check repository integrity with `git fsck` - - Add ability to configure Reply-To address in gitlab.yml (Stan Hu) - - Move current user to the top of the list in assignee/author filters (Stan Hu) - - Fix broken side-by-side diff view on merge request page (Stan Hu) - - Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu) - - Allow HTML tags in Markdown input - - Fix code unfold not working on Compare commits page (Stan Hu) - - Fix generating SSH key fingerprints with OpenSSH 6.8. (Sašo Stanovnik) - - Fix "Import projects from" button to show the correct instructions (Stan Hu) - - Fix dots in Wiki slugs causing errors (Stan Hu) - - Make maximum attachment size configurable via Application Settings (Stan Hu) - - Update poltergeist to version 1.6.0 to support PhantomJS 2.0 (Zeger-Jan van de Weg) - - Fix cross references when usernames, milestones, or project names contain underscores (Stan Hu) - - Disable reference creation for comments surrounded by code/preformatted blocks (Stan Hu) - - Reduce Rack Attack false positives causing 403 errors during HTTP authentication (Stan Hu) - - enable line wrapping per default and remove the checkbox to toggle it (Hannes Rosenögger) - - Fix a link in the patch update guide - - Add a service to support external wikis (Hannes Rosenögger) - - Omit the "email patches" link and fix plain diff view for merge commits - - List new commits for newly pushed branch in activity view. - - Add sidetiq gem dependency to match EE - - Add changelog, license and contribution guide links to project tab bar. - - Improve diff UI - - Fix alignment of navbar toggle button (Cody Mize) - - Fix checkbox rendering for nested task lists - - Identical look of selectboxes in UI - - Upgrade the gitlab_git gem to version 7.1.3 - - Move "Import existing repository by URL" option to button. - - Improve error message when save profile has error. - - Passing the name of pushed ref to CI service (requires GitLab CI 7.9+) - - Add location field to user profile - - Fix print view for markdown files and wiki pages - - Fix errors when deleting old backups - - Improve GitLab performance when working with git repositories - - Add tag message and last commit to tag hook (Kamil Trzciński) - - Restrict permissions on backup files - - Improve oauth accounts UI in profile page - - Add ability to unlink connected accounts - - Replace commits calendar with faster contribution calendar that includes issues and merge requests - - Add inifinite scroll to user page activity - - Don't include system notes in issue/MR comment count. - - Don't mark merge request as updated when merge status relative to target branch changes. - - Link note avatar to user. - - Make Git-over-SSH errors more descriptive. - - Fix EmailsOnPush. - - Refactor issue filtering - - AJAX selectbox for issue assignee and author filters - - Fix issue with missing options in issue filtering dropdown if selected one - - Prevent holding Control-Enter or Command-Enter from posting comment multiple times. - - Prevent note form from being cleared when submitting failed. - - Improve file icons rendering on tree (Sullivan Sénéchal) - - API: Add pagination to project events - - Get issue links in notification mail to work again. - - Don't show commit comment button when user is not signed in. - - Fix admin user projects lists. - - Don't leak private group existence by redirecting from namespace controller to group controller. - - Ability to skip some items from backup (database, respositories or uploads) - - Archive repositories in background worker. - - Import GitHub, Bitbucket or GitLab.com projects owned by authenticated user into current namespace. - - Project labels are now available over the API under the "tag_list" field (Cristian Medina) - - Fixed link paths for HTTP and SSH on the admin project view (Jeremy Maziarz) - - Fix and improve help rendering (Sullivan Sénéchal) - - Fix final line in EmailsOnPush email diff being rendered as error. - - Prevent duplicate Buildkite service creation. - - Fix git over ssh errors 'fatal: protocol error: bad line length character' - - Automatically setup GitLab CI project for forks if origin project has GitLab CI enabled - - Bust group page project list cache when namespace name or path changes. - - Explicitly set image alt-attribute to prevent graphical glitches if gravatars could not be loaded - - Allow user to choose a public email to show on public profile - - Remove truncation from issue titles on milestone page (Jason Blanchard) - - Fix stuck Merge Request merging events from old installations (Ben Bodenmiller) - - Fix merge request comments on files with multiple commits - - Fix Resource Owner Password Authentication Flow - - Add icons to Add dropdown items. - - Allow admin to create public deploy keys that are accessible to any project. - - Warn when gitlab-shell version doesn't match requirement. - - Skip email confirmation when set by admin or via LDAP. - - Only allow users to reference groups, projects, issues, MRs, commits they have access to. - -v 7.9.4 - - Security: Fix project import URL regex to prevent arbitary local repos from being imported - - Fixed issue where only 25 commits would load in file listings - - Fix LDAP identities after config update - -v 7.9.3 - - Contains no changes - -v 7.9.2 - - Contains no changes - -v 7.9.1 - - Include missing events and fix save functionality in admin service template settings form (Stan Hu) - - Fix "Import projects from" button to show the correct instructions (Stan Hu) - - Fix OAuth2 issue importing a new project from GitHub and GitLab (Stan Hu) - - Fix for LDAP with commas in DN - - Fix missing events and in admin Slack service template settings form (Stan Hu) - - Don't show commit comment button when user is not signed in. - - Downgrade gemnasium-gitlab-service gem - -v 7.9.0 - - Add HipChat integration documentation (Stan Hu) - - Update documentation for object_kind field in Webhook push and tag push Webhooks (Stan Hu) - - Fix broken email images (Hannes Rosenögger) - - Automatically config git if user forgot, where possible (Zeger-Jan van de Weg) - - Fix mass SQL statements on initial push (Hannes Rosenögger) - - Add tag push notifications and normalize HipChat and Slack messages to be consistent (Stan Hu) - - Add comment notification events to HipChat and Slack services (Stan Hu) - - Add issue and merge request events to HipChat and Slack services (Stan Hu) - - Fix merge request URL passed to Webhooks. (Stan Hu) - - Fix bug that caused a server error when editing a comment to "+1" or "-1" (Stan Hu) - - Fix code preview theme setting for comments, issues, merge requests, and snippets (Stan Hu) - - Move labels/milestones tabs to sidebar - - Upgrade Rails gem to version 4.1.9. - - Improve error messages for file edit failures - - Improve UI for commits, issues and merge request lists - - Fix commit comments on first line of diff not rendering in Merge Request Discussion view. - - Allow admins to override restricted project visibility settings. - - Move restricted visibility settings from gitlab.yml into the web UI. - - Improve trigger merge request hook when source project branch has been updated (Kirill Zaitsev) - - Save web edit in new branch - - Fix ordering of imported but unchanged projects (Marco Wessel) - - Mobile UI improvements: make aside content expandable - - Expose avatar_url in projects API - - Fix checkbox alignment on the application settings page. - - Generalize image upload in drag and drop in markdown to all files (Hannes Rosenögger) - - Fix mass-unassignment of issues (Robert Speicher) - - Fix hidden diff comments in merge request discussion view - - Allow user confirmation to be skipped for new users via API - - Add a service to send updates to an Irker gateway (Romain Coltel) - - Add brakeman (security scanner for Ruby on Rails) - - Slack username and channel options - - Add grouped milestones from all projects to dashboard. - - Webhook sends pusher email as well as commiter - - Add Bitbucket omniauth provider. - - Add Bitbucket importer. - - Support referencing issues to a project whose name starts with a digit - - Condense commits already in target branch when updating merge request source branch. - - Send notifications and leave system comments when bulk updating issues. - - Automatically link commit ranges to compare page: sha1...sha4 or sha1..sha4 (includes sha1 in comparison) - - Move groups page from profile to dashboard - - Starred projects page at dashboard - - Blocking user does not remove him/her from project/groups but show blocked label - - Change subject of EmailsOnPush emails to include namespace, project and branch. - - Change subject of EmailsOnPush emails to include first commit message when multiple were pushed. - - Remove confusing footer from EmailsOnPush mail body. - - Add list of changed files to EmailsOnPush emails. - - Add option to send EmailsOnPush emails from committer email if domain matches. - - Add option to disable code diffs in EmailOnPush emails. - - Wrap commit message in EmailsOnPush email. - - Send EmailsOnPush emails when deleting commits using force push. - - Fix EmailsOnPush email comparison link to include first commit. - - Fix highliht of selected lines in file - - Reject access to group/project avatar if the user doesn't have access. - - Add database migration to clean group duplicates with same path and name (Make sure you have a backup before update) - - Add GitLab active users count to rake gitlab:check - - Starred projects page at dashboard - - Make email display name configurable - - Improve json validation in hook data - - Use Emoji One - - Updated emoji help documentation to properly reference EmojiOne. - - Fix missing GitHub organisation repositories on import page. - - Added blue theme - - Remove annoying notice messages when create/update merge request - - Allow smb:// links in Markdown text. - - Filter merge request by title or description at Merge Requests page - - Block user if he/she was blocked in Active Directory - - Fix import pages not working after first load. - - Use custom LDAP label in LDAP signin form. - - Execute hooks and services when branch or tag is created or deleted through web interface. - - Block and unblock user if he/she was blocked/unblocked in Active Directory - - Raise recommended number of unicorn workers from 2 to 3 - - Use same layout and interactivity for project members as group members. - - Prevent gitlab-shell character encoding issues by receiving its changes as raw data. - - Ability to unsubscribe/subscribe to issue or merge request - - Delete deploy key when last connection to a project is destroyed. - - Fix invalid Atom feeds when using emoji, horizontal rules, or images (Christian Walther) - - Backup of repositories with tar instead of git bundle (only now are git-annex files included in the backup) - - Add canceled status for CI - - Send EmailsOnPush email when branch or tag is created or deleted. - - Faster merge request processing for large repository - - Prevent doubling AJAX request with each commit visit via Turbolink - - Prevent unnecessary doubling of js events on import pages and user calendar - -v 7.8.4 - - Fix issue_tracker_id substitution in custom issue trackers - - Fix path and name duplication in namespaces - -v 7.8.3 - - Bump version of gitlab_git fixing annotated tags without message - -v 7.8.2 - - Fix service migration issue when upgrading from versions prior to 7.3 - - Fix setting of the default use project limit via admin UI - - Fix showing of already imported projects for GitLab and Gitorious importers - - Fix response of push to repository to return "Not found" if user doesn't have access - - Fix check if user is allowed to view the file attachment - - Fix import check for case sensetive namespaces - - Increase timeout for Git-over-HTTP requests to 1 hour since large pulls/pushes can take a long time. - - Properly handle autosave local storage exceptions. - - Escape wildcards when searching LDAP by username. - -v 7.8.1 - - Fix run of custom post receive hooks - - Fix migration that caused issues when upgrading to version 7.8 from versions prior to 7.3 - - Fix the warning for LDAP users about need to set password - - Fix avatars which were not shown for non logged in users - - Fix urls for the issues when relative url was enabled - -v 7.8.0 - - Fix access control and protection against XSS for note attachments and other uploads. - - Replace highlight.js with rouge-fork rugments (Stefan Tatschner) - - Make project search case insensitive (Hannes Rosenögger) - - Include issue/mr participants in list of recipients for reassign/close/reopen emails - - Expose description in groups API - - Better UI for project services page - - Cleaner UI for web editor - - Add diff syntax highlighting in email-on-push service notifications (Hannes Rosenögger) - - Add API endpoint to fetch all changes on a MergeRequest (Jeroen van Baarsen) - - View note image attachments in new tab when clicked instead of downloading them - - Improve sorting logic in UI and API. Explicitly define what sorting method is used by default - - Fix overflow at sidebar when have several items - - Add notes for label changes in issue and merge requests - - Show tags in commit view (Hannes Rosenögger) - - Only count a user's vote once on a merge request or issue (Michael Clarke) - - Increase font size when browse source files and diffs - - Service Templates now let you set default values for all services - - Create new file in empty repository using GitLab UI - - Ability to clone project using oauth2 token - - Upgrade Sidekiq gem to version 3.3.0 - - Stop git zombie creation during force push check - - Show success/error messages for test setting button in services - - Added Rubocop for code style checks - - Fix commits pagination - - Async load a branch information at the commit page - - Disable blacklist validation for project names - - Allow configuring protection of the default branch upon first push (Marco Wessel) - - Add gitlab.com importer - - Add an ability to login with gitlab.com - - Add a commit calendar to the user profile (Hannes Rosenögger) - - Submit comment on command-enter - - Notify all members of a group when that group is mentioned in a comment, for example: `@gitlab-org` or `@sales`. - - Extend issue clossing pattern to include "Resolve", "Resolves", "Resolved", "Resolving" and "Close" (Julien Bianchi and Hannes Rosenögger) - - Fix long broadcast message cut-off on left sidebar (Visay Keo) - - Add Project Avatars (Steven Thonus and Hannes Rosenögger) - - Password reset token validity increased from 2 hours to 2 days since it is also send on account creation. - - Edit group members via API - - Enable raw image paste from clipboard, currently Chrome only (Marco Cyriacks) - - Add action property to merge request hook (Julien Bianchi) - - Remove duplicates from group milestone participants list. - - Add a new API function that retrieves all issues assigned to a single milestone (Justin Whear and Hannes Rosenögger) - - API: Access groups with their path (Julien Bianchi) - - Added link to milestone and keeping resource context on smaller viewports for issues and merge requests (Jason Blanchard) - - Allow notification email to be set separately from primary email. - - API: Add support for editing an existing project (Mika Mäenpää and Hannes Rosenögger) - - Don't have Markdown preview fail for long comments/wiki pages. - - When test webhook - show error message instead of 500 error page if connection to hook url was reset - - Added support for firing system hooks on group create/destroy and adding/removing users to group (Boyan Tabakov) - - Added persistent collapse button for left side nav bar (Jason Blanchard) - - Prevent losing unsaved comments by automatically restoring them when comment page is loaded again. - - Don't allow page to be scaled on mobile. - - Clean the username acquired from OAuth/LDAP so it doesn't fail username validation and block signing up. - - Show assignees in merge request index page (Kelvin Mutuma) - - Link head panel titles to relevant root page. - - Allow users that signed up via OAuth to set their password in order to use Git over HTTP(S). - - Show users button to share their newly created public or internal projects on twitter - - Add quick help links to the GitLab pricing and feature comparison pages. - - Fix duplicate authorized applications in user profile and incorrect application client count in admin area. - - Make sure Markdown previews always use the same styling as the eventual destination. - - Remove deprecated Group#owner_id from API - - Show projects user contributed to on user page. Show stars near project on user page. - - Improve database performance for GitLab - - Add Asana service (Jeremy Benoist) - - Improve project webhooks with extra data - -v 7.7.2 - - Update GitLab Shell to version 2.4.2 that fixes a bug when developers can push to protected branch - - Fix issue when LDAP user can't login with existing GitLab account - -v 7.7.1 - - Improve mention autocomplete performance - - Show setup instructions for GitHub import if disabled - - Allow use http for OAuth applications - -v 7.7.0 - - Import from GitHub.com feature - - Add Jetbrains Teamcity CI service (Jason Lippert) - - Mention notification level - - Markdown preview in wiki (Yuriy Glukhov) - - Raise group avatar filesize limit to 200kb - - OAuth applications feature - - Show user SSH keys in admin area - - Developer can push to protected branches option - - Set project path instead of project name in create form - - Block Git HTTP access after 10 failed authentication attempts - - Updates to the messages returned by API (sponsored by O'Reilly Media) - - New UI layout with side navigation - - Add alert message in case of outdated browser (IE < 10) - - Added API support for sorting projects - - Update gitlab_git to version 7.0.0.rc14 - - Add API project search filter option for authorized projects - - Fix File blame not respecting branch selection - - Change some of application settings on fly in admin area UI - - Redesign signin/signup pages - - Close standard input in Gitlab::Popen.popen - - Trigger GitLab CI when push tags - - When accept merge request - do merge using sidaekiq job - - Enable web signups by default - - Fixes for diff comments: drag-n-drop images, selecting images - - Fixes for edit comments: drag-n-drop images, preview mode, selecting images, save & update - - Remove password strength indicator - -v 7.6.0 - - Fork repository to groups - - New rugged version - - Add CRON=1 backup setting for quiet backups - - Fix failing wiki restore - - Add optional Sidekiq MemoryKiller middleware (enabled via SIDEKIQ_MAX_RSS env variable) - - Monokai highlighting style now more faithful to original design (Mark Riedesel) - - Create project with repository in synchrony - - Added ability to create empty repo or import existing one if project does not have repository - - Reactivate highlight.js language autodetection - - Mobile UI improvements - - Change maximum avatar file size from 100KB to 200KB - - Strict validation for snippet file names - - Enable Markdown preview for issues, merge requests, milestones, and notes (Vinnie Okada) - - In the docker directory is a container template based on the Omnibus packages. - - Update Sidekiq to version 2.17.8 - - Add author filter to project issues and merge requests pages - - Atom feed for user activity - - Support multiple omniauth providers for the same user - - Rendering cross reference in issue title and tooltip for merge request - - Show username in comments - - Possibility to create Milestones or Labels when Issues are disabled - - Fix bug with showing gpg signature in tag - -v 7.5.3 - - Bump gitlab_git to 7.0.0.rc12 (includes Rugged 0.21.2) - -v 7.5.2 - - Don't log Sidekiq arguments by default - - Fix restore of wiki repositories from backups - -v 7.5.1 - - Add missing timestamps to 'members' table - -v 7.5.0 - - API: Add support for Hipchat (Kevin Houdebert) - - Add time zone configuration in gitlab.yml (Sullivan Senechal) - - Fix LDAP authentication for Git HTTP access - - Run 'GC.start' after every EmailsOnPushWorker job - - Fix LDAP config lookup for provider 'ldap' - - Drop all sequences during Postgres database restore - - Project title links to project homepage (Ben Bodenmiller) - - Add Atlassian Bamboo CI service (Drew Blessing) - - Mentioned @user will receive email even if he is not participating in issue or commit - - Session API: Use case-insensitive authentication like in UI (Andrey Krivko) - - Tie up loose ends with annotated tags: API & UI (Sean Edge) - - Return valid json for deleting branch via API (sponsored by O'Reilly Media) - - Expose username in project events API (sponsored by O'Reilly Media) - - Adds comments to commits in the API - - Performance improvements - - Fix post-receive issue for projects with deleted forks - - New gitlab-shell version with custom hooks support - - Improve code - - GitLab CI 5.2+ support (does not support older versions) - - Fixed bug when you can not push commits starting with 000000 to protected branches - - Added a password strength indicator - - Change project name and path in one form - - Display renamed files in diff views (Vinnie Okada) - - Fix raw view for public snippets - - Use secret token with GitLab internal API. - - Add missing timestamps to 'members' table - -v 7.4.5 - - Bump gitlab_git to 7.0.0.rc12 (includes Rugged 0.21.2) - -v 7.4.4 - - No changes - -v 7.4.3 - - Fix raw snippets view - - Fix security issue for member api - - Fix buildbox integration - -v 7.4.2 - - Fix internal snippet exposing for unauthenticated users - -v 7.4.1 - - Fix LDAP authentication for Git HTTP access - - Fix LDAP config lookup for provider 'ldap' - - Fix public snippets - - Fix 500 error on projects with nested submodules - -v 7.4.0 - - Refactored membership logic - - Improve error reporting on users API (Julien Bianchi) - - Refactor test coverage tools usage. Use SIMPLECOV=true to generate it locally - - Default branch is protected by default - - Increase unicorn timeout to 60 seconds - - Sort search autocomplete projects by stars count so most popular go first - - Add README to tab on project show page - - Do not delete tmp/repositories itself during clean-up, only its contents - - Support for backup uploads to remote storage - - Prevent notes polling when there are not notes - - Internal ForkService: Prepare support for fork to a given namespace - - API: Add support for forking a project via the API (Bernhard Kaindl) - - API: filter project issues by milestone (Julien Bianchi) - - Fail harder in the backup script - - Changes to Slack service structure, only webhook url needed - - Zen mode for wiki and milestones (Robert Schilling) - - Move Emoji parsing to html-pipeline-gitlab (Robert Schilling) - - Font Awesome 4.2 integration (Sullivan Senechal) - - Add Pushover service integration (Sullivan Senechal) - - Add select field type for services options (Sullivan Senechal) - - Add cross-project references to the Markdown parser (Vinnie Okada) - - Add task lists to issue and merge request descriptions (Vinnie Okada) - - Snippets can be public, internal or private - - Improve danger zone: ask project path to confirm data-loss action - - Raise exception on forgery - - Show build coverage in Merge Requests (requires GitLab CI v5.1) - - New milestone and label links on issue edit form - - Improved repository graphs - - Improve event note display in dashboard and project activity views (Vinnie Okada) - - Add users sorting to admin area - - UI improvements - - Fix ambiguous sha problem with mentioned commit - - Fixed bug with apostrophe when at mentioning users - - Add active directory ldap option - - Developers can push to wiki repo. Protected branches does not affect wiki repo any more - - Faster rev list - - Fix branch removal - -v 7.3.2 - - Fix creating new file via web editor - - Use gitlab-shell v2.0.1 - -v 7.3.1 - - Fix ref parsing in Gitlab::GitAccess - - Fix error 500 when viewing diff on a file with changed permissions - - Fix adding comments to MR when source branch is master - - Fix error 500 when searching description contains relative link - -v 7.3.0 - - Always set the 'origin' remote in satellite actions - - Write authorized_keys in tmp/ during tests - - Use sockets to connect to Redis - - Add dormant New Relic gem (can be enabled via environment variables) - - Expire Rack sessions after 1 week - - Cleaner signin/signup pages - - Improved comments UI - - Better search with filtering, pagination etc - - Added a checkbox to toggle line wrapping in diff (Yuriy Glukhov) - - Prevent project stars duplication when fork project - - Use the default Unicorn socket backlog value of 1024 - - Support Unix domain sockets for Redis - - Store session Redis keys in 'session:gitlab:' namespace - - Deprecate LDAP account takeover based on partial LDAP email / GitLab username match - - Use /bin/sh instead of Bash in bin/web, bin/background_jobs (Pavel Novitskiy) - - Keyboard shortcuts for productivity (Robert Schilling) - - API: filter issues by state (Julien Bianchi) - - API: filter issues by labels (Julien Bianchi) - - Add system hook for ssh key changes - - Add blob permalink link (Ciro Santilli) - - Create annotated tags through UI and API (Sean Edge) - - Snippets search (Charles Bushong) - - Comment new push to existing MR - - Add 'ci' to the blacklist of forbidden names - - Improve text filtering on issues page - - Comment & Close button - - Process git push --all much faster - - Don't allow edit of system notes - - Project wiki search (Ralf Seidler) - - Enabled Shibboleth authentication support (Matus Banas) - - Zen mode (fullscreen) for issues/MR/notes (Robert Schilling) - - Add ability to configure webhook timeout via gitlab.yml (Wes Gurney) - - Sort project merge requests in asc or desc order for updated_at or created_at field (sponsored by O'Reilly Media) - - Add Redis socket support to 'rake gitlab:shell:install' - -v 7.2.1 - - Delete orphaned labels during label migration (James Brooks) - - Security: prevent XSS with stricter MIME types for raw repo files - -v 7.2.0 - - Explore page - - Add project stars (Ciro Santilli) - - Log Sidekiq arguments - - Better labels: colors, ability to rename and remove - - Improve the way merge request collects diffs - - Improve compare page for large diffs - - Expose the full commit message via API - - Fix 500 error on repository rename - - Fix bug when MR download patch return invalid diff - - Test gitlab-shell integration - - Repository import timeout increased from 2 to 4 minutes allowing larger repos to be imported - - API for labels (Robert Schilling) - - API: ability to set an import url when creating project for specific user - -v 7.1.1 - - Fix cpu usage issue in Firefox - - Fix redirect loop when changing password by new user - - Fix 500 error on new merge request page - -v 7.1.0 - - Remove observers - - Improve MR discussions - - Filter by description on Issues#index page - - Fix bug with namespace select when create new project page - - Show README link after description for non-master members - - Add @all mention for comments - - Dont show reply button if user is not signed in - - Expose more information for issues with webhook - - Add a mention of the merge request into the default merge request commit message - - Improve code highlight, introduce support for more languages like Go, Clojure, Erlang etc - - Fix concurrency issue in repository download - - Dont allow repository name start with ? - - Improve email threading (Pierre de La Morinerie) - - Cleaner help page - - Group milestones - - Improved email notifications - - Contributors API (sponsored by Mobbr) - - Fix LDAP TLS authentication (Boris HUISGEN) - - Show VERSION information on project sidebar - - Improve branch removal logic when accept MR - - Fix bug where comment form is spawned inside the Reply button - - Remove Dir.chdir from Satellite#lock for thread-safety - - Increased default git max_size value from 5MB to 20MB in gitlab.yml. Please update your configs! - - Show error message in case of timeout in satellite when create MR - - Show first 100 files for huge diff instead of hiding all - - Change default admin email from admin@local.host to admin@example.com - -v 7.0.0 - - The CPU no longer overheats when you hold down the spacebar - - Improve edit file UI - - Add ability to upload group avatar when create - - Protected branch cannot be removed - - Developers can remove normal branches with UI - - Remove branch via API (sponsored by O'Reilly Media) - - Move protected branches page to Project settings area - - Redirect to Files view when create new branch via UI - - Drag and drop upload of image in every markdown-area (Earle Randolph Bunao and Neil Francis Calabroso) - - Refactor the markdown relative links processing - - Make it easier to implement other CI services for GitLab - - Group masters can create projects in group - - Deprecate ruby 1.9.3 support - - Only masters can rewrite/remove git tags - - Add X-Frame-Options SAMEORIGIN to Nginx config so Sidekiq admin is visible - - UI improvements - - Case-insensetive search for issues - - Update to rails 4.1 - - Improve performance of application for projects and groups with a lot of members - - Formally support Ruby 2.1 - - Include Nginx gitlab-ssl config - - Add manual language detection for highlight.js - - Added example.com/:username routing - - Show notice if your profile is public - - UI improvements for mobile devices - - Improve diff rendering performance - - Drag-n-drop for issues and merge requests between states at milestone page - - Fix '0 commits' message for huge repositories on project home page - - Prevent 500 error page when visit commit page from large repo - - Add notice about huge push over http to unicorn config - - File action in satellites uses default 30 seconds timeout instead of old 10 seconds one - - Overall performance improvements - - Skip init script check on omnibus-gitlab - - Be more selective when killing stray Sidekiqs - - Check LDAP user filter during sign-in - - Remove wall feature (no data loss - you can take it from database) - - Dont expose user emails via API unless you are admin - - Detect issues closed by Merge Request description - - Better email subject lines from email on push service (Alex Elman) - - Enable identicon for gravatar be default - -v 6.9.2 - - Revert the commit that broke the LDAP user filter - -v 6.9.1 - - Fix scroll to highlighted line - - Fix the pagination on load for commits page - -v 6.9.0 - - Store Rails cache data in the Redis `cache:gitlab` namespace - - Adjust MySQL limits for existing installations - - Add db index on project_id+iid column. This prevents duplicate on iid (During migration duplicates will be removed) - - Markdown preview or diff during editing via web editor (Evgeniy Sokovikov) - - Give the Rails cache its own Redis namespace - - Add ability to set different ssh host, if different from http/https - - Fix syntax highlighting for code comments blocks - - Improve comments loading logic - - Stop refreshing comments when the tab is hidden - - Improve issue and merge request mobile UI (Drew Blessing) - - Document how to convert a backup to PostgreSQL - - Fix locale bug in backup manager - - Fix can not automerge when MR description is too long - - Fix wiki backup skip bug - - Two Step MR creation process - - Remove unwanted files from satellite working directory with git clean -fdx - - Accept merge request via API (sponsored by O'Reilly Media) - - Add more access checks during API calls - - Block SSH access for 'disabled' Active Directory users - - Labels for merge requests (Drew Blessing) - - Threaded emails by setting a Message-ID (Philip Blatter) - -v 6.8.0 - - Ability to at mention users that are participating in issue and merge req. discussion - - Enabled GZip Compression for assets in example Nginx, make sure that Nginx is compiled with --with-http_gzip_static_module flag (this is default in Ubuntu) - - Make user search case-insensitive (Christopher Arnold) - - Remove omniauth-ldap nickname bug workaround - - Drop all tables before restoring a Postgres backup - - Make the repository downloads path configurable - - Create branches via API (sponsored by O'Reilly Media) - - Changed permission of gitlab-satellites directory not to be world accessible - - Protected branch does not allow force push - - Fix popen bug in `rake gitlab:satellites:create` - - Disable connection reaping for MySQL - - Allow oauth signup without email for twitter and github - - Fix faulty namespace names that caused 500 on user creation - - Option to disable standard login - - Clean old created archives from repository downloads directory - - Fix download link for huge MR diffs - - Expose event and mergerequest timestamps in API - - Fix emails on push service when only one commit is pushed - -v 6.7.3 - - Fix the merge notification email not being sent (Pierre de La Morinerie) - - Drop all tables before restoring a Postgres backup - - Remove yanked modernizr gem - -v 6.7.2 - - Fix upgrader script - -v 6.7.1 - - Fix GitLab CI integration - -v 6.7.0 - - Increased the example Nginx client_max_body_size from 5MB to 20MB, consider updating it manually on existing installations - - Add support for Gemnasium as a Project Service (Olivier Gonzalez) - - Add edit file button to MergeRequest diff - - Public groups (Jason Hollingsworth) - - Cleaner headers in Notification Emails (Pierre de La Morinerie) - - Blob and tree gfm links to anchors work - - Piwik Integration (Sebastian Winkler) - - Show contribution guide link for new issue form (Jeroen van Baarsen) - - Fix CI status for merge requests from fork - - Added option to remove issue assignee on project issue page and issue edit page (Jason Blanchard) - - New page load indicator that includes a spinner that scrolls with the page - - Converted all the help sections into markdown - - LDAP user filters - - Streamline the content of notification emails (Pierre de La Morinerie) - - Fixes a bug with group member administration (Matt DeTullio) - - Sort tag names using VersionSorter (Robert Speicher) - - Add GFM autocompletion for MergeRequests (Robert Speicher) - - Add webhook when a new tag is pushed (Jeroen van Baarsen) - - Add button for toggling inline comments in diff view - - Add retry feature for repository import - - Reuse the GitLab LDAP connection within each request - - Changed markdown new line behaviour to conform to markdown standards - - Fix global search - - Faster authorized_keys rebuilding in `rake gitlab:shell:setup` (requires gitlab-shell 1.8.5) - - Create and Update MR calls now support the description parameter (Greg Messner) - - Markdown relative links in the wiki link to wiki pages, markdown relative links in repositories link to files in the repository - - Added Slack service integration (Federico Ravasio) - - Better API responses for access_levels (sponsored by O'Reilly Media) - - Requires at least 2 unicorn workers - - Requires gitlab-shell v1.9+ - - Replaced gemoji(due to closed licencing problem) with Phantom Open Emoji library(combined SIL Open Font License, MIT License and the CC 3.0 License) - - Fix `/:username.keys` response content type (Dmitry Medvinsky) - -v 6.6.5 - - Added option to remove issue assignee on project issue page and issue edit page (Jason Blanchard) - - Hide mr close button for comment form if merge request was closed or inline comment - - Adds ability to reopen closed merge request - -v 6.6.4 - - Add missing html escape for highlighted code blocks in comments, issues - -v 6.6.3 - - Fix 500 error when edit yourself from admin area - - Hide private groups for public profiles - -v 6.6.2 - - Fix 500 error on branch/tag create or remove via UI - -v 6.6.1 - - Fix 500 error on files tab if submodules presents - -v 6.6.0 - - Retrieving user ssh keys publically(github style): http://__HOST__/__USERNAME__.keys - - Permissions: Developer now can manage issue tracker (modify any issue) - - Improve Code Compare page performance - - Group avatar - - Pygments.rb replaced with highlight.js - - Improve Merge request diff store logic - - Improve render performnace for MR show page - - Fixed Assembla hardcoded project name - - Jira integration documentation - - Refactored app/services - - Remove snippet expiration - - Mobile UI improvements (Drew Blessing) - - Fix block/remove UI for admin::users#show page - - Show users' group membership on users' activity page (Robert Djurasaj) - - User pages are visible without login if user is authorized to a public project - - Markdown rendered headers have id derived from their name and link to their id - - Improve application to work faster with large groups (100+ members) - - Multiple emails per user - - Show last commit for file when view file source - - Restyle Issue#show page and MR#show page - - Ability to filter by multiple labels for Issues page - - Rails version to 4.0.3 - - Fixed attachment identifier displaying underneath note text (Jason Blanchard) - -v 6.5.1 - - Fix branch selectbox when create merge request from fork - -v 6.5.0 - - Dropdown menus on issue#show page for assignee and milestone (Jason Blanchard) - - Add color custimization and previewing to broadcast messages - - Fixed notes anchors - - Load new comments in issues dynamically - - Added sort options to Public page - - New filters (assigned/authored/all) for Dashboard#issues/merge_requests (sponsored by Say Media) - - Add project visibility icons to dashboard - - Enable secure cookies if https used - - Protect users/confirmation with rack_attack - - Default HTTP headers to protect against MIME-sniffing, force https if enabled - - Bootstrap 3 with responsive UI - - New repository download formats: tar.bz2, zip, tar (Jason Hollingsworth) - - Restyled accept widgets for MR - - SCSS refactored - - Use jquery timeago plugin - - Fix 500 error for rdoc files - - Ability to customize merge commit message (sponsored by Say Media) - - Search autocomplete via ajax - - Add website url to user profile - - Files API supports base64 encoded content (sponsored by O'Reilly Media) - - Added support for Go's repository retrieval (Bruno Albuquerque) - -v 6.4.3 - - Don't use unicorn worker killer if PhusionPassenger is defined - -v 6.4.2 - - Fixed wrong behaviour of script/upgrade.rb - -v 6.4.1 - - Fixed bug with repository rename - - Fixed bug with project transfer - -v 6.4.0 - - Added sorting to project issues page (Jason Blanchard) - - Assembla integration (Carlos Paramio) - - Fixed another 500 error with submodules - - UI: More compact issues page - - Minimal password length increased to 8 symbols - - Side-by-side diff view (Steven Thonus) - - Internal projects (Jason Hollingsworth) - - Allow removal of avatar (Drew Blessing) - - Project webhooks now support issues and merge request events - - Visiting project page while not logged in will redirect to sign-in instead of 404 (Jason Hollingsworth) - - Expire event cache on avatar creation/removal (Drew Blessing) - - Archiving old projects (Steven Thonus) - - Rails 4 - - Add time ago tooltips to show actual date/time - - UI: Fixed UI for admin system hooks - - Ruby script for easier GitLab upgrade - - Do not remove Merge requests if fork project was removed - - Improve sign-in/signup UX - - Add resend confirmation link to sign-in page - - Set noreply@HOSTNAME for reply_to field in all emails - - Show GitLab API version on Admin#dashboard - - API Cross-origin resource sharing - - Show READMe link at project home page - - Show repo size for projects in Admin area - -v 6.3.0 - - API for adding gitlab-ci service - - Init script now waits for pids to appear after (re)starting before reporting status (Rovanion Luckey) - - Restyle project home page - - Grammar fixes - - Show branches list (which branches contains commit) on commit page (Andrew Kumanyaev) - - Security improvements - - Added support for GitLab CI 4.0 - - Fixed issue with 500 error when group did not exist - - Ability to leave project - - You can create file in repo using UI - - You can remove file from repo using UI - - API: dropped default_branch attribute from project during creation - - Project default_branch is not stored in db any more. It takes from repo now. - - Admin broadcast messages - - UI improvements - - Dont show last push widget if user removed this branch - - Fix 500 error for repos with newline in file name - - Extended html titles - - API: create/update/delete repo files - - Admin can transfer project to any namespace - - API: projects/all for admin users - - Fix recent branches order - -v 6.2.4 - - Security: Cast API private_token to string (CVE-2013-4580) - - Security: Require gitlab-shell 1.7.8 (CVE-2013-4581, CVE-2013-4582, CVE-2013-4583) - - Fix for Git SSH access for LDAP users - -v 6.2.3 - - Security: More protection against CVE-2013-4489 - - Security: Require gitlab-shell 1.7.4 (CVE-2013-4490, CVE-2013-4546) - - Fix sidekiq rake tasks - -v 6.2.2 - - Security: Update gitlab_git (CVE-2013-4489) - -v 6.2.1 - - Security: Fix issue with generated passwords for new users - -v 6.2.0 - - Public project pages are now visible to everyone (files, issues, wik, etc.) - THIS MEANS YOUR ISSUES AND WIKI FOR PUBLIC PROJECTS ARE PUBLICLY VISIBLE AFTER THE UPGRADE - - Add group access to permissions page - - Require current password to change one - - Group owner or admin can remove other group owners - - Remove group transfer since we have multiple owners - - Respect authorization in Repository API - - Improve UI for Project#files page - - Add more security specs - - Added search for projects by name to api (Izaak Alpert) - - Make default user theme configurable (Izaak Alpert) - - Update logic for validates_merge_request for tree of MR (Andrew Kumanyaev) - - Rake tasks for webhooks management (Jonhnny Weslley) - - Extended User API to expose admin and can_create_group for user creation/updating (Boyan Tabakov) - - API: Remove group - - API: Remove project - - Avatar upload on profile page with a maximum of 100KB (Steven Thonus) - - Store the sessions in Redis instead of the cookie store - - Fixed relative links in markdown - - User must confirm their email if signup enabled - - User must confirm changed email - -v 6.1.0 - - Project specific IDs for issues, mr, milestones - Above items will get a new id and for example all bookmarked issue urls will change. - Old issue urls are redirected to the new one if the issue id is too high for an internal id. - - Description field added to Merge Request - - API: Sudo api calls (Izaak Alpert) - - API: Group membership api (Izaak Alpert) - - Improved commit diff - - Improved large commit handling (Boyan Tabakov) - - Rewrite: Init script now less prone to errors and keeps better track of the service (Rovanion Luckey) - - Link issues, merge requests, and commits when they reference each other with GFM (Ash Wilson) - - Close issues automatically when pushing commits with a special message - - Improve user removal from admin area - - Invalidate events cache when project was moved - - Remove deprecated classes and rake tasks - - Add event filter for group and project show pages - - Add links to create branch/tag from project home page - - Add public-project? checkbox to new-project view - - Improved compare page. Added link to proceed into Merge Request - - Send an email to a user when they are added to group - - New landing page when you have 0 projects - -v 6.0.0 - - Feature: Replace teams with group membership - We introduce group membership in 6.0 as a replacement for teams. - The old combination of groups and teams was confusing for a lot of people. - And when the members of a team where changed this wasn't reflected in the project permissions. - In GitLab 6.0 you will be able to add members to a group with a permission level for each member. - These group members will have access to the projects in that group. - Any changes to group members will immediately be reflected in the project permissions. - You can even have multiple owners for a group, greatly simplifying administration. - - Feature: Ability to have multiple owners for group - - Feature: Merge Requests between fork and project (Izaak Alpert) - - Feature: Generate fingerprint for ssh keys - - Feature: Ability to create and remove branches with UI - - Feature: Ability to create and remove git tags with UI - - Feature: Groups page in profile. You can leave group there - - API: Allow login with LDAP credentials - - Redesign: project settings navigation - - Redesign: snippets area - - Redesign: ssh keys page - - Redesign: buttons, blocks and other ui elements - - Add comment title to rss feed - - You can use arrows to navigate at tree view - - Add project filter on dashboard - - Cache project graph - - Drop support of root namespaces - - Default theme is classic now - - Cache result of methods like authorize_projects, project.team.members etc - - Remove $.ready events - - Fix onclick events being double binded - - Add notification level to group membership - - Move all project controllers/views under Projects:: module - - Move all profile controllers/views under Profiles:: module - - Apply user project limit only for personal projects - - Unicorn is default web server again - - Store satellites lock files inside satellites dir - - Disabled threadsafety mode in rails - - Fixed bug with loosing MR comments - - Improved MR comments logic - - Render readme file for projects in public area - -v 5.4.2 - - Security: Cast API private_token to string (CVE-2013-4580) - - Security: Require gitlab-shell 1.7.8 (CVE-2013-4581, CVE-2013-4582, CVE-2013-4583) - -v 5.4.1 - - Security: Fixes for CVE-2013-4489 - - Security: Require gitlab-shell 1.7.4 (CVE-2013-4490, CVE-2013-4546) - -v 5.4.0 - - Ability to edit own comments - - Documentation improvements - - Improve dashboard projects page - - Fixed nav for empty repos - - GitLab Markdown help page - - Misspelling fixes - - Added support of unicorn and fog gems - - Added client list to API doc - - Fix PostgreSQL database restoration problem - - Increase snippet content column size - - allow project import via git:// url - - Show participants on issues, including mentions - - Notify mentioned users with email - -v 5.3.0 - - Refactored services - - Campfire service added - - HipChat service added - - Fixed bug with LDAP + git over http - - Fixed bug with google analytics code being ignored - - Improve sign-in page if ldap enabled - - Respect newlines in wall messages - - Generate the Rails secret token on first run - - Rename repo feature - - Init.d: remove gitlab.socket on service start - - Api: added teams api - - Api: Prevent blob content being escaped - - Api: Smart deploy key add behaviour - - Api: projects/owned.json return user owned project - - Fix bug with team assignation on project from #4109 - - Advanced snippets: public/private, project/personal (Andrew Kulakov) - - Repository Graphs (Karlo Nicholas T. Soriano) - - Fix dashboard lost if comment on commit - - Update gitlab-grack. Fixes issue with --depth option - - Fix project events duplicate on project page - - Fix postgres error when displaying network graph. - - Fix dashboard event filter when navigate via turbolinks - - init.d: Ensure socket is removed before starting service - - Admin area: Style teams:index, group:show pages - - Own page for failed forking - - Scrum view for milestone - -v 5.2.0 - - Turbolinks - - Git over http with ldap credentials - - Diff with better colors and some spacing on the corners - - Default values for project features - - Fixed huge_commit view - - Restyle project clone panel - - Move Gitlab::Git code to gitlab_git gem - - Move update docs in repo - - Requires gitlab-shell v1.4.0 - - Fixed submodules listing under file tab - - Fork feature (Angus MacArthur) - - git version check in gitlab:check - - Shared deploy keys feature - - Ability to generate default labels set for issues - - Improve gfm autocomplete (Harold Luo) - - Added support for Google Analytics - - Code search feature (Javier Castro) - -v 5.1.0 - - You can login with email or username now - - Corrected project transfer rollback when repository cannot be moved - - Move both repo and wiki when project transfer requested - - Admin area: project editing was removed from admin namespace - - Access: admin user has now access to any project. - - Notification settings - - Gitlab::Git set of objects to abstract from grit library - - Replace Unicorn web server with Puma - - Backup/Restore refactored. Backup dump project wiki too now - - Restyled Issues list. Show milestone version in issue row - - Restyled Merge Request list - - Backup now dump/restore uploads - - Improved performance of dashboard (Andrew Kumanyaev) - - File history now tracks renames (Akzhan Abdulin) - - Drop wiki migration tools - - Drop sqlite migration tools - - project tagging - - Paginate users in API - - Restyled network graph (Hiroyuki Sato) - -v 5.0.1 - - Fixed issue with gitlab-grit being overridden by grit - -v 5.0.0 - - Replaced gitolite with gitlab-shell - - Removed gitolite-related libraries - - State machine added - - Setup gitlab as git user - - Internal API - - Show team tab for empty projects - - Import repository feature - - Updated rails - - Use lambda for scopes - - Redesign admin area -> users - - Redesign admin area -> user - - Secure link to file attachments - - Add validations for Group and Team names - - Restyle team page for project - - Update capybara, rspec-rails, poltergeist to recent versions - - Wiki on git using Gollum - - Added Solarized Dark theme for code review - - Don't show user emails in autocomplete lists, profile pages - - Added settings tab for group, team, project - - Replace user popup with icons in header - - Handle project moving with gitlab-shell - - Added select2-rails for selectboxes with ajax data load - - Fixed search field on projects page - - Added teams to search autocomplete - - Move groups and teams on dashboard sidebar to sub-tabs - - API: improved return codes and docs. (Felix Gilcher, Sebastian Ziebell) - - Redesign wall to be more like chat - - Snippets, Wall features are disabled by default for new projects - -v 4.2.0 - - Teams - - User show page. Via /u/username - - Show help contents on pages for better navigation - - Async gitolite calls - - added satellites logs - - can_create_group, can_create_team booleans for User - - Process webhooks async - - GFM: Fix images escaped inside links - - Network graph improved - - Switchable branches for network graph - - API: Groups - - Fixed project download - -v 4.1.0 - - Optional Sign-Up - - Discussions - - Satellites outside of tmp - - Line numbers for blame - - Project public mode - - Public area with unauthorized access - - Load dashboard events with ajax - - remember dashboard filter in cookies - - replace resque with sidekiq - - fix routing issues - - cleanup rake tasks - - fix backup/restore - - scss cleanup - - show preview for note images - - improved network-graph - - get rid of app/roles/ - - added new classes Team, Repository - - Reduce amount of gitolite calls - - Ability to add user in all group projects - - remove deprecated configs - - replaced Korolev font with open font - - restyled admin/dashboard page - - restyled admin/projects page - -v 4.0.0 - - Remove project code and path from API. Use id instead - - Return valid cloneable url to repo for webhook - - Fixed backup issue - - Reorganized settings - - Fixed commits compare - - Refactored scss - - Improve status checks - - Validates presence of User#name - - Fixed postgres support - - Removed sqlite support - - Modified post-receive hook - - Milestones can be closed now - - Show comment events on dashboard - - Quick add team members via group#people page - - [API] expose created date for hooks and SSH keys - - [API] list, create issue notes - - [API] list, create snippet notes - - [API] list, create wall notes - - Remove project code - use path instead - - added username field to user - - rake task to fill usernames based on emails create namespaces for users - - STI Group < Namespace - - Project has namespace_id - - Projects with namespaces also namespaced in gitolite and stored in subdir - - Moving project to group will move it under group namespace - - Ability to move project from namespaces to another - - Fixes commit patches getting escaped (see #2036) - - Support diff and patch generation for commits and merge request - - MergeReqest doesn't generate a temporary file for the patch any more - - Update the UI to allow downloading Patch or Diff - -v 3.1.0 - - Updated gems - - Services: Gitlab CI integration - - Events filter on dashboard - - Own namespace for redis/resque - - Optimized commit diff views - - add alphabetical order for projects admin page - - Improved web editor - - Commit stats page - - Documentation split and cleanup - - Link to commit authors everywhere - - Restyled milestones list - - added Milestone to Merge Request - - Restyled Top panel - - Refactored Satellite Code - - Added file line links - - moved from capybara-webkit to poltergeist + phantomjs - -v 3.0.3 - - Fixed bug with issues list in Chrome - - New Feature: Import team from another project - -v 3.0.2 - - Fixed gitlab:app:setup - - Fixed application error on empty project in admin area - - Restyled last push widget - -v 3.0.1 - - Fixed git over http - -v 3.0.0 - - Projects groups - - Web Editor - - Fixed bug with gitolite keys - - UI improved - - Increased performance of application - - Show user avatar in last commit when browsing Files - - Refactored Gitlab::Merge - - Use Font Awesome for icons - - Separate observing of Note and MergeRequests - - Milestone "All Issues" filter - - Fix issue close and reopen button text and styles - - Fix forward/back while browsing Tree hierarchy - - Show number of notes for commits and merge requests - - Added support pg from box and update installation doc - - Reject ssh keys that break gitolite - - [API] list one project hook - - [API] edit project hook - - [API] list project snippets - - [API] allow to authorize using private token in HTTP header - - [API] add user creation - -v 2.9.1 - - Fixed resque custom config init - -v 2.9.0 - - fixed inline notes bugs - - refactored rspecs - - refactored gitolite backend - - added factory_girl - - restyled projects list on dashboard - - ssh keys validation to prevent gitolite crash - - send notifications if changed permission in project - - scss refactoring. gitlab_bootstrap/ dir - - fix git push http body bigger than 112k problem - - list of labels page under issues tab - - API for milestones, keys - - restyled buttons - - OAuth - - Comment order changed - -v 2.8.1 - - ability to disable gravatars - - improved MR diff logic - - ssh key help page - -v 2.8.0 - - Gitlab Flavored Markdown - - Bulk issues update - - Issues API - - Cucumber coverage increased - - Post-receive files fixed - - UI improved - - Application cleanup - - more cucumber - - capybara-webkit + headless - -v 2.7.0 - - Issue Labels - - Inline diff - - Git HTTP - - API - - UI improved - - System hooks - - UI improved - - Dashboard events endless scroll - - Source performance increased - -v 2.6.0 - - UI polished - - Improved network graph + keyboard nav - - Handle huge commits - - Last Push widget - - Bugfix - - Better performance - - Email in resque - - Increased test coverage - - Ability to remove branch with MR accept - - a lot of code refactored - -v 2.5.0 - - UI polished - - Git blame for file - - Bugfix - - Email in resque - - Better test coverage - -v 2.4.0 - - Admin area stats page - - Ability to block user - - Simplified dashboard area - - Improved admin area - - Bootstrap 2.0 - - Responsive layout - - Big commits handling - - Performance improved - - Milestones - -v 2.3.1 - - Issues pagination - - ssl fixes - - Merge Request pagination - -v 2.3.0 - - Dashboard r1 - - Search r1 - - Project page - - Close merge request on push - - Persist MR diff after merge - - mysql support - - Documentation - -v 2.2.0 - - We’ve added support of LDAP auth - - Improved permission logic (4 roles system) - - Protected branches (now only masters can push to protected branches) - - Usability improved - - twitter bootstrap integrated - - compare view between commits - - wiki feature - - now you can enable/disable issues, wiki, wall features per project - - security fixes - - improved code browsing (ajax branch switch etc) - - improved per-line commenting - - git submodules displayed - - moved to rails 3.2 - - help section improved - -v 2.1.0 - - Project tab r1 - - List branches/tags - - per line comments - - mass user import - -v 2.0.0 - - gitolite as main git host system - - merge requests - - project/repo access - - link to commit/issue feed - - design tab - - improved email notifications - - restyled dashboard - - bugfix - -v 1.2.2 - - common config file gitlab.yml - - issues restyle - - snippets restyle - - clickable news feed header on dashboard - - bugfix - -v 1.2.1 - - bugfix - -v 1.2.0 - - new design - - user dashboard - - network graph - - markdown support for comments - - encoding issues - - wall like twitter timeline - -v 1.1.0 - - project dashboard - - wall redesigned - - feature: code snippets - - fixed horizontal scroll on file preview - - fixed app crash if commit message has invalid chars - - bugfix & code cleaning - -v 1.0.2 - - fixed bug with empty project - - added adv validation for project path & code - - feature: issues can be sortable - - bugfix - - username displayed on top panel - -v 1.0.1 - - fixed: with invalid source code for commit - - fixed: lose branch/tag selection when use tree navigation - - when history clicked - display path - - bug fix & code cleaning - -v 1.0.0 - - bug fix - - projects preview mode - -v 0.9.6 - - css fix - - new repo empty tree until restart server - fixed - -v 0.9.4 - - security improved - - authorization improved - - html escaping - - bug fix - - increased test coverage - - design improvements - -v 0.9.1 - - increased test coverage - - design improvements - - new issue email notification - - updated app name - - issue redesigned - - issue can be edit - -v 0.8.0 - - syntax highlight for main file types - - redesign - - stability - - security fixes - - increased test coverage - - email notification +v 7.14.3 through 0.8.0 + - See changelogs/archive.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fbc8e15beb..d5e15bfce1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,19 +91,7 @@ This was inspired by [an article by Kent C. Dodds][medium-up-for-grabs]. ## Implement design & UI elements -### Design reference - -The GitLab design reference can be found in the [gitlab-design] project. -The designs are made using Antetype (`.atype` files). You can use the -[free Antetype viewer (Mac OSX only)] or grab an exported PNG from the design -(the PNG is 1:1). - -The current designs can be found in the [`gitlab8.atype` file]. - -### UI development kit - -Implemented UI elements can also be found at https://gitlab.com/help/ui. Please -note that this page isn't comprehensive at this time. +Please see the [UI Guide for building GitLab]. ## Issue tracker @@ -129,7 +117,7 @@ request that potentially fixes it. ### Feature proposals -To create a feature proposal for CE and CI, open an issue on the +To create a feature proposal for CE, open an issue on the [issue tracker of CE][ce-tracker]. For feature proposals for EE, open an issue on the @@ -144,16 +132,7 @@ code snippet right after your description in a new line: `~"feature proposal"`. Please keep feature proposals as small and simple as possible, complex ones might be edited to make them small and simple. -You are encouraged to use the template below for feature proposals. - -``` -## Description -Include problem, use cases, benefits, and/or goals - -## Proposal - -## Links / references -``` +Please submit Feature Proposals using the ['Feature Proposal' issue template](.gitlab/issue_templates/Feature Proposal.md) provided on the issue tracker. For changes in the interface, it can be helpful to create a mockup first. If you want to create something yourself, consider opening an issue first to @@ -166,55 +145,11 @@ submitting your own, there's a good chance somebody else had the same issue or feature proposal. Show your support with an award emoji and/or join the discussion. -Please submit bugs using the following template in the issue description area. +Please submit bugs using the ['Bug' issue template](.gitlab/issue_templates/Bug.md) provided on the issue tracker. The text in the parenthesis is there to help you with what to include. Omit it when submitting the actual issue. You can copy-paste it and then edit as you see fit. -``` -## Summary - -(Summarize your issue in one sentence - what goes wrong, what did you expect to happen) - -## Steps to reproduce - -(How one can reproduce the issue - this is very important) - -## Expected behavior - -(What you should see instead) - -## Relevant logs and/or screenshots - -(Paste any relevant logs - please use code blocks (```) to format console output, -logs, and code as it's very hard to read otherwise.) - -## Output of checks - -### Results of GitLab Application Check - -(For installations with omnibus-gitlab package run and paste the output of: -sudo gitlab-rake gitlab:check SANITIZE=true) - -(For installations from source run and paste the output of: -sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true) - -(we will only investigate if the tests are passing) - -### Results of GitLab Environment Info - -(For installations with omnibus-gitlab package run and paste the output of: -sudo gitlab-rake gitlab:env:info) - -(For installations from source run and paste the output of: -sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production) - -## Possible fixes - -(If you can, link to the line of code that might be responsible for the problem) - -``` - ### Issue weight Issue weight allows us to get an idea of the amount of work required to solve @@ -340,6 +275,10 @@ request is as follows: migrations on a fresh database before the MR is reviewed. If the review leads to large changes in the MR, do this again once the review is complete. 1. For more complex migrations, write tests. +1. Merge requests **must** adhere to the [merge request performance + guidelines](doc/development/merge_request_performance_guidelines.md). +1. For tests that use Capybara or PhantomJS, see this [article on how + to write reliable asynchronous tests](https://robots.thoughtbot.com/write-reliable-asynchronous-integration-tests-with-capybara). The **official merge window** is in the beginning of the month from the 1st to the 7th day of the month. This is the best time to submit an MR and get @@ -387,7 +326,8 @@ description area. Copy-paste it to retain the markdown format. 1. The change is as small as possible 1. Include proper tests and make all tests pass (unless it contains a test - exposing a bug in existing code) + exposing a bug in existing code). Every new class should have corresponding + unit tests, even if the class is exercised at a higher level, such as a feature test. 1. If you suspect a failing CI build is unrelated to your contribution, you may try and restart the failing CI job or ask a developer to fix the aforementioned failing test @@ -539,7 +479,5 @@ available at [http://contributor-covenant.org/version/1/1/0/](http://contributor [doc-styleguide]: doc/development/doc_styleguide.md "Documentation styleguide" [scss-styleguide]: doc/development/scss_styleguide.md "SCSS styleguide" [newlines-styleguide]: doc/development/newlines_styleguide.md "Newlines styleguide" -[gitlab-design]: https://gitlab.com/gitlab-org/gitlab-design -[free Antetype viewer (Mac OSX only)]: https://itunes.apple.com/us/app/antetype-viewer/id824152298?mt=12 -[`gitlab8.atype` file]: https://gitlab.com/gitlab-org/gitlab-design/tree/master/current/ +[UI Guide for building GitLab]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/ui_guide.md [license-finder-doc]: doc/development/licensing.md diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 18091983f5..40c341bdcd 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -3.4.0 +3.6.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index b4d6d12101..100435be13 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -0.7.11 +0.8.2 diff --git a/Gemfile b/Gemfile index 194379dd68..54d3170d81 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,7 @@ gem 'omniauth-auth0', '~> 1.4.1' gem 'omniauth-azure-oauth2', '~> 0.0.6' gem 'omniauth-bitbucket', '~> 0.0.2' gem 'omniauth-cas3', '~> 1.1.2' -gem 'omniauth-facebook', '~> 3.0.0' +gem 'omniauth-facebook', '~> 4.0.0' gem 'omniauth-github', '~> 1.1.1' gem 'omniauth-gitlab', '~> 1.0.0' gem 'omniauth-google-oauth2', '~> 0.4.1' @@ -53,7 +53,7 @@ gem 'browser', '~> 2.2' # Extracting information from a git repository # Provide access to Gitlab::Git library -gem 'gitlab_git', '~> 10.4.7' +gem 'gitlab_git', '~> 10.6.6' # LDAP Auth # GitLab fork with several improvements to original library. For full list of changes @@ -97,9 +97,6 @@ gem 'fog-rackspace', '~> 0.1.1' # for aws storage gem 'unf', '~> 0.1.4' -# Authorization -gem 'six', '~> 0.2.0' - # Seed data gem 'seed-fu', '~> 2.3.5' @@ -209,6 +206,9 @@ gem 'mousetrap-rails', '~> 1.4.6' # Detect and convert string character encoding gem 'charlock_holmes', '~> 0.7.3' +# Faster JSON +gem 'oj', '~> 2.17.4' + # Parse time & duration gem 'chronic', '~> 0.10.2' gem 'chronic_duration', '~> 0.10.6' @@ -298,9 +298,10 @@ group :development, :test do gem 'spring-commands-spinach', '~> 1.1.0' gem 'spring-commands-teaspoon', '~> 0.0.2' - gem 'rubocop', '~> 0.41.2', require: false + gem 'rubocop', '~> 0.42.0', require: false gem 'rubocop-rspec', '~> 1.5.0', require: false gem 'scss_lint', '~> 0.47.0', require: false + gem 'haml_lint', '~> 0.18.2', require: false gem 'simplecov', '0.12.0', require: false gem 'flog', '~> 4.3.2', require: false gem 'flay', '~> 2.6.1', require: false @@ -319,6 +320,7 @@ group :test do gem 'webmock', '~> 1.21.0' gem 'test_after_commit', '~> 0.4.2' gem 'sham_rack', '~> 1.3.6' + gem 'timecop', '~> 0.8.0' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index 0c28975060..3b15f3654a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -189,7 +189,7 @@ GEM erubis (2.7.0) escape_utils (1.1.1) eventmachine (1.0.8) - excon (0.49.0) + excon (0.52.0) execjs (2.6.0) expression_parser (0.9.0) factory_girl (4.5.0) @@ -215,8 +215,8 @@ GEM flowdock (0.7.1) httparty (~> 0.7) multi_json - fog-aws (0.9.2) - fog-core (~> 1.27) + fog-aws (0.11.0) + fog-core (~> 1.38) fog-json (~> 1.0) fog-xml (~> 0.1) ipaddress (~> 0.8) @@ -225,7 +225,7 @@ GEM fog-core (~> 1.27) fog-json (~> 1.0) fog-xml (~> 0.1) - fog-core (1.40.0) + fog-core (1.42.0) builder excon (~> 0.49) formatador (~> 0.2) @@ -279,7 +279,7 @@ GEM diff-lcs (~> 1.1) mime-types (>= 1.16, < 3) posix-spawn (~> 0.3) - gitlab_git (10.4.7) + gitlab_git (10.6.6) activesupport (~> 4.0) charlock_holmes (~> 0.7.3) github-linguist (~> 4.7.0) @@ -322,11 +322,18 @@ GEM grape-entity (0.4.8) activesupport multi_json (>= 1.3.2) + haml (4.0.7) + tilt + haml_lint (0.18.2) + haml (~> 4.0) + rake (>= 10, < 12) + rubocop (>= 0.36.0) + sysexits (~> 1.1) hamlit (2.6.1) temple (~> 0.7.6) thor tilt - hashie (3.4.3) + hashie (3.4.4) health_check (2.1.0) rails (>= 4.0) hipchat (1.5.2) @@ -394,7 +401,7 @@ GEM mime-types (>= 1.16, < 4) mail_room (0.8.0) method_source (0.8.2) - mime-types (2.99.2) + mime-types (2.99.3) mimemagic (0.3.0) mini_portile2 (2.1.0) minitest (5.7.0) @@ -420,6 +427,7 @@ GEM rack (>= 1.2, < 3) octokit (4.3.0) sawyer (~> 0.7.0, >= 0.5.3) + oj (2.17.4) omniauth (1.3.1) hashie (>= 1.2, < 4) rack (>= 1.0, < 3) @@ -437,7 +445,7 @@ GEM addressable (~> 2.3) nokogiri (~> 1.6.6) omniauth (~> 1.2) - omniauth-facebook (3.0.0) + omniauth-facebook (4.0.0) omniauth-oauth2 (~> 1.2) omniauth-github (1.1.2) omniauth (~> 1.0) @@ -584,7 +592,7 @@ GEM railties (>= 4.2.0, < 5.1) rinku (2.0.0) rotp (2.1.2) - rouge (2.0.5) + rouge (2.0.6) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) @@ -612,7 +620,7 @@ GEM rspec-retry (0.4.5) rspec-core rspec-support (3.5.0) - rubocop (0.41.2) + rubocop (0.42.0) parser (>= 2.3.1.1, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) @@ -683,7 +691,6 @@ GEM rack (~> 1.5) rack-protection (~> 1.4) tilt (>= 1.3, < 3) - six (0.2.0) slack-notifier (1.2.1) slop (3.6.0) spinach (0.8.10) @@ -724,6 +731,7 @@ GEM stringex (2.5.2) sys-filesystem (1.1.6) ffi + sysexits (1.2.0) systemu (2.6.5) task_list (1.0.2) html-pipeline @@ -755,7 +763,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.2) - unicode-display_width (1.1.0) + unicode-display_width (1.1.1) unicorn (4.9.0) kgio (~> 2.6) rack @@ -859,7 +867,7 @@ DEPENDENCIES github-linguist (~> 4.7.0) github-markup (~> 1.4) gitlab-flowdock-git-hook (~> 1.0.1) - gitlab_git (~> 10.4.7) + gitlab_git (~> 10.6.6) gitlab_meta (= 7.0) gitlab_omniauth-ldap (~> 1.2.1) gollum-lib (~> 4.2) @@ -867,6 +875,7 @@ DEPENDENCIES gon (~> 6.1.0) grape (~> 0.15.0) grape-entity (~> 0.4.2) + haml_lint (~> 0.18.2) hamlit (~> 2.6.1) health_check (~> 2.1.0) hipchat (~> 1.5.0) @@ -896,12 +905,13 @@ DEPENDENCIES nokogiri (~> 1.6.7, >= 1.6.7.2) oauth2 (~> 1.2.0) octokit (~> 4.3.0) + oj (~> 2.17.4) omniauth (~> 1.3.1) omniauth-auth0 (~> 1.4.1) omniauth-azure-oauth2 (~> 0.0.6) omniauth-bitbucket (~> 0.0.2) omniauth-cas3 (~> 1.1.2) - omniauth-facebook (~> 3.0.0) + omniauth-facebook (~> 4.0.0) omniauth-github (~> 1.1.1) omniauth-gitlab (~> 1.0.0) omniauth-google-oauth2 (~> 0.4.1) @@ -936,7 +946,7 @@ DEPENDENCIES rqrcode-rails3 (~> 0.1.7) rspec-rails (~> 3.5.0) rspec-retry (~> 0.4.5) - rubocop (~> 0.41.2) + rubocop (~> 0.42.0) rubocop-rspec (~> 1.5.0) ruby-fogbugz (~> 0.2.1) ruby-prof (~> 0.15.9) @@ -954,7 +964,6 @@ DEPENDENCIES sidekiq-cron (~> 0.4.0) simplecov (= 0.12.0) sinatra (~> 1.4.4) - six (~> 0.2.0) slack-notifier (~> 1.2.0) spinach-rails (~> 0.2.1) spinach-rerun-reporter (~> 0.0.2) @@ -971,6 +980,7 @@ DEPENDENCIES teaspoon-jasmine (~> 2.2.0) test_after_commit (~> 0.4.2) thin (~> 1.7.0) + timecop (~> 0.8.0) turbolinks (~> 2.5.0) u2f (~> 0.2.1) uglifier (~> 2.7.2) diff --git a/PROCESS.md b/PROCESS.md index 8e1a3f7360..8af660fbdd 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -50,7 +50,7 @@ etc.). The most important thing is making sure valid issues receive feedback from the development team. Therefore the priority is mentioning developers that can help -on those issue. Please select someone with relevant experience from +on those issues. Please select someone with relevant experience from [GitLab core team][core-team]. If there is nobody mentioned with that expertise look in the commit history for the affected files to find someone. Avoid mentioning the lead developer, this is the person that is least likely to give a diff --git a/README.md b/README.md index fee93d5f9c..3df8bfa04c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # GitLab [![build status](https://gitlab.com/gitlab-org/gitlab-ce/badges/master/build.svg)](https://gitlab.com/gitlab-org/gitlab-ce/commits/master) +[![coverage report](https://gitlab.com/gitlab-org/gitlab-ce/badges/master/coverage.svg?job=coverage)](https://gitlab.com/gitlab-org/gitlab-ce/commits/master) [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.svg)](https://codeclimate.com/github/gitlabhq/gitlabhq) ## Canonical source @@ -69,7 +70,7 @@ Instructions on how to start GitLab and how to run the tests can be found in the GitLab is a Ruby on Rails application that runs on the following software: - Ubuntu/Debian/CentOS/RHEL -- Ruby (MRI) 2.1 +- Ruby (MRI) 2.3 - Git 2.7.4+ - Redis 2.8+ - MySQL or PostgreSQL diff --git a/VERSION b/VERSION index dba04c1e17..fd32ca6a62 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.11.3 +8.12.1 diff --git a/app/assets/images/icon-link.png b/app/assets/images/icon-link.png deleted file mode 100644 index 5b55e12571c894c5f34d3cd0d5325919d1919e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmV;~0w(>5P)p*HGIjfI`9#5)fwlP^FLA$@kpoYvy1-Iwi4?e!kyD;OH8S9GYKI$d z2e1dhv-c=ifh*XHU;?hE|5t?SEZ#UUF$kW$kGhD6=w3DvCNp5{m(!m;62V`~fVoE@ z@goMzJqld_fbCs9Z+OF0*awA}&jC>O<4}i~(xWg}2VnPh5$r)q23i7O-ed*}h6hfL zZBnX8)n2RKlC~2JWDWd6;pxh@cjslB-oj_ zeALO)pC8$@30`_h&dB&av=rg`!KG@un9 z*C8A&h#TxP93T~_z~_sV!`m&QI$r$#Z%7Bq@D&?L+k+Vma->e1zs(Z)#UfCbfq`Tk z0(}`se3xL?o|}Lzj+gBb{{Is8xn=-9CDsIf|3bNX&E0+U1V4~c8-84v-7y$+yY?-@YB+%o_I^mc%z`0Dq= z4$#`f!9L?5vID%Idy&NnZ~xVQAvQas@ZQdgH&<4%$yoJ`=<)ynLlAIkLR8HW00000 LNkvXXu0mjfh#gAh diff --git a/app/assets/images/icon_anchor.svg b/app/assets/images/icon_anchor.svg new file mode 100644 index 0000000000..7e242586ba --- /dev/null +++ b/app/assets/images/icon_anchor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/javascripts/LabelManager.js b/app/assets/javascripts/LabelManager.js index 151455ce4a..d4a4c7abaa 100644 --- a/app/assets/javascripts/LabelManager.js +++ b/app/assets/javascripts/LabelManager.js @@ -3,6 +3,7 @@ LabelManager.prototype.errorMessage = 'Unable to update label prioritization at this time'; function LabelManager(opts) { + // Defaults var ref, ref1, ref2; if (opts == null) { opts = {}; @@ -28,6 +29,7 @@ $btn = $(e.currentTarget); $label = $("#" + ($btn.data('domId'))); action = $btn.parents('.js-prioritized-labels').length ? 'remove' : 'add'; + // Make sure tooltip will hide $tooltip = $("#" + ($btn.find('.has-tooltip:visible').attr('aria-describedby'))); $tooltip.tooltip('destroy'); return _this.toggleLabelPriority($label, action); @@ -42,6 +44,7 @@ url = $label.find('.js-toggle-priority').data('url'); $target = this.prioritizedLabels; $from = this.otherLabels; + // Optimistic update if (action === 'remove') { $target = this.otherLabels; $from = this.prioritizedLabels; @@ -53,6 +56,7 @@ $target.find('.empty-message').addClass('hidden'); } $label.detach().appendTo($target); + // Return if we are not persisting state if (!persistState) { return; } @@ -61,6 +65,7 @@ url: url, type: 'DELETE' }); + // Restore empty message if (!$from.find('li').length) { $from.find('.empty-message').removeClass('hidden'); } diff --git a/app/assets/javascripts/abuse_reports.js.es6 b/app/assets/javascripts/abuse_reports.js.es6 new file mode 100644 index 0000000000..2fe46b9fd0 --- /dev/null +++ b/app/assets/javascripts/abuse_reports.js.es6 @@ -0,0 +1,38 @@ +((global) => { + const MAX_MESSAGE_LENGTH = 500; + const MESSAGE_CELL_SELECTOR = '.abuse-reports .message'; + + class AbuseReports { + constructor() { + $(MESSAGE_CELL_SELECTOR).each(this.truncateLongMessage); + $(document) + .off('click', MESSAGE_CELL_SELECTOR) + .on('click', MESSAGE_CELL_SELECTOR, this.toggleMessageTruncation); + } + + truncateLongMessage() { + const $messageCellElement = $(this); + const reportMessage = $messageCellElement.text(); + if (reportMessage.length > MAX_MESSAGE_LENGTH) { + $messageCellElement.data('original-message', reportMessage); + $messageCellElement.data('message-truncated', 'true'); + $messageCellElement.text(global.text.truncate(reportMessage, MAX_MESSAGE_LENGTH)); + } + } + + toggleMessageTruncation() { + const $messageCellElement = $(this); + const originalMessage = $messageCellElement.data('original-message'); + if (!originalMessage) return; + if ($messageCellElement.data('message-truncated') === 'true') { + $messageCellElement.data('message-truncated', 'false'); + $messageCellElement.text(originalMessage); + } else { + $messageCellElement.data('message-truncated', 'true'); + $messageCellElement.text(`${originalMessage.substr(0, (MAX_MESSAGE_LENGTH - 3))}...`); + } + } + } + + global.AbuseReports = AbuseReports; +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/activities.js b/app/assets/javascripts/activities.js index 1ab3c2197d..d5e11e22be 100644 --- a/app/assets/javascripts/activities.js +++ b/app/assets/javascripts/activities.js @@ -12,7 +12,7 @@ } Activities.prototype.updateTooltips = function() { - return gl.utils.localTimeAgo($('.js-timeago', '#activity')); + return gl.utils.localTimeAgo($('.js-timeago', '.content_list')); }; Activities.prototype.reloadActivities = function() { @@ -26,7 +26,7 @@ event_filters = $.cookie("event_filter"); filter = sender.attr("id").split("_")[0]; $.cookie("event_filter", (event_filters !== filter ? filter : ""), { - path: '/' + path: gon.relative_url_root || '/' }); if (event_filters !== filter) { return sender.closest('li').toggleClass("active"); diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 84b292e59c..1cd2302111 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -16,20 +16,18 @@ .replace(':id', group_id); return $.ajax({ url: url, - data: { - private_token: gon.api_token - }, dataType: "json" }).done(function(group) { return callback(group); }); }, + // Return groups list. Filtered by query + // Only active groups retrieved groups: function(query, skip_ldap, callback) { var url = Api.buildUrl(Api.groupsPath); return $.ajax({ url: url, data: { - private_token: gon.api_token, search: query, per_page: 20 }, @@ -38,12 +36,12 @@ return callback(groups); }); }, + // Return namespaces list. Filtered by query namespaces: function(query, callback) { var url = Api.buildUrl(Api.namespacesPath); return $.ajax({ url: url, data: { - private_token: gon.api_token, search: query, per_page: 20 }, @@ -52,12 +50,12 @@ return callback(namespaces); }); }, + // Return projects list. Filtered by query projects: function(query, order, callback) { var url = Api.buildUrl(Api.projectsPath); return $.ajax({ url: url, data: { - private_token: gon.api_token, search: query, order_by: order, per_page: 20 @@ -70,7 +68,6 @@ newLabel: function(project_id, data, callback) { var url = Api.buildUrl(Api.labelsPath) .replace(':id', project_id); - data.private_token = gon.api_token; return $.ajax({ url: url, type: "POST", @@ -82,13 +79,13 @@ return callback(message.responseJSON); }); }, + // Return group projects list. Filtered by query groupProjects: function(group_id, query, callback) { var url = Api.buildUrl(Api.groupProjectsPath) .replace(':id', group_id); return $.ajax({ url: url, data: { - private_token: gon.api_token, search: query, per_page: 20 }, @@ -97,6 +94,7 @@ return callback(projects); }); }, + // Return text for a specific license licenseText: function(key, data, callback) { var url = Api.buildUrl(Api.licensePath) .replace(':key', key); diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index ce9cbb63b6..c029bf3b5c 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -1,3 +1,9 @@ +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// /*= require jquery2 */ /*= require jquery-ui/autocomplete */ /*= require jquery-ui/datepicker */ @@ -76,6 +82,7 @@ } }; + // Disable button if text field is empty window.disableButtonIfEmptyField = function(field_selector, button_selector) { var closest_submit, field; field = $(field_selector); @@ -92,6 +99,7 @@ }); }; + // Disable button if any input field with given selector is empty window.disableButtonIfAnyEmptyField = function(form, form_selector, button_selector) { var closest_submit, updateButtons; closest_submit = form.find(button_selector); @@ -128,6 +136,8 @@ window.addEventListener("hashchange", shiftWindow); window.onload = function() { + // Scroll the window to avoid the topnav bar + // https://github.com/twitter/bootstrap/issues/1768 if (location.hash) { return setTimeout(shiftWindow, 100); } @@ -149,9 +159,13 @@ return $(this).select().one('mouseup', function(e) { return e.preventDefault(); }); + // Click a .js-select-on-focus field, select the contents + // Prevent a mouseup event from deselecting the input }); $('.remove-row').bind('ajax:success', function() { - return $(this).closest('li').fadeOut(); + $(this).tooltip('destroy') + .closest('li') + .fadeOut(); }); $('.js-remove-tr').bind('ajax:before', function() { return $(this).hide(); @@ -161,6 +175,7 @@ }); $('select.select2').select2({ width: 'resolve', + // Initialize select2 selects dropdownAutoWidth: true }); $('.js-select2').bind('select2-close', function() { @@ -168,25 +183,28 @@ $('.select2-container-active').removeClass('select2-container-active'); return $(':focus').blur(); }), 1); + // Close select2 on escape }); + // Initialize tooltips $body.tooltip({ selector: '.has-tooltip, [data-toggle="tooltip"]', placement: function(_, el) { - var $el; - $el = $(el); - return $el.data('placement') || 'bottom'; + return $(el).data('placement') || 'bottom'; } }); $('.trigger-submit').on('change', function() { return $(this).parents('form').submit(); + // Form submitter }); gl.utils.localTimeAgo($('abbr.timeago, .js-timeago'), true); + // Flash if ((flash = $(".flash-container")).length > 0) { flash.click(function() { return $(this).fadeOut(); }); flash.show(); } + // Disable form buttons while a form is submitting $body.on('ajax:complete, ajax:beforeSend, submit', 'form', function(e) { var buttons; buttons = $('[type="submit"]', this); @@ -207,6 +225,7 @@ } }); $('.account-box').hover(function() { + // Show/Hide the profile menu when hovering the account box return $(this).toggleClass('hover'); }); $document.on('click', '.diff-content .js-show-suppressed-diff', function() { @@ -214,6 +233,7 @@ $container = $(this).parent(); $container.next('table').show(); return $container.remove(); + // Commit show suppressed diff }); $('.navbar-toggle').on('click', function() { $('.header-content .title').toggle(); @@ -221,6 +241,7 @@ $('.header-content .navbar-collapse').toggle(); return $('.navbar-toggle').toggleClass('active'); }); + // Show/hide comments on diff $body.on("click", ".js-toggle-diff-comments", function(e) { var $this = $(this); $this.toggleClass('active'); @@ -230,6 +251,7 @@ } else { notesHolders.hide(); } + $this.trigger('blur'); return e.preventDefault(); }); $document.off("click", '.js-confirm-danger'); @@ -284,42 +306,9 @@ gl.awardsHandler = new AwardsHandler(); checkInitialSidebarSize(); new Aside(); - if ($window.width() < 1024 && $.cookie('pin_nav') === 'true') { - $.cookie('pin_nav', 'false', { - path: '/', - expires: 365 * 10 - }); - $('.page-with-sidebar').toggleClass('page-sidebar-collapsed page-sidebar-expanded').removeClass('page-sidebar-pinned'); - $('.navbar-fixed-top').removeClass('header-pinned-nav'); - } - $document.off('click', '.js-nav-pin').on('click', '.js-nav-pin', function(e) { - var $page, $pinBtn, $tooltip, $topNav, doPinNav, tooltipText; - e.preventDefault(); - $pinBtn = $(e.currentTarget); - $page = $('.page-with-sidebar'); - $topNav = $('.navbar-fixed-top'); - $tooltip = $("#" + ($pinBtn.attr('aria-describedby'))); - doPinNav = !$page.is('.page-sidebar-pinned'); - tooltipText = 'Pin navigation'; - $(this).toggleClass('is-active'); - if (doPinNav) { - $page.addClass('page-sidebar-pinned'); - $topNav.addClass('header-pinned-nav'); - } else { - $tooltip.remove(); - $page.removeClass('page-sidebar-pinned').toggleClass('page-sidebar-collapsed page-sidebar-expanded'); - $topNav.removeClass('header-pinned-nav').toggleClass('header-collapsed header-expanded'); - } - $.cookie('pin_nav', doPinNav, { - path: '/', - expires: 365 * 10 - }); - if ($.cookie('pin_nav') === 'true' || doPinNav) { - tooltipText = 'Unpin navigation'; - } - $tooltip.find('.tooltip-inner').text(tooltipText); - return $pinBtn.attr('title', tooltipText).tooltip('fixTitle'); - }); + + // bind sidebar events + new gl.Sidebar(); // Custom time ago gl.utils.shortTimeAgo($('.js-short-timeago')); diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 7116512d6b..a9aec6e8ea 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -16,7 +16,7 @@ } Autosave.prototype.restore = function() { - var e, error, text; + var e, text; if (window.localStorage == null) { return; } @@ -41,7 +41,7 @@ if ((text != null ? text.length : void 0) > 0) { try { return window.localStorage.setItem(this.key, text); - } catch (undefined) {} + } catch (error) {} } else { return this.reset(); } @@ -53,7 +53,7 @@ } try { return window.localStorage.removeItem(this.key); - } catch (undefined) {} + } catch (error) {} }; return Autosave; diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 2c5b83e4f1..0decc6d09e 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -1,5 +1,6 @@ (function() { this.AwardsHandler = (function() { + const FROM_SENTENCE_REGEX = /(?:, and | and |, )/; //For separating lists produced by ruby's Array#toSentence function AwardsHandler() { this.aliases = gl.emojiAliases(); $(document).off('click', '.js-add-award').on('click', '.js-add-award', (function(_this) { @@ -85,6 +86,8 @@ AwardsHandler.prototype.positionMenu = function($menu, $addBtn) { var css, position; position = $addBtn.data('position'); + // The menu could potentially be off-screen or in a hidden overflow element + // So we position the element absolute in the body css = { top: ($addBtn.offset().top + $addBtn.outerHeight()) + "px" }; @@ -130,7 +133,7 @@ counter = $emojiButton.find('.js-counter'); counter.text(parseInt(counter.text()) + 1); $emojiButton.addClass('active'); - this.addMeToUserList(votesBlock, emoji); + this.addYouToUserList(votesBlock, emoji); return this.animateEmoji($emojiButton); } } else { @@ -176,11 +179,11 @@ counterNumber = parseInt(counter.text(), 10); if (counterNumber > 1) { counter.text(counterNumber - 1); - this.removeMeFromUserList($emojiButton, emoji); + this.removeYouFromUserList($emojiButton, emoji); } else if (emoji === 'thumbsup' || emoji === 'thumbsdown') { $emojiButton.tooltip('destroy'); counter.text('0'); - this.removeMeFromUserList($emojiButton, emoji); + this.removeYouFromUserList($emojiButton, emoji); if ($emojiButton.parents('.note').length) { this.removeEmoji($emojiButton); } @@ -204,43 +207,48 @@ return $awardBlock.attr('data-original-title') || $awardBlock.attr('data-title') || ''; }; - AwardsHandler.prototype.removeMeFromUserList = function($emojiButton, emoji) { + AwardsHandler.prototype.toSentence = function(list) { + if(list.length <= 2){ + return list.join(' and '); + } + else{ + return list.slice(0, -1).join(', ') + ', and ' + list[list.length - 1]; + } + }; + + AwardsHandler.prototype.removeYouFromUserList = function($emojiButton, emoji) { var authors, awardBlock, newAuthors, originalTitle; awardBlock = $emojiButton; originalTitle = this.getAwardTooltip(awardBlock); - authors = originalTitle.split(', '); - authors.splice(authors.indexOf('me'), 1); - newAuthors = authors.join(', '); - awardBlock.closest('.js-emoji-btn').removeData('original-title').attr('data-original-title', newAuthors); - return this.resetTooltip(awardBlock); + authors = originalTitle.split(FROM_SENTENCE_REGEX); + authors.splice(authors.indexOf('You'), 1); + return awardBlock + .closest('.js-emoji-btn') + .removeData('title') + .removeAttr('data-title') + .removeAttr('data-original-title') + .attr('title', this.toSentence(authors)) + .tooltip('fixTitle'); }; - AwardsHandler.prototype.addMeToUserList = function(votesBlock, emoji) { + AwardsHandler.prototype.addYouToUserList = function(votesBlock, emoji) { var awardBlock, origTitle, users; awardBlock = this.findEmojiIcon(votesBlock, emoji).parent(); origTitle = this.getAwardTooltip(awardBlock); users = []; if (origTitle) { - users = origTitle.trim().split(', '); + users = origTitle.trim().split(FROM_SENTENCE_REGEX); } - users.push('me'); - awardBlock.attr('title', users.join(', ')); - return this.resetTooltip(awardBlock); - }; - - AwardsHandler.prototype.resetTooltip = function(award) { - var cb; - award.tooltip('destroy'); - cb = function() { - return award.tooltip(); - }; - return setTimeout(cb, 200); + users.unshift('You'); + return awardBlock + .attr('title', this.toSentence(users)) + .tooltip('fixTitle'); }; AwardsHandler.prototype.createEmoji_ = function(votesBlock, emoji) { var $emojiButton, buttonHtml, emojiCssClass; emojiCssClass = this.resolveNameToCssClass(emoji); - buttonHtml = ""; + buttonHtml = ""; $emojiButton = $(buttonHtml); $emojiButton.insertBefore(votesBlock.find('.js-award-holder')).find('.emoji-icon').data('emoji', emoji); this.animateEmoji($emojiButton); @@ -249,12 +257,12 @@ }; AwardsHandler.prototype.animateEmoji = function($emoji) { - var className; - className = 'pulse animated'; + var className = 'pulse animated once short'; $emoji.addClass(className); - return setTimeout((function() { - return $emoji.removeClass(className); - }), 321); + + $emoji.on('webkitAnimationEnd animationEnd', function() { + $(this).removeClass(className); + }); }; AwardsHandler.prototype.createEmoji = function(votesBlock, emoji) { @@ -278,6 +286,7 @@ if (emojiIcon.length > 0) { unicodeName = emojiIcon.data('unicode-name'); } else { + // Find by alias unicodeName = $(".emoji-menu-content [data-aliases*=':" + emoji + ":']").data('unicode-name'); } return "emoji-" + unicodeName; @@ -314,6 +323,7 @@ frequentlyUsedEmojis = this.getFrequentlyUsedEmojis(); frequentlyUsedEmojis.push(emoji); return $.cookie('frequently_used_emojis', frequentlyUsedEmojis.join(','), { + path: gon.relative_url_root || '/', expires: 365 }); }; @@ -343,8 +353,10 @@ return function(ev) { var found_emojis, h5, term, ul; term = $(ev.target).val(); + // Clean previous search results $('ul.emoji-menu-search, h5.emoji-search').remove(); if (term) { + // Generate a search result block h5 = $('
').text('Search results'); found_emojis = _this.searchEmojis(term).show(); ul = $('