Commit 7aa5df69 authored by GitLab Bot's avatar GitLab Bot

Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-02-22

# Conflicts:
#	app/assets/javascripts/dispatcher.js
#	app/uploaders/personal_file_uploader.rb
#	doc/user/project/milestones/index.md

[ci skip]
parents 27a77b8b f330f659
......@@ -60,6 +60,7 @@ var Dispatcher;
case 'projects:find_file:show':
case 'projects:blob:show':
case 'projects:blame:show':
<<<<<<< HEAD
shortcut_handler = true;
break;
case 'projects:tree:show':
......@@ -98,79 +99,13 @@ var Dispatcher;
.then(callDefault)
.catch(fail);
break;
=======
>>>>>>> upstream/master
case 'projects:network:show':
// Ensure we don't create a particular shortcut handler here. This is
// already created, where the network graph is created.
shortcut_handler = true;
break;
case 'projects:forks:new':
import('./pages/projects/forks/new')
.then(callDefault)
.catch(fail);
break;
case 'projects:artifacts:browse':
import('./pages/projects/artifacts/browse')
.then(callDefault)
.catch(fail);
shortcut_handler = true;
break;
case 'projects:artifacts:file':
import('./pages/projects/artifacts/file')
.then(callDefault)
.catch(fail);
shortcut_handler = true;
break;
case 'search:show':
import('./pages/search/show')
.then(callDefault)
.catch(fail);
break;
case 'projects:settings:repository:show':
import('./pages/projects/settings/repository/show')
.then(callDefault)
.catch(fail);
break;
case 'projects:settings:ci_cd:show':
import('./pages/projects/settings/ci_cd/show')
.then(callDefault)
.catch(fail);
break;
case 'groups:settings:ci_cd:show':
import('./pages/groups/settings/ci_cd/show')
.then(callDefault)
.catch(fail);
break;
case 'ci:lints:create':
case 'ci:lints:show':
import('./pages/ci/lints')
.then(callDefault)
.catch(fail);
break;
case 'admin:conversational_development_index:show':
import('./pages/admin/conversational_development_index/show')
.then(callDefault)
.catch(fail);
break;
case 'import:fogbugz:new_user_map':
import('./pages/import/fogbugz/new_user_map')
.then(callDefault)
.catch(fail);
break;
case 'profiles:personal_access_tokens:index':
import('./pages/profiles/personal_access_tokens')
.then(callDefault)
.catch(fail);
break;
case 'admin:impersonation_tokens:index':
import('./pages/admin/impersonation_tokens')
.then(callDefault)
.catch(fail);
break;
case 'dashboard:groups:index':
import('./pages/dashboard/groups/index')
.then(callDefault)
.catch(fail);
break;
}
switch (path[0]) {
case 'admin':
......
import UserCallout from '../../../../user_callout';
import UserCallout from '~/user_callout';
export default () => new UserCallout();
document.addEventListener('DOMContentLoaded', () => new UserCallout());
import DueDateSelectors from '../../../due_date_select';
import DueDateSelectors from '~/due_date_select';
export default () => new DueDateSelectors();
document.addEventListener('DOMContentLoaded', () => new DueDateSelectors());
import CILintEditor from '../ci_lint_editor';
document.addEventListener('DOMContentLoaded', () => new CILintEditor());
import CILintEditor from './ci_lint_editor';
export default () => new CILintEditor();
import CILintEditor from '../ci_lint_editor';
document.addEventListener('DOMContentLoaded', () => new CILintEditor());
import initGroupsList from '~/groups';
export default initGroupsList;
document.addEventListener('DOMContentLoaded', initGroupsList);
import Labels from '~/labels';
export default () => new Labels();
document.addEventListener('DOMContentLoaded', () => new Labels());
import initLabels from '~/init_labels';
export default initLabels;
document.addEventListener('DOMContentLoaded', initLabels);
import Labels from '~/labels';
export default () => new Labels();
document.addEventListener('DOMContentLoaded', () => new Labels());
import AjaxVariableList from '~/ci_variable_list/ajax_variable_list';
export default () => {
document.addEventListener('DOMContentLoaded', () => {
const variableListEl = document.querySelector('.js-ci-variable-list-section');
// eslint-disable-next-line no-new
new AjaxVariableList({
......@@ -9,4 +9,4 @@ export default () => {
errorBox: variableListEl.querySelector('.js-ci-variable-error-box'),
saveEndpoint: variableListEl.dataset.saveEndpoint,
});
};
});
import UsersSelect from '../../../../users_select';
import UsersSelect from '~/users_select';
export default () => new UsersSelect();
document.addEventListener('DOMContentLoaded', () => new UsersSelect());
import DueDateSelectors from '../../../due_date_select';
import DueDateSelectors from '~/due_date_select';
export default () => new DueDateSelectors();
document.addEventListener('DOMContentLoaded', () => new DueDateSelectors());
import BuildArtifacts from '~/build_artifacts';
import ShortcutsNavigation from '~/shortcuts_navigation';
export default function () {
document.addEventListener('DOMContentLoaded', () => {
new ShortcutsNavigation(); // eslint-disable-line no-new
new BuildArtifacts(); // eslint-disable-line no-new
}
});
import BlobViewer from '~/blob/viewer/index';
import ShortcutsNavigation from '~/shortcuts_navigation';
export default function () {
document.addEventListener('DOMContentLoaded', () => {
new ShortcutsNavigation(); // eslint-disable-line no-new
new BlobViewer(); // eslint-disable-line no-new
}
});
import ProjectFork from '~/project_fork';
export default () => {
new ProjectFork(); // eslint-disable-line no-new
};
document.addEventListener('DOMContentLoaded', () => new ProjectFork());
import Labels from '~/labels';
export default () => new Labels();
document.addEventListener('DOMContentLoaded', () => new Labels());
import initLabels from '~/init_labels';
export default initLabels;
document.addEventListener('DOMContentLoaded', initLabels);
import Labels from '~/labels';
export default () => new Labels();
document.addEventListener('DOMContentLoaded', () => new Labels());
......@@ -2,7 +2,7 @@ import initSettingsPanels from '~/settings_panels';
import SecretValues from '~/behaviors/secret_values';
import AjaxVariableList from '~/ci_variable_list/ajax_variable_list';
export default function () {
document.addEventListener('DOMContentLoaded', () => {
// Initialize expandable settings panels
initSettingsPanels();
......@@ -22,4 +22,4 @@ export default function () {
errorBox: variableListEl.querySelector('.js-ci-variable-error-box'),
saveEndpoint: variableListEl.dataset.saveEndpoint,
});
}
});
import initSettingsPanels from '~/settings_panels';
export default initSettingsPanels;
document.addEventListener('DOMContentLoaded', initSettingsPanels);
import Search from './search';
export default () => new Search();
document.addEventListener('DOMContentLoaded', () => new Search());
......@@ -20,12 +20,15 @@ class PersonalFileUploader < FileUploader
true
end
<<<<<<< HEAD
def object_store
return Store::LOCAL unless model
super
end
=======
>>>>>>> upstream/master
# Revert-Override
def store_dir
store_dirs[object_store]
......
......@@ -687,11 +687,8 @@
= f.label :version_check_enabled do
= f.check_box :version_check_enabled
Version check enabled
= link_to icon('question-circle'), help_page_path("user/admin_area/settings/usage_statistics", anchor: "version-check")
.help-block
Let GitLab inform you when an update is available. When
enabled, GitLab Inc. will collect info about your hostname
and version.
Let GitLab inform you when an update is available.
.form-group
.col-sm-offset-2.col-sm-10
- can_be_configured = @application_setting.usage_ping_can_be_configured?
......
---
title: Add more info about data collected when version check is enabled
merge_request: 17257
author:
type: changed
......@@ -32,6 +32,8 @@ In this example, you can see this was a GET request for a specific issue. Notice
2. `view`: total time taken inside the Rails views
3. `db`: total time to retrieve data from the database
User clone/fetch activity using http transport appears in this log as `action: git_upload_pack`.
In addition, the log contains the IP address from which the request originated
(`remote_ip`) as well as the user's ID (`user_id`), and username (`username`).
......@@ -157,6 +159,8 @@ I, [2015-02-13T06:17:00.671315 #9291] INFO -- : Adding project root/example.git
I, [2015-02-13T06:17:00.679433 #9291] INFO -- : Moving existing hooks directory and symlinking global hooks directory for /var/opt/gitlab/git-data/repositories/root/example.git.
```
User clone/fetch activity using ssh transport appears in this log as `executing git command <gitaly-upload-pack...`.
## `unicorn\_stderr.log`
This file lives in `/var/log/gitlab/unicorn/unicorn_stderr.log` for
......
......@@ -41,7 +41,7 @@ When you create a new repo locally, instead of going to GitLab to manually
create a new project and then push the repo, you can directly push it to
GitLab to create the new project, all without leaving your terminal. If you have access to that
namespace, we will automatically create a new project under that GitLab namespace with its
visibility set to private by default (you can later change it in the UI).
visibility set to Private by default (you can later change it in the [project's settings](../public_access/public_access.md#how-to-change-project-visibility)).
This can be done by using either SSH or HTTP:
......
......@@ -10,9 +10,8 @@ under **Admin area > Settings > Usage statistics**.
GitLab can inform you when an update is available and the importance of it.
GitLab Inc. collects version statistics, but no information other than
the GitLab version and the instance's hostname (through the HTTP
referer) is collected.
No information other than the GitLab version and the instance's hostname (through the HTTP referer)
are collected.
In the **Overview** tab you can see if your GitLab version is up to date. There
are three cases: 1) you are up to date (green), 2) there is an update available
......
......@@ -6,6 +6,7 @@ Milestones in GitLab are a way to track issues and merge requests created to ach
Milestones allow you to organize issues and merge requests into a cohesive group, with an optional start date and an optional due date.
<<<<<<< HEAD
With [GitLab Starter](https://about.gitlab.com/products/),
you will also see a [Burndown Chart](#burndown-charts) for your milestone, which
gives a visual insight over the progress of the conclusion of that milestone:
......@@ -13,6 +14,8 @@ gives a visual insight over the progress of the conclusion of that milestone:
![milestones with burndown charts](img/milestones.gif)
=======
>>>>>>> upstream/master
## Project milestones and group milestones
- **Project milestones** can be assigned to issues or merge requests in that project only.
......@@ -20,6 +23,7 @@ gives a visual insight over the progress of the conclusion of that milestone:
- In the [future](https://gitlab.com/gitlab-org/gitlab-ce/issues/36862), you will be able to assign group milestones to issues and merge reqeusts of projects in [subgroups](../../group/subgroups/index.md).
## Creating milestones
<<<<<<< HEAD
>**Note:**
A permission level of `Developer` or higher is required to create milestones.
......@@ -129,3 +133,101 @@ are visual representations of the progress of completing a milestone.
The start/due dates are required if you intend to use [Burndown charts](#burndown-charts).
Burndown charts are only available for project milestones currently. They will be available for group milestones [in the future](https://gitlab.com/gitlab-org/gitlab-ee/issues/3064).
=======
>**Note:**
A permission level of `Developer` or higher is required to create milestones.
### New project milestone
To create a **project milestone**, navigate to **Issues > Milestones** in the project.
Click the **New milestone** button. Enter the title, an optional description, an optional start date, and an optional due date. Click **Create milestone** to create the milestone.
![New project milestone](img/milestones_new_project_milestone.png)
### New group milestone
To create a **group milestone**, follow similar steps from above to project milestones. Navigate to **Issues > Milestones** in the group and create it from there.
![New group milestone](img/milestones_new_group_milestone.png)
## Editing milestones
>**Note:**
A permission level of `Developer` or higher is required to edit milestones.
You can update a milestone by navigating to **Issues > Milestones** in the project or group and clicking the **Edit** button.
You can delete a milestone by clicking the **Delete** button.
### Promoting project milestones to group milestones
If you are expanding from a few projects to a larger number of projects within the same group, you may want to share the same milestone among multiple projects in the same group. If you previously created a project milestone and now want to make it available for other milestones, you can promote it to a group milestone.
From the project milestone list page, you can promote a project milestone to a group milestone. This will merge all project milestones across all projects in this group with the same name into a single group milestones. All issues and merge requests that previously were assigned one of these project milestones will now be assigned the new group milestones. This action cannot be reversed and the changes are permanent.
>**Note:**
Not all features on the project milestone view are available on the group milestone view. If you promote a project milestone to a group milestone, you will lose these features. See [Milestone view](#milestone-view) to see which features are missing from the group milestone view.
![Promote milestone](img/milestones_promote_milestone.png)
## Assigning milestones from the sidebar
Every issue and merge request can be assigned a milestone. The milestones are visible on every issue and merge request page, in the sidebar. They are also visible in the issue board. From the sidebar, you can assign or unassign a milestones to the object. You can also perform this as a [quick action](../quick_actions.md) in a comment. [As mentioned](#project-milestones-and-group-milestones), for a given issue or merge request, both project milestones and group milestones can be selected and assigned to the object.
## Filtering issues and merge requests by milestone
### Filtering in list pages
From the project issue/merge request list pages and the group issue/merge request list pages, you can [filter](../../search/index.md#issues-and-merge-requests) by both group milestones and project milestones.
### Filtering in issue boards
From [project issue boards](../issue_board.md), you can filter by both group milestones and project milestones in the [search and filter bar](../../search/index.md#issue-boards).
### Special milestone filters
When filtering by milestone, in addition to choosing a specific project milestone or group milestone, you can choose a special milestone filter.
- **No Milestone**: Show issues or merge requests with no assigned milestone.
- **Upcoming**: Show issues or merge requests that have been assigned the open milestone that has the next upcoming due date (i.e. nearest due date in the future).
- **Started**: Show issues or merge requests that have an assigned milestone with a start date that is before today.
## Milestone view
Not all features in the project milestone view are available in the group milestone view. This table summarizes the differences:
| Feature | Project milestone view | Group milestone view |
|---|:---:|:---:|
| Title an description | ✓ | ✓ |
| Issues assigned to milestone | ✓ | |
| Merge requests assigned to milestone | ✓ | |
| Participants and labels used | ✓ | |
| Percentage complete | ✓ | ✓ |
| Start date and due date | ✓ | ✓ |
| Total issue time spent | ✓ | ✓ |
| Total issue weight | ✓ | |
The milestone view shows the title and description.
### Project milestone features
These features are only available for project milestones and not group milestones.
- Issues assigned to the milestone are displayed in three columns: Unstarted issues, ongoing issues, and completed issues.
- Merge requests assigned to the milestone are displayed in four columns: Work in progress merge requests, waiting for merge, rejected, and closed.
- Participants and labels that are used in issues and merge requests that have the milestone assigned are displayed.
### Milestone sidebar
The milestone sidebar on the milestone view shows the following:
- Percentage complete, which is calculated as number of closed issues plus number of closed/merged merge requests divided by total number issues and merge requests.
- The start date and due date.
- The total time spent on all issues that have the milestone assigned.
For project milestones only, the milestone sidebar shows the total issue weight of all issues that have the milestone assigned.
![Project milestone page](img/milestones_project_milestone_page.png)
>>>>>>> upstream/master
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment