Commit Graph

4878 Commits

Author SHA1 Message Date
Ahmad Sherif daa0137b41 Migrate force push check to Gitaly 2017-08-11 19:42:17 +02:00
Bob Van Landuyt 2ea8442ff3 Move the personal snippet uploads from `system` to `-/system`
Update the markdown unconditionally since the move might have been
done before, but the markdown not updated.
2017-08-11 18:17:45 +02:00
Robert Speicher d0622b79d8 Better categorize test coverage results
Also marks a few things as uncovered, and removes an unused class.
2017-08-11 10:59:11 -04:00
Sean McGivern e80a893ff0 Merge branch 'split-events-into-push-events' into 'master'
Use a separate table for storing push events

See merge request !12463
2017-08-11 14:40:03 +00:00
Sean McGivern d2315054e6 Fix merge request diff deserialisation when too_large was absent
Not all diffs in st_diffs had the too_large attribute set at all, but the column
is non-nullable. Explicitly cast to boolean to avoid that problem.
2017-08-11 11:58:36 +01:00
Sean McGivern 2f35428c72 Merge branch 'gitlab-git-expose-raw-log' into 'master'
Expose the raw_log method

See merge request !13434
2017-08-11 10:11:01 +00:00
Alexis Reigel 6cd9888f6f store gpg return directory locally 2017-08-11 08:38:42 +02:00
James Edwards-Jones b296921681 Merge branch 'rs-alphanumeric-ssh-params' into 'security-9-4'
Ensure user and hostnames begin with an alnum character in UrlBlocker

See merge request !2138
2017-08-10 20:47:28 +01:00
James Edwards-Jones 334915d508 Merge branch 'import-symlinks-9-3' into 'security-9-3'
Fix file disclosure via hidden symlinks using the project import (9.3)

See merge request !2164
2017-08-10 20:42:01 +01:00
Yorick Peterse aac1de46c9
Use a specialized class for querying events
This changes various controllers to use the new EventCollection class
for retrieving events. This class uses a JOIN LATERAL query on
PostgreSQL to retrieve queries in a more efficient way, while falling
back to a simpler / less efficient query for MySQL.

The EventCollection class also includes a limit on the number of events
to display to prevent malicious users from cycling through all events,
as doing so could put a lot of pressure on the database.

JOIN LATERAL is only supported on PostgreSQL starting with version 9.3.0
and as such this optimisation is only used when using PostgreSQL 9.3 or
newer.
2017-08-10 17:45:49 +02:00
Yorick Peterse 0395c47193
Migrate events into a new format
This commit migrates events data in such a way that push events are
stored much more efficiently. This is done by creating a shadow table
called "events_for_migration", and a table called "push_event_payloads"
which is used for storing push data of push events. The background
migration in this commit will copy events from the "events" table into
the "events_for_migration" table, push events in will also have a row
created in "push_event_payloads".

This approach allows us to reclaim space in the next release by simply
swapping the "events" and "events_for_migration" tables, then dropping
the old events (now "events_for_migration") table.

The new table structure is also optimised for storage space, and does
not include the unused "title" column nor the "data" column (since this
data is moved to "push_event_payloads").

== Newly Created Events

Newly created events are inserted into both "events" and
"events_for_migration", both using the exact same primary key value. The
table "push_event_payloads" in turn has a foreign key to the _shadow_
table. This removes the need for recreating and validating the foreign
key after swapping the tables. Since the shadow table also has a foreign
key to "projects.id" we also don't have to worry about orphaned rows.

This approach however does require some additional storage as we're
duplicating a portion of the events data for at least 1 release. The
exact amount is hard to estimate, but for GitLab.com this is expected to
be between 10 and 20 GB at most. The background migration in this commit
deliberately does _not_ update the "events" table as doing so would put
a lot of pressure on PostgreSQL's auto vacuuming system.

== Supporting Both Old And New Events

Application code has also been adjusted to support push events using
both the old and new data formats. This is done by creating a PushEvent
class which extends the regular Event class. Using Rails' Single Table
Inheritance system we can ensure the right class is used for the right
data, which in this case is based on the value of `events.action`. To
support displaying old and new data at the same time the PushEvent class
re-defines a few methods of the Event class, falling back to their
original implementations for push events in the old format.

Once all existing events have been migrated the various push event
related methods can be removed from the Event model, and the calls to
`super` can be removed from the methods in the PushEvent model.

The UI and event atom feed have also been slightly changed to better
handle this new setup, fortunately only a few changes were necessary to
make this work.

== API Changes

The API only displays push data of events in the new format. Supporting
both formats in the API is a bit more difficult compared to the UI.
Since the old push data was not really well documented (apart from one
example that used an incorrect "action" nmae) I decided that supporting
both was not worth the effort, especially since events will be migrated
in a few days _and_ new events are created in the correct format.
2017-08-10 17:45:44 +02:00
Kim "BKC" Carlbäcker 7b10885046 Migrate Git::Repository.ls_files to Gitaly 2017-08-10 16:10:47 +02:00
Jacob Vosmaer 11eda5c255 Rename RPC 'Exists' to 'RepositoryExists' 2017-08-09 18:12:29 +02:00
Rémy Coutable 04c328f923 Fix ee_compat_check when EE branch uses a prefix
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-08-09 16:49:44 +02:00
Jacob Vosmaer b21539cc57 Expose the raw_log method 2017-08-09 15:37:05 +02:00
Rémy Coutable c946ee1282
Enable the Layout/SpaceBeforeBlockBraces cop
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-08-09 11:52:22 +02:00
Brian Neel 9770c57fab Re-enable SqlInjection and CommandInjection 2017-08-08 10:50:54 -04:00
Dmitriy Zaporozhets 1439115183 Merge branch 'gitaly-find-commit' into 'master'
Incorporate Gitaly's CommitService.FindCommit RPC

Closes gitaly#402

See merge request !13094
2017-08-08 14:27:22 +00:00
Lin Jen-Shin 8e2350ae95 Raise encoding confidence threshold to 50
It is recommended that we set this to 50:
https://gitlab.com/gitlab-org/gitlab-ce/issues/35098#note_35036746

In this particular issue, the confidence was 42 for Shift JIS,
but in fact that's encoded in UTF-8 just with a single bad
character. In this case, we shouldn't try to treat it as Shift JIS,
but just treat it as UTF-8 and remove invalid bytes.

Treating it like Shift JIS would corrupt the whole data.

Unfortunately, the diff which would cause this could not be
disclosed therefore we can't use it as a test example.
2017-08-08 19:09:56 +08:00
Alejandro Rodríguez 3ce6f03f14 Incorporate Gitaly's CommitService.FindCommit RPC 2017-08-07 23:33:43 -04:00
Alejandro Rodríguez e363fbf71a Move `deltas` and `diff_from_parents` logic to Gitlab::Git::Commit
This helps keep the abstraction layers simpler, and also keep the
interface of those methods consistent, in case of implementation
changes.
2017-08-07 23:33:40 -04:00
Alejandro Rodríguez c21ae07e33 Refactor Gitlab::Git::Commit to include a repository 2017-08-07 22:34:34 -04:00
Stan Hu fd40bce9cc Merge branch '31207-clean-locked-merge-requests' into 'master'
Resolve "Store MergeWorker JID on merge request, and clean up stuck merges"

Closes #31207

See merge request !13207
2017-08-08 01:47:48 +00:00
Oswaldo Ferreira a0c22d1eda Exclude merge_jid on Import/Export attribute configuration 2017-08-07 20:04:16 -03:00
Robert Speicher 475f41acd4 Merge branch 'feature/migrate-find-commits-by-message-to-gitaly' into 'master'
Migrate Repository#find_commits_by_message to Gitaly

Closes gitaly#443

See merge request !13268
2017-08-07 21:33:45 +00:00
Robert Speicher 6085ce1352 Merge branch 'feature/migrate-repository-size-to-gitaly' into 'master'
Migrate Gitlab::Git::Repository#size to Gitaly

Closes gitaly#437

See merge request !13259
2017-08-07 21:29:32 +00:00
Sean McGivern f9c6ff7508 Merge branch 'backport-ee-2251' into 'master'
Backport changes in https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2551 to CE

Closes #21391

See merge request !13275
2017-08-07 20:04:21 +00:00
Douwe Maan 942bd5b411 Merge branch 'blob-batch-methods' into 'master'
Add Gitlab::Git::Blob.batch method

See merge request !13225
2017-08-07 19:57:25 +00:00
Robert Speicher dd3d422193 Merge branch 'github' into 'master'
Improve GitHub importer

Closes #27429

See merge request !12886
2017-08-07 19:27:42 +00:00
Sean McGivern 4c8b666893 Merge branch 'zj-project-templates' into 'master'
Allow projects to be started from a template

Closes #32420

See merge request !13108
2017-08-07 19:24:14 +00:00
Sean McGivern bc648ae5d2 Merge branch 'gitlab-git-repository-log-options' into 'master'
Set default options outside the raw_log method

See merge request !13346
2017-08-07 19:06:46 +00:00
Nick Thomas da5262f4e6 Backport changes in https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2551 to CE 2017-08-07 19:17:11 +01:00
Paweł Chojnacki 746f0ec367 Add sidekiq metrics endpoint and add http server to sidekiq 2017-08-07 17:13:02 +00:00
Ahmad Sherif c0b41064ff Migrate Repository#find_commits_by_message to Gitaly
Closes gitaly#443
2017-08-07 18:57:06 +02:00
Ahmad Sherif c4f55ce32d Migrate Gitlab::Git::Repository#size to Gitaly
Closes gitaly#437
2017-08-07 18:53:32 +02:00
Douglas Barbosa Alexandre 29d380b03c Set the new GitHub import as import source 2017-08-07 13:06:13 -03:00
Jacob Vosmaer f278e5fb3e Set default options outside the raw_log method
The raw_log method is meant to become the Gitaly RPC boundary. By
setting the defaults before doing the RPC we keep the RPC
implementation simpler. We also sidestep the unfortunate subtleties of
what happens when options[:limit] is not set, or nil.
2017-08-07 18:05:06 +02:00
Rémy Coutable 66e7b4cd07 Merge branch 'add-star-for-action-scope' into 'master'
add star for action scope, in order to delete image from registry

Closes #26465

See merge request !13248
2017-08-07 15:39:19 +00:00
Sean McGivern 5bf65c9306 Merge branch 'bvl-nfs-circuitbreaker' into 'master'
Circuitbreaker for storage paths

Closes #32207, #33117, gitlab-com/infrastructure#1946, and gitlab-com/infrastructure#1775

See merge request !11449
2017-08-07 14:56:15 +00:00
Jacob Vosmaer 29a1c5a126 Rename 'limit' to 'blob_size_limit' 2017-08-07 16:26:50 +02:00
Bob Van Landuyt fda83a6179 Use correct `Environment`-class within `Gitlab` namespace 2017-08-07 15:54:30 +02:00
Tiago Botelho aae947cb1c
Fixes race condition in project uploads
Originally picked as: 3fc0dbcbeb. But
given the internals changed, this was changed now. The changelog was
removed too.
2017-08-07 14:31:45 +02:00
Filipa Lacerda 3b9012871d Merge branch 'master' into zj-project-templates
* master: (623 commits)
  Fix issues with pdf-js dependencies
  fix missing changelog entries for security release on 2017-01-23
  Update top bar issues icon
  Fix pipeline icon in contextual nav for projects
  Since mysql is not a priority anymore, test it less
  Fix order of CI lint ace editor loading
  Add container registry and spam logs icons
  Fix different Markdown styles
  Backport to CE for:
  Make new dropdown dividers full width
  Fix spec
  Fix spec
  Fix spec
  Bump GITLAB_SHELL_VERSION and GITALY_VERSION to support unhiding refs
  Add changelog
  Install yarn via apt in update guides
  Use long curl options
  fix
  Add a spec for concurrent process
  Remove monkey-patched Array.prototype.first() and last() methods
  ...
