Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Fix bug where manually merged branches in a MR would end up with an empty diff
This bug manifested in 8.1 with the refactoring of `RefreshService`. Here's what happens:
1. User create a new branch `foo`.
2. User creates a merge request for `foo`.
3. User merges `foo` into `master` by hand.
4. `RefreshService` reloads the merge request. Since `master` is equivalent to `foo`, this results in an empty diff.
5. `RefreshService` then closes the MR.
This wasn't an issue when you use the normal "Accept Merge Request" flow because the act of clicking the button closes the merge request, so step 4 never happens.
Closes #3314
See merge request !1758
|
|
|
|
|
|
- Add page titles to CI settings.
- Fix CI admin navigation.
- Remove duplicated scope.
- Use monospace font for commit sha.
- Add page title and header title to build page.
- Proper authorization for cancel/retry builds.
- Use gitlab pagination theme for builds and group members.
- Don't paginate builds widget on build page.
- Add badges to commit page Changes/Builds tabs.
- Add "Builds" to commit Builds tab page title.
- Add and use Ci::Build#retryable? method.
- Add CI::Build#retried? method.
- Allow all failed commit builds to be retried.
- Proper authorization for cancel/retry all builds.
- Remove unused param.
- Use time_ago_with_tooltip where appropriate.
- Tweak builds index text
- Remove duplication between builds/build and commit_statuses/commit_status.
- Use POST rather than GET for canceling and retrying builds.
- Remove redundant URL helpers.
- Add build ID to build page.
- Link branch name on build page.
- Move commit/:sha/ci to commit/:sha/builds.
|
|
|
|
Replace all usages of `git` command with configurable binary path
Closes #3311
See merge request !1742
|
|
Improve performance of creating projects
See merge request !1650
|
|
Remove duplicate orders
This changes the default order from `created_at DESC, id DESC` to just `id DESC` as this achieves the same results without the overhead of having to sort data twice (we've seen queries go from 200ms to just a few ms by removing the double sort).
cc @jacobvosmaer @dzaporozhets @rspeicher @DouweM
See merge request !1735
|
|
Closes #3311
|
|
Cleanup stuck CI builds
Fixes #3143
/cc @dzaporozhets @jacobvosmaer
See merge request !1655
|
|
|
|
Extend yml syntax for only and except to support specifying repository path
This allows to limit execution of jobs to specific repository.
For example:
```yaml
job:
only:
- branches@gitlab-org/gitlab-ce
except:
- master@gitlab-org/gitlab-ce
```
The above will run `job` for all branches on `gitlab-org/gitlab-ce`, except master.
@dzaporozhets @JobV @vsizov Please review.
See merge request !1720
|
|
|
|
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
|
|
The descriptions were not accurate and one particular spec seemingly
expected the wrong User row to be returned.
|
|
This benchmark exists to test if ordering has any noticeable impact in
the test environment.
|
|
|
|
|
|
|
|
Add ability to fetch the commit ID of the last commit that actually touched a file
https://dev.gitlab.org/gitlab/gitlabhq/issues/2564
See merge request !1718
|
|
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
|
|
a file
|
|
|
|
Reduce disk IO and space usage during backups
This is based on improvements made to the GitLab CI 8.0 backup script.
- Avoid creating many small intermediate files while backing up builds and uploads by using tar and light gzip compression
- Use same backup/restore code for uploads and builds
- Only store a compressed intermediate DB dump
See merge request !1520
|
|
Add custom protocol whitelisting to SanitizationFilter
Addresses internal https://dev.gitlab.org/gitlab/gitlabhq/issues/2613
We allow any protocol for autolinks: irc://irc.freenode.net/git
But manual Markdown links with the same protocol get sanitized: `[This will not be clickable](irc://irc.freenode.net/git)`: [This will not be clickable](irc://irc.freenode.net/git)
To get around this we have to first allow *all* protocols, and then manually clean dangerous (i.e., `javascript:`) protocols.
See merge request !1496
|
|
While these benchmarks run at roughly 1500 i/sec setting the threshold
to 1000 leaves some room for deviations (e.g. due to different DB
setups).
|
|
This query used to rely on a JOIN, effectively producing the following
SQL:
SELECT users.*
FROM users
LEFT OUTER JOIN emails ON emails.user_id = users.id
WHERE (users.email = X OR emails.email = X)
LIMIT 1;
The use of a JOIN means having to scan over all Emails and users, join
them together and then filter out the rows that don't match the criteria
(though this step may be taken into account already when joining).
In the new setup this query instead uses a sub-query, producing the
following SQL:
SELECT *
FROM users
WHERE id IN (select user_id FROM emails WHERE email = X)
OR email = X
LIMIT 1;
This query has the benefit that it:
1. Doesn't have to JOIN any rows
2. Only has to operate on a relatively small set of rows from the
"emails" table.
Since most users will only have a handful of Emails associated
(certainly not hundreds or even thousands) the size of the set returned
by the sub-query is small enough that it should not become problematic.
Performance of the old versus new version can be measured using the
following benchmark:
# Save this in ./bench.rb
require 'benchmark/ips'
email = 'yorick@gitlab.com'
def User.find_by_any_email_old(email)
user_table = arel_table
email_table = Email.arel_table
query = user_table.
project(user_table[Arel.star]).
join(email_table, Arel::Nodes::OuterJoin).
on(user_table[:id].eq(email_table[:user_id])).
where(user_table[:email].eq(email).or(email_table[:email].eq(email)))
find_by_sql(query.to_sql).first
end
Benchmark.ips do |bench|
bench.report 'original' do
User.find_by_any_email_old(email)
end
bench.report 'optimized' do
User.find_by_any_email(email)
end
bench.compare!
end
Running this locally using "bundle exec rails r bench.rb" produces the
following output:
Calculating -------------------------------------
original 1.000 i/100ms
optimized 93.000 i/100ms
-------------------------------------------------
original 11.103 (± 0.0%) i/s - 56.000
optimized 948.713 (± 5.3%) i/s - 4.743k
Comparison:
optimized: 948.7 i/s
original: 11.1 i/s - 85.45x slower
In other words, the new setup is 85x faster compared to the old setup,
at least when running this benchmark locally.
For GitLab.com these improvements result in User.find_by_any_email
taking only ~170 ms to run, instead of around 800 ms. While this is
"only" an improvement of about 4.5 times (instead of 85x) it's still
significantly better than before.
Fixes #3242
|
|
This benchmark currently runs at ~0.6 iterations per second and is
unlikely to perform any better any time soon.
|
|
|
|
test (and thus system) expectations.
|
|
|
|
|
|
|
|
Include the log messages of recent commits in project-level search
results, providing functionality similar to 'git log --grep'.
Update repository model rspec tests to validate the output of
Repository#commits_with_log_matching.
|
|
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
|
|
The previous code relied on having on ref stored in commit, however the ref was moved to the build.
|
|
|
|
Fix cloning Wiki repositories via HTTP
Cloning a project Wiki over HTTP would end up cloning the main repository
since the .wiki extension was being stripped.
Closes #3106
See merge request !1676
|
|
Fix: Inability to reply to code comments in the MR view, if the MR comes from a fork
https://dev.gitlab.org/gitlab/gitlabhq/issues/2535
See merge request !1675
|
|
huacnlee/fix/api-helpers-bad-autoload-name-for-master
Fix API::APIHelpers -> API::Helpers again for master
|
|
Rails Autoload find file to require is use , APIHelpers -> api_helpers.rb, not helpers.rb;
|
|
|
|
from a fork
|
|
Prefer project with exact path to differently cased one when both exist.
Fixes #3113.
See merge request !1649
|
|
|
|
|
|
|