| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
By passing commit data to this worker we remove the need for querying
the Git repository for every job. This in turn reduces the time spent
processing each job.
The migration included migrates jobs from the old format to the new
format. For this to work properly it requires downtime as otherwise
workers may start producing errors until they're using a newer version
of the worker code.
|
| |
|
|
|
| |
Feedback:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17742312
|
| |
|
|
| |
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17742297
|
| |
|
|
| |
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17522443
|
| |
|
|
|
|
|
| |
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17397201
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17397461
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6801#note_17468470
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7034#note_17482654
|
| |
|
|
| |
Closes #23615
|
| | |
|
| |
|
|
|
| |
The initial commit doesn't have a parent, so explicitly pass the blank
SHA and handle that when calculating the position.
|
| | |
|
| |
|
|
| |
So we have raw_diffs too
|
| |
|
| |
This object will manage Gitlab::Git::Compare instances
|
| |
|
| |
Instead calling diff_collection.count use diff_collection.size which is cache on the diff_collection
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
In a PostReceive task with 697 commits (8.9 RC1 -> RC8), looking up
the commit author takes about 10% of the time. Caching this information
in RequestStore saves a few seconds from the overall processing time.
Improves #18663
|
| |
|
|
| |
Signed-off-by: Rémy Coutable <remy@rymai.me>
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A lot of git operations were being repeated, for example, to build a url
you would ask if the path was a Tree, which would call a recursive routine
in Gitlab::Git::Tree#where, then ask if the path was a Blob, which would
call a recursive routine at Gitlab::Git::Blob#find, making reference to
the same git objects several times. Now we call Rugged::Tree#path, which
allows us to determine the type of the path in one pass.
Some other minor improvement added, like saving commonly used references
instead of calculating them each time.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
unnecessary queries
`notes_with_associations` are used for `participant` declarations, but `Participable`
only really cares about the target entity project, and not the participants
projects.
`notes_with_associations` are also used in `Commit::has_been_reverted?` which
employs the reference extractor of the commit, so no references to the notes
projects are made there (`Mentionable::all_references` cares only about the
`author` and other `attr_mentionable`). A paralel situation occurs on
`Issue::referenced_merge_requests`.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are several changes to this module:
1. The use of an explicit stack in Participable#participants
2. Proc behaviour has been changed
3. Batch permissions checking
== Explicit Stack
Participable#participants no longer uses recursion to process "self" and
all child objects, instead it uses an Array and processes objects in
breadth-first order. This allows us to for example create a single
Gitlab::ReferenceExtractor instance and pass this to any Procs. Re-using
a ReferenceExtractor removes the need for running potentially many SQL
queries every time a Proc is called on a new object.
== Proc Behaviour Changed
Previously a Proc in Participable was expected to return an Array of
User instances. This has been changed and instead it's now expected that
a Proc modifies the Gitlab::ReferenceExtractor passed to it. The return
value of the Proc is ignored.
== Permissions Checking
The method Participable#participants uses
Ability.users_that_can_read_project to check if the returned users have
access to the project of "self" _without_ running multiple SQL queries
for every user.
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Ci::Commit becomes a Pipeline object
1. Ci::Commit receives context: ref, :tag.
1. One Ci::Commit describes a one Pipeline
1. Pipeline is created from `.gitlab-ci.yml`
1. Pipeline is a ordered group of builds
1. We test MR against Pipeline
1. Pipelines have a separate view (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3703)
1. Pipeline can be triggered from UI (https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3703)
1. Later we change `Trigger -> TriggerRequest -> Build` to `Trigger -> Pipeline` (future)
1. We add a Pipeline Hook that will be triggered on Pipeline status change (future)
1. We extend notifications to use `Pipeline Hook` to send summary on pipeline changes (future)
After merging that I'll prepare a separate MR that will unify naming, database columns, table names:
```
Ci::Commit -> Pipeline
Ci::Build -> Build
CommitStatus -> Job
GenericCommitStatus -> ExternalJob
ci_commits -> pipelines
ci_builds -> jobs
```
This MR implements first 5 points.
This is made to solve this issue https://gitlab.com/gitlab-org/gitlab-ce/issues/14149.
See merge request !3653
|
| | |\
| | |
| | |
| | |
| | | |
# Conflicts:
# db/schema.rb
|
| | |\ \ |
|
| | | | | |
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Define constants only if not defined yet and freeze them
Fixes #15139.
See merge request !3810
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Rémy Coutable <remy@rymai.me>
|
| | | |_|/
| |/| |
| | | |
| | | | |
Signed-off-by: Rémy Coutable <remy@rymai.me>
|
| |/ / /
| | |
| | |
| | |
| | | |
Issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/12785
Merge Request: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/3514
|
| | |/
|/|
| |
| | |
Signed-off-by: Rémy Coutable <remy@rymai.me>
|
| |/ |
|
| |
|
|
|
| |
These methods are called quite often in loops so by memoizing their
output we can reduce timings a bit.
|
| | |
|
| | |
|
| |
|
|
| |
description
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
* Now it's only created when user choose to create a MR and
logic to hide it is handled by https://gitlab.com/gitlab-org/gitlab-ce/blob/50595af7b0e304f16e2955109abd2d25cd96efda/app/helpers/application_helper.rb#L139
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This is the git default and will help to prevent false positive matches.
Closes #12706
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
# Conflicts:
# spec/lib/gitlab/markdown/autolink_filter_spec.rb
# spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
# spec/lib/gitlab/markdown/commit_reference_filter_spec.rb
# spec/lib/gitlab/markdown/cross_project_reference_spec.rb
# spec/lib/gitlab/markdown/emoji_filter_spec.rb
# spec/lib/gitlab/markdown/external_issue_reference_filter_spec.rb
# spec/lib/gitlab/markdown/external_link_filter_spec.rb
# spec/lib/gitlab/markdown/issue_reference_filter_spec.rb
# spec/lib/gitlab/markdown/label_reference_filter_spec.rb
# spec/lib/gitlab/markdown/merge_request_reference_filter_spec.rb
# spec/lib/gitlab/markdown/redactor_filter_spec.rb
# spec/lib/gitlab/markdown/reference_gatherer_filter_spec.rb
# spec/lib/gitlab/markdown/relative_link_filter_spec.rb
# spec/lib/gitlab/markdown/sanitization_filter_spec.rb
# spec/lib/gitlab/markdown/snippet_reference_filter_spec.rb
# spec/lib/gitlab/markdown/syntax_highlight_filter_spec.rb
# spec/lib/gitlab/markdown/table_of_contents_filter_spec.rb
# spec/lib/gitlab/markdown/task_list_filter_spec.rb
# spec/lib/gitlab/markdown/upload_link_filter_spec.rb
# spec/lib/gitlab/markdown/user_reference_filter_spec.rb
|
| | | |
|