2017-08-07 11:09:50 +01:00
Huang Tao 0732b974fa Add Korean translation to i18n 2017-08-07 09:19:41 +00:00
Douwe Maan 727b6d16e5 Merge branch 'master' into 'bvl-nfs-circuitbreaker'
# Conflicts:
#   app/models/repository.rb
#   spec/models/repository_spec.rb
2017-08-07 09:13:10 +00:00
Sean McGivern 9b21668663 Merge branch 'gitaly-renames-annotations' into 'master'
Gitaly deletions and annotations

See merge request !13280
2017-08-07 08:40:53 +00:00
Lin Jen-Shin b9a8147333 Merge remote-tracking branch 'upstream/master' into add-star-for-action-scope
* upstream/master: (184 commits)
  Fix issues with pdf-js dependencies
  fix missing changelog entries for security release on 2017-01-23
  Update top bar issues icon
  Fix pipeline icon in contextual nav for projects
  Since mysql is not a priority anymore, test it less
  Fix order of CI lint ace editor loading
  Add container registry and spam logs icons
  Fix different Markdown styles
  Backport to CE for:
  Make new dropdown dividers full width
  Fix spec
  Fix spec
  Fix spec
  Bump GITLAB_SHELL_VERSION and GITALY_VERSION to support unhiding refs
  Add changelog
  Install yarn via apt in update guides
  Use long curl options
  fix
  Add a spec for concurrent process
  Remove monkey-patched Array.prototype.first() and last() methods
  ...
2017-08-07 16:19:28 +08:00
Tim Zallmann 9b93508028 Merge branch '27616-fix-contributions-graph-utc-offset-mysql' into 'master'
Fix Timezone Inconsistencies in User Contribution Calendar

Closes #27616 and #1943

See merge request !13208
2017-08-06 05:57:49 +00:00
Robert Speicher e299d595c7 Merge branch 'feature/migrate-last-commit-for-path-to-gitaly' into 'master'
Migrate Repository#last_commit_for_path to Gitaly

Closes gitaly#433

See merge request !13200
2017-08-04 15:46:36 +00:00
Bob Van Landuyt 4b34720c0c Use ruby's `File.stat` to check storage availability 2017-08-04 15:38:50 +02:00
Bob Van Landuyt 3a2aaed881 Use a Struct to keep track of failure info 2017-08-04 15:38:50 +02:00
Bob Van Landuyt 0dd4c306ca Only track accessibility once 2017-08-04 15:38:50 +02:00
Bob Van Landuyt 022c38e63e Use `keys` instead of `scan_each` 2017-08-04 15:38:49 +02:00
Bob Van Landuyt 3899d07f9e Move hostname to Gitlab::Environment 2017-08-04 15:38:49 +02:00
Bob Van Landuyt 0fa94a0ddd Make sure the check works for paths with spaces. 2017-08-04 15:38:49 +02:00
Bob Van Landuyt 3598e60bf2 Add a Circuitbreaker for storage paths 2017-08-04 15:38:48 +02:00
Ahmad Sherif f81c07eacc Migrate Repository#last_commit_for_path to Gitaly
Closes gitaly#433
2017-08-03 19:26:46 +02:00
Ahmad Sherif 03440eed20 Migrate blame loading to Gitaly
Closes gitaly#421
2017-08-03 19:20:46 +02:00
Robert Speicher 8f9b658e3a Merge branch 'feature/migrate-count-commits-to-gitaly' into 'master'
Migrate Gitlab::Git::Repository#count_commits to Gitaly

Closes gitaly#415

See merge request !13121
2017-08-03 15:25:03 +00:00
Jacob Vosmaer 25a6a0725c Migration link for Repository#log 2017-08-03 16:48:11 +02:00
Rémy Coutable 2a73be5161 Merge branch 'merge-request-commits-background-migration' into 'master'
Merge request commits background migration

See merge request !12685
2017-08-03 14:41:58 +00:00
Jacob Vosmaer 00c9c6b458 Remove unused methods 2017-08-03 16:03:37 +02:00
Jacob Vosmaer 3a8f4a3460 Remove unnecessary 'raw' alias 2017-08-03 15:52:14 +02:00
Jacob Vosmaer 29a07fd3a1 Rename 'commits_between' to 'rugged_commits_between' 2017-08-03 15:48:10 +02:00
Sean McGivern 27d34789c9 Merge branch '28472-ignore-auto-generated-mails' into 'master'
Don't send rejection mails for all auto-generated mails

Closes #28472

See merge request !13254
2017-08-03 12:41:16 +00:00
Sean McGivern f2d50af917 Migrate MR commits and diffs to new tables
Previously, we stored these as serialised fields - `st_{commits,diffs}` - on the
`merge_request_diffs` table. These now have their own tables -
`merge_request_diff_{commits,diffs}` - with a column for each attribute of the
serialised data.

Add a background migration to go through the existing MR diffs and migrate them
to the new format. Ignore any contents that cannot be displayed. Assuming that
we have 5 million rows to migrate, and each batch of 2,500 rows can be
completed in 5 minutes, this will take about 7 days to migrate everything.
2017-08-03 13:20:26 +01:00
Lin Jen-Shin 86e1f41b83 Check against "Auto-Submitted: no" instead
This would be much more accurate. We assume this is an
auto-generated email if such header is provided, and
the value is not "no". It could also be: "auto-generated",
"auto-replied", or other values from extension. It seems
that only "no" could mean that this is sent by a human.

See: https://tools.ietf.org/html/rfc3834
2017-08-03 19:29:18 +08:00
Lin Jen-Shin f097e4dbcd Don't send rejection mails for all auto-generated mails
Also make it easier to have mailer helper
2017-08-03 00:40:10 +08:00
Rémy Coutable 42aa9311be Merge branch 'handle-reserved-words-for-oauth-usernames' into 'master'
Uniquify reserved word usernames on OAuth user creation

See merge request !13244
2017-08-02 14:46:32 +00:00
Robin Bobbitt 71951fc38c Uniquify reserved word usernames on OAuth user creation 2017-08-02 09:40:49 -04:00
Sean McGivern 30413fd2ff Merge branch 'rugged-is-ancestor' into 'master'
Add rugged_is_ancestor method

See merge request !13232
2017-08-02 09:57:06 +00:00
Lin Jen-Shin b3e058996c Cleanup tests and add admin_container_image to
full_authentication_abilities. This is fine because
we're going to check with can?(..) anyway
2017-08-02 17:51:29 +08:00
Douwe Maan c327affc61 Merge branch 'pawel/add_more_variables_to_additional_metrics-35267' into 'master'
Add kube_namespace and standardize common variables for additional metrics queries

See merge request !13169
2017-08-02 09:09:53 +00:00
Ahmad Sherif 215e0911e5 Migrate Gitlab::Git::Repository#count_commits to Gitaly
Closes gitaly#415
2017-08-02 00:33:04 +02:00
Pawel Chojnacki ba97a42193 Remove default arguments for common query context 2017-08-01 22:11:59 +02:00
Pawel Chojnacki feb94e8ea3 Move timeframe_start and timeframe_end to common query context 2017-08-01 21:51:53 +02:00
Pawel Chojnacki b243c3ea78 Give metric query context rspec examples correctly sounding names. + missing whitespace 2017-08-01 20:28:25 +02:00
Jacob Vosmaer d3ddc69b54 Add rugged_is_ancestor method 2017-08-01 17:24:37 +02:00
Sean McGivern c7583e72f9 Merge branch 'rc/fetch-before-finding-merge-base-in-ee_compat_check' into 'master'
Always fetch branches before finding the merge base, otherwise we could find an outdated merge base

See merge request !13226
2017-08-01 13:00:05 +00:00
Z.J. van de Weg 3baf3dc955
Rename GitLabProjectImporterService and misc fixes
First round of review, main changes:
- templates.title is human readable, #name will be passed around
- GitLabProjectImporterService has been renamed
2017-08-01 14:36:42 +02:00
Filipa Lacerda a853d3e944 [ci skip] Adds svgs and css for all icons 2017-08-01 13:25:52 +01:00
Sean McGivern 90cb2aab38 Merge branch '28283-legacy-storage-format' into 'master'
[CE] Added Legacy Storage format

See merge request !13149
2017-08-01 12:24:24 +00:00
Rémy Coutable 4fa83bbe90
Always fetch branches before finding the merge base, otherwise we could find an outdated merge base
Signed-off-by: Rémy Coutable <remy@rymai.me>
2017-08-01 13:52:44 +02:00
Jacob Vosmaer 5e20e448ce Add Gitlab::Git::Blob.batch method 2017-08-01 13:49:57 +02:00
Sean McGivern 5343b3ef57 Merge branch 'gitaly-commit-languages' into 'master'
Add option to use Gitaly CommitLanguages RPC

See merge request !13084
2017-08-01 11:22:53 +00:00
Z.J. van de Weg 09974de3e3
Create rake task to create project templates
First iteration, and some stuff is missing. But basically this rake task
does a clone of a project we've pointed it to. Than creates a project on
the GDK, which should be running in the background. This project is
exported, after which we move that archive to the location we need it.
We clean up by removing the generated project.

The first idea was to export the project on .com too, however than we
might run into ImportExport versions mismatch. This could've been
circumvented by checkout out an older commit locally. This however is
not needed yet, so we opted to not go this route yet, instead we will
iterate on what we got.
2017-08-01 13:00:51 +02:00
Douwe Maan c8a8d13dbb Merge branch 'remove-content-commit' into 'master'
Remove unused Gitlab::Diff code

See merge request !13195
2017-08-01 10:40:36 +00:00
Jacob Vosmaer 67de82cf5f Add option to use CommitLanguages RPC 2017-08-01 10:48:46 +02:00
Gabriel Mazetto 07b574b41c Added some extra TODOs for the Legacy Storage refactor 2017-08-01 07:28:13 +02:00
Gabriel Mazetto fb06a4d8fe Rename more path_with_namespace -> full_path or disk_path 2017-08-01 07:28:13 +02:00
Gabriel Mazetto c6dee99803 Rename path_with_namespace -> disk_path when dealing with the filesystem 2017-08-01 07:26:58 +02:00
Gabriel Mazetto abb878326c Rename many path_with_namespace -> full_path 2017-08-01 07:26:58 +02:00
Mike Greiling 08c513b6d9 fix rubocop violations 👮 2017-07-31 18:19:18 -05:00
Mike Greiling 1b9b6974fd fix mysql syntax for date INTERVAL arithmatic 2017-07-31 17:36:47 -05:00
Kamil Trzciński 0b0d04b4db Merge branch 'fix/gb/fix-chatops-deploy-multiple-actions-matching' into 'master'
Improve deploy environment chatops slash command

Closes #34748

See merge request !13150
2017-07-31 15:28:07 +00:00
Jacob Vosmaer 7b18c42464 Remove unused (?) code 2017-07-31 17:19:25 +02:00
Pawel Chojnacki 6df5bd8b84 Context handling and tests cleanup + simple test kube_namespace context test 2017-07-31 16:32:26 +02:00
Pawel Chojnacki ce83e5635d add kube_namespace and standardize common variables for additional metrics queries 2017-07-31 16:32:26 +02:00
Rémy Coutable 0d52e59de4 Merge branch '29385/add_shrug_command' into 'master'
Fixes #29385: Add /shrug and /tableflip commands

Closes #29385

See merge request !10068
2017-07-31 14:02:00 +00:00
Sean McGivern a628d39599 Merge branch 'dm-ldap-authentication-ssl-verification' into 'master'
Pass OmniAuth formatted options to OmniAuth::LDAP::Adaptor

Closes #35752

See merge request !13185
2017-07-31 10:56:23 +00:00