1
0
mirror of synced 2026-01-23 03:01:22 -05:00

Merge branch 'main' into repo-sync

This commit is contained in:
Octomerger Bot
2021-06-24 02:23:02 +10:00
committed by GitHub
107 changed files with 2650 additions and 340 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 819 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

View File

@@ -22,19 +22,25 @@ You can create default issue and pull request templates for your organization or
## Issue templates
When you create issue templates for your repository using the issue template builder, they'll be available for contributors to use when they open new issues in the repository.
When you create issue templates for your repository using the issue template builder{% if currentVersion == "free-pro-team@latest" %} or with issue forms{% endif %}, contributors can select the appropriate template when they open new issues in the repository.
![New issue page showing issue template choices](/assets/images/help/issues/new-issue-page-with-multiple-templates.png)
Issue templates are helpful when you want to provide guidance for opening issues while allowing contributors to specify the content of their issues. {% if currentVersion == "free-pro-team@latest" %} If you want contributors to provide specific, structured information when they open issues, issue forms help ensure that you receive your desired information.{% endif %}
Using the template builder, you can specify a title and description for each template, add the template content, and either commit the template to the default branch or open a pull request in the repository. The template builder automatically adds the YAML front matter markup that is required for the template to show on the new issue page. For more information, see "[Configuring issue templates for your repository](/articles/configuring-issue-templates-for-your-repository)."
{% if currentVersion == "free-pro-team@latest" %}
With issue forms, you can create templates that have web form fields using the {% data variables.product.prodname_dotcom %} form schema. When a contributor opens an issue using an issue form, the form inputs are converted to a standard markdown issue comment. You can specify different input types and set inputs as required to help contributors open actionable issues in your repository. For more information, see "[Configuring issue templates for your repository](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#creating-issue-forms)" and "[Syntax for issue forms](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms)."
{% endif %}
{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}
{% data reusables.repositories.issue-template-config %} For more information, see "[Configuring issue templates for your repository](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser)."
{% endif %}
Issue templates are stored on the repository's default branch, in a hidden `.github/ISSUE_TEMPLATE` directory. If you create a template in another branch, it will not be available for collaborators to use. Issue template filenames are not case sensitive, and need a *.md* extension. {% data reusables.repositories.valid-community-issues %}
Issue templates are stored on the repository's default branch, in a hidden `.github/ISSUE_TEMPLATE` directory. If you create a template in another branch, it will not be available for collaborators to use. Issue template filenames are not case sensitive, and need a *.md* extension.{% if currentVersion == "free-pro-team@latest" %} Issue templates created with issue forms need a *.yml* extension.{% endif %} {% data reusables.repositories.valid-community-issues %}
It is possible to manually create a single issue template in Markdown using the legacy issue template workflow, and project contributors will automatically see the template's contents in the issue body. However, we recommend using the upgraded multiple issue template builder to create issue templates. For more information about the legacy workflow, see "[Manually creating a single issue template for your repository](/articles/manually-creating-a-single-issue-template-for-your-repository)."
It is possible to manually create a single issue template in Markdown using the legacy issue template workflow, and project contributors will automatically see the template's contents in the issue body. However, we recommend using the upgraded multiple issue template builder{% if currentVersion == "free-pro-team@latest" %} or issue forms{% endif %} to create issue templates. For more information about the legacy workflow, see "[Manually creating a single issue template for your repository](/articles/manually-creating-a-single-issue-template-for-your-repository)."
{% data reusables.repositories.security-guidelines %}

View File

@@ -45,6 +45,30 @@ topics:
![Issue template commit to main or open pull request choice](/assets/images/help/repository/issue-template-commit-to-master-or-open-pull-request.png)
11. Click **Commit changes**. Once these changes are merged into the default branch, the template will be available for contributors to use when they open new issues in the repository.
{% if currentVersion == "free-pro-team@latest" %}
## Creating issue forms
{% data reusables.community.issue-forms-beta %}
With issue forms, you can create issue templates that have customizable web form fields. You can encourage contributors to include specific, structured information by using issue forms in your repository. Issue forms are written in YAML using the {% data variables.product.prodname_dotcom %} form schema. For more information, see "[Syntax for {% data variables.product.prodname_dotcom %}'s form schema](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema)." {% data reusables.actions.learn-more-about-yaml %}
To use an issue form in your repository, you must create a new file and add it to the `.github/ISSUE_TEMPLATE` folder in your repository.
Here is an example of an issue form configuration file.
{% data reusables.community.issue-forms-sample %}
Here is the rendered version of the issue form.
![A rendered issue form](/assets/images/help/repository/sample-issue-form.png)
1. Choose a repository where you want to create an issue form. You can use an existing repository that you have write access to, or you can create a new repository. For more information about creating a repository, see "[Creating a new repository](/articles/creating-a-new-repository)."
2. In your repository, create a file called `.github/ISSUE_TEMPLATE/FORM-NAME.yml`, replacing `FORM-NAME` with the name for your issue form. For more information about creating new files on GitHub, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)."
3. In the body of the new file, type the contents of your issue form. For more information, see "[Syntax for issue forms](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms)."
4. Commit your file to the default branch of your repository. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)."
{% endif %}
{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}
## Configuring the template chooser

View File

@@ -16,6 +16,8 @@ topics:
children:
- /about-issue-and-pull-request-templates
- /configuring-issue-templates-for-your-repository
- /syntax-for-issue-forms
- /syntax-for-githubs-form-schema
- /creating-a-pull-request-template-for-your-repository
- /manually-creating-a-single-issue-template-for-your-repository
---

View File

@@ -0,0 +1,267 @@
---
title: Syntax for GitHub's form schema
intro: "You can use {% data variables.product.company_short %}'s form schema to configure forms for supported features."
versions:
free-pro-team: '*'
miniTocMaxHeadingLevel: 3
topics:
- Community
---
{% note %}
**Note:** {% data variables.product.company_short %}'s form schema is currently in beta and subject to change.
{% endnote %}
## About {% data variables.product.company_short %}'s form schema
You can use {% data variables.product.company_short %}'s form schema to configure forms for supported features. For more information, see "[Configuring issue templates for your repository](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#creating-issue-forms)."
A form is a set of elements for requesting user input. You can configure a form by creating a YAML form definition, which is an array of form elements. Each form element is a set of key-value pairs that determine the type of the element, the properties of the element, and the constraints you want to apply to the element. For some keys, the value is another set of key-value pairs.
For example, the following form definition includes four form elements: a text area for providing the user's operating system, a dropdown menu for choosing the software version the user is running, a checkbox to acknowledge the Code of Conduct, and Markdown that thanks the user for completing the form.
```yaml{:copy}
- type: textarea
attributes:
label: Operating System
description: What operating system are you using?
placeholder: Example: macOS Big Sur
value: operating system
validations:
required: true
- type: dropdown
attributes:
label: Version
description: What version of our software are you running?
multiple: false
options:
- label: 1.0.2 (Default)
- label: 1.0.3 (Edge)
validations:
required: true
- type: checkboxes
attributes:
label: Code of Conduct
description: The Code of Conduct helps create a safe space for everyone. We require
that everyone agrees to it.
options:
- label: I agree to follow this project's [Code of Conduct](link/to/coc)
required: true
- type: markdown
attributes:
value: "Thanks for completing our form!"
```
## Keys
For each form element, you can set the following keys.
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `type` | The type of element that you want to define. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | <ul><li>`checkboxes`</li><li>`dropdown`</li><li>`input`</li><li>`markdown`</li><li>`textarea`</li></ul> |
| `attributes` | A set of key-value pairs that define the properties of the element. | Required | Hash | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `validations` | A set of key-value pairs that set constraints on the element. | Optional | Hash | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
You can choose from the following types of form elements. Each type has unique attributes and validations.
| Type | Description |
| ---- | ----------- |
| [`markdown`](#markdown) | Markdown text that is displayed in the form to provide extra context to the user, but is **not submitted**. |
| [`textarea`](#textarea) | A multi-line text field. |
| [`input`](#input) | A single-line text field. |
| [`dropdown`](#dropdown) | A dropdown menu. |
| [`checkboxes`](#checkboxes) | A set of checkboxes. |
### `markdown`
You can use a `markdown` element to display Markdown in your form that provides extra context to the user, but is not submitted.
#### Attributes
{% data reusables.form-schema.attributes-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `value` | The text that is rendered. Markdown formatting is supported. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
{% tip %}
**Tips:** YAML processing will treat the hash symbol as a comment. To insert Markdown headers, wrap your text in quotes.
For multi-line text, you can use the pipe operator.
{% endtip %}
#### Example
```YAML{:copy}
body:
- type: markdown
value: "## Thank you for contributing to our project!"
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report.
```
### `textarea`
You can use a `textarea` element to add a multi-line text field to your form. Contributors can also attach files in `textarea` fields.
#### Attributes
{% data reusables.form-schema.attributes-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `label` | A brief description of the expected user input, which is also displayed in the form. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `description` | A description of the text area to provide context or guidance, which is displayed in the form. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `id` | The identifier for the text area. {% data reusables.form-schema.id-must-be-unique %} If provided, the `id` is the canonical identifier for the field in URL query parameter prefills. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `placeholder` | A semi-opaque placeholder that renders in the text area when empty. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `value` | Text that is pre-filled in the text area. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `render` | If a value is provided, submitted text will be formatted into a codeblock. When this key is provided, the text area will not expand for file attachments or Markdown editing. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | Languages known to {% data variables.product.prodname_dotcom %}. For more information, see [the languages YAML file](https://github.com/github/linguist/blob/master/lib/linguist/languages.yml). |
#### Validations
{% data reusables.form-schema.validations-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
{% data reusables.form-schema.required-key %}
#### Example
```YAML{:copy}
body:
- type: textarea
id: repro
attributes:
label: Reproduction steps
description: "How do you trigger this bug? Please walk us through it step by step."
value: |
1.
2.
3.
...
render: bash
validations:
required: true
```
### `input`
You can use an `input` element to add a single-line text field to your form.
#### Attributes
{% data reusables.form-schema.attributes-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `label` | A brief description of the expected user input, which is also displayed in the form. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `id` | The identifier for the input. {% data reusables.form-schema.id-must-be-unique %} If provided, the `id` is the canonical identifier for the field in URL query parameter prefills. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `description` | A description of the field to provide context or guidance, which is displayed in the form. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `placeholder` | A semi-transparent placeholder that renders in the field when empty. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `value` | Text that is pre-filled in the field. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
#### Validations
{% data reusables.form-schema.validations-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
{% data reusables.form-schema.required-key %}
#### Example
```YAML{:copy}
body:
- type: input
id: prevalence
attributes:
label: Bug prevalence
description: "How often do you or others encounter this bug?"
placeholder: "Example: Whenever I visit the user account page (1-2 times a week)"
validations:
required: true
```
### `dropdown`
You can use a `dropdown` element to add a dropdown menu in your form.
#### Attributes
{% data reusables.form-schema.attributes-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `label` | A brief description of the expected user input, which is displayed in the form. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `id` | The identifier for the dropdown. {% data reusables.form-schema.id-must-be-unique %} | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `description` | A description of the dropdown to provide extra context or guidance, which is displayed in the form. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `multiple` | Determines if the user can select more than one option. | Optional | Boolean | false | {% octicon "dash" aria-label="The dash icon" %} |
| `options` | An array of options the user can choose from. Cannot be empty and all choices must be distinct. | Required | String array | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
#### Validations
{% data reusables.form-schema.validations-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
{% data reusables.form-schema.required-key %}
#### Example
```YAML{:copy}
body:
- type: dropdown
id: download
attributes:
label: How did you download the software?
options:
- Homebrew
- MacPorts
- apt-get
- Built from source
validations:
required: true
```
### `checkboxes`
You can use the `checkboxes` element to add a set of checkboxes to your form.
#### Attributes
{% data reusables.form-schema.attributes-intro %}
| Key | Description | Required | Type | Default | Valid values |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `label` | A brief description of the expected user input, which is displayed in the form. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `id` | The identifier for the set of checkboxes. {% data reusables.form-schema.id-must-be-unique %}| Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
| `description` | A description of the set of checkboxes, which is displayed in the form. Supports Markdown formatting. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
| `options` | An array of checkboxes that the user can select. For syntax, see below. | Required | Array | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
{% data reusables.form-schema.options-syntax %}
{% data reusables.form-schema.required-key %}
#### Example
```YAML{:copy}
body:
- type: checkboxes
id: operating-systems
attributes:
label: Which operating systems have you used?
description: You may select more than one.
options:
- label: macOS
- label: Windows
- label: Linux
```
## Further reading
- [YAML](https://yaml.org)

View File

@@ -0,0 +1,165 @@
---
title: Syntax for issue forms
intro: You can define different input types, validations, default assignees, and default labels for your issue forms.
product: 'Issue forms are available in beta for public repositories on {% data variables.product.prodname_dotcom_the_website %}'
versions:
free-pro-team: '*'
topics:
- Community
---
{% data reusables.community.issue-forms-beta %}
## About YAML syntax for issue forms
You can create custom issue forms by adding a YAML form definition file to the `/.github/ISSUE_TEMPLATE` folder in your repository. {% data reusables.actions.learn-more-about-yaml %} You can define different input types, validations, default assignees, and default labels for your issue forms.
When a contributor fills out an issue form, their responses for each input are converted to markdown and added to the body of an issue. Contributors can edit their issues that were created with issue forms and other people can interact with the issues like an issue created through other methods.
This example YAML configuration file defines an issue form using several inputs to report a bug.
{% data reusables.community.issue-forms-sample %}
## Top-level syntax
All issue form configuration files must begin with `name`, `description`, and `body` key-value pairs.
```YAML{:copy}
name:
description:
body:
```
You can set the following top-level keys for each issue form.
| Key | Description | Required | Type |
| :-- | :-- | :-- | :-- | :-- |
| `name` | A name for the issue form template. Must be unique from all other templates, including Markdown templates. | Required | String |
| `description` | A description for the issue form template, which appears in the template chooser interface. | Required | String |
| `assignees` | People who will be automatically assigned to issues created with this template. | Optional | Array or comma-delimited string |
| `labels` | Labels that will automatically be added to issues created with this template. | Optional | String |
| `title` | A default title that will be pre-populated in the issue submission form. | Optional | String |
| `body` | Definition of the input types in the form. | Optional | Array |
For the available `body` input types and their syntaxes, see "[Syntax for {% data variables.product.prodname_dotcom %}'s form schema](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema)."
## Converting a Markdown issue template to a YAML issue form template
You can use both Markdown and YAML issue templates in your repository. If you want to convert a Markdown issue template to a YAML issue form template, you must create a new YAML file to define the issue form. You can manually transpose an existing Markdown issue template to a YAML issue form. For more information, see "[Configuring issue templates for your repository](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#creating-issue-forms)."
If you want to use the same file name for your YAML issue form, you must delete the Markdown issue template when you commit the new file to your repository.
An example of a Markdown issue template and a corresponding YAML issue form template are below.
### Markdown issue template
```markdown{:copy}
---
name: 🐞 Bug
about: File a bug/issue
title: '[BUG] <title>'
labels: Bug, Needs Triage
assignees: ''
---
{% raw %}<{% endraw %}!--
Note: Please search to see if an issue already exists for the bug you encountered.
--{% raw %}>{% endraw %}
### Current Behavior:
{% raw %}<{% endraw %}!-- A concise description of what you're experiencing. --{% raw %}>{% endraw %}
### Expected Behavior:
{% raw %}<{% endraw %}!-- A concise description of what you expected to happen. --{% raw %}>{% endraw %}
### Steps To Reproduce:
{% raw %}<{% endraw %}!--
Example: steps to reproduce the behavior:
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
--{% raw %}>{% endraw %}
### Environment:
{% raw %}<{% endraw %}!--
Example:
- OS: Ubuntu 20.04
- Node: 13.14.0
- npm: 7.6.3
--{% raw %}>{% endraw %}
### Anything else:
{% raw %}<{% endraw %}!--
Links? References? Anything that will give us more context about the issue that you are encountering!
--{% raw %}>{% endraw %}
```
### YAML issue form template
```yaml{:copy}
name: 🐞 Bug
description: File a bug/issue
title: "[BUG] <title>"
labels: [Bug, Needs Triage]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: A concise description of what you're experiencing.
validations:
required: false
- type: textarea
attributes:
label: Expected Behavior
description: A concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: false
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 20.04
- **Node**: 13.14.0
- **npm**: 7.6.3
value: |
- OS:
- Node:
- npm:
render: markdown
validations:
required: false
- type: textarea
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
```
## Further reading
- [YAML](https://yaml.org/)

View File

@@ -10,7 +10,7 @@ versions:
## Introduction
{% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source project. Discussions are for conversations that need to be transparent and accessible but do not need to be tracked on a project board and are not related to code, unlike issues. Discussions enable fluid, open conversation in a public forum.
{% data variables.product.prodname_discussions %} is a collaborative communication forum for the community around an open source project. Discussions are for conversations that need to be transparent and accessible but do not need to be tracked on a project board and are not related to code, unlike {% data variables.product.prodname_github_issues %}. Discussions enable fluid, open conversation in a public forum.
Discussions give a space for more collaborative conversations by connecting and giving a more centralized area to connect and find information.

View File

@@ -29,7 +29,7 @@ You can create and participate in issues, pull requests, {% data variables.produ
You can create and participate in issues, pull requests and team discussions, depending on the type of conversation you'd like to have.
{% endif %}
### Issues
### {% data variables.product.prodname_github_issues %}
- are useful for discussing specific details of a project such as bug reports, planned improvements and feedback.
- are specific to a repository, and usually have a clear owner.
- are often referred to as {% data variables.product.prodname_dotcom %}'s bug-tracking system.

View File

@@ -106,7 +106,10 @@ For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirr
|<kbd>m</kbd> | Set a milestone. For more information, see "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests/)."
|<kbd>l</kbd> | Apply a label. For more information, see "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests/)."
|<kbd>a</kbd> | Set an assignee. For more information, see "[Assigning issues and pull requests to other {% data variables.product.company_short %} users](/articles/assigning-issues-and-pull-requests-to-other-github-users/)."
|<kbd>cmd + shift + p</kbd> or <kbd>control + shift + p</kbd> | Toggles between the **Write** and **Preview** tabs
|<kbd>cmd + shift + p</kbd> or <kbd>control + shift + p</kbd> | Toggles between the **Write** and **Preview** tabs{% if currentVersion == "free-pro-team@latest" %}
|<kbd>alt</kbd> and click | When creating an issue from a task list, open the new issue form in the current tab by holding <kbd>alt</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|<kbd>shift</kbd> and click | When creating an issue from a task list, open the new issue form in a new tab by holding <kbd>shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|<kbd>command</kbd> or <kbd>control + shift</kbd> and click | When creating an issue from a task list, open the new issue form in the new window by holding <kbd>command</kbd> or <kbd>control + shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."{% endif %}
## Changes in pull requests

View File

@@ -17,6 +17,7 @@ children:
- /about-comparing-branches-in-pull-requests
- /creating-a-pull-request
- /creating-a-pull-request-from-a-fork
- /using-query-parameters-to-create-a-pull-request
- /changing-the-stage-of-a-pull-request
- /requesting-a-pull-request-review
- /changing-the-base-branch-of-a-pull-request

View File

@@ -0,0 +1,33 @@
---
title: Using query parameters to create a pull request
intro: 'Use query parameters to create custom URLs to open pull requests with pre-populated fields.'
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
You can use query parameters to open pull requests. Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair.
{% tip %}
**Tip:** You can also create pull request templates that open with default labels, assignees, and an pull request title. For more information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."
{% endtip %}
You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to add a label to a pull request to use the `labels` query parameter. For more information, see "[Repository permission levels for an organization](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)."
If you create an invalid URL using query parameters, or if you dont have the proper permissions, the URL will return a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL will return a `414 URI Too Long` error page.
Query parameter | Example
--- | ---
`quick_pull` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1` creates a pull request that compares the base branch `main` and head branch `my-branch`. The `quick_pull=1` query brings you directly to the "Open a pull request" page.
`title` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=bug&title=Bug+fix+report` creates a pull request with the label "bug" and title "Bug fix."
`body` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&body=Describe+the+fix.` creates a pull request with the title "Bug fix" and the comment "Describe the fix" in the pull request body.
`labels` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&labels=help+wanted,bug` creates a pull request with the labels "help wanted" and "bug".
`milestone` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&milestone=testing+milestones` creates a pull request with the milestone "testing milestones."
`assignees` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&assignees=octocat` creates a pull request and assigns it to @octocat.
`projects` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&title=Bug+fix&projects=octo-org/1` creates a pull request with the title "Bug fix" and adds it to the organization's project board 1.
`template` | `https://github.com/octo-org/octo-repo/compare/main...my-branch?quick_pull=1&template=issue_template.md` creates a pull request with a template in the pull request body. The `template` query parameter works with templates stored in a `PULL_REQUEST_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository. For more information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."

View File

@@ -37,6 +37,10 @@ Within conversations on {% data variables.product.product_name %}, references to
| `Username/Repository#` and issue or pull request number | jlord/sheetsee.js#26 | [jlord/sheetsee.js#26](https://github.com/jlord/sheetsee.js/issues/26)
| `Organization_name/Repository#` and issue or pull request number | github/linguist#4039 | [github/linguist#4039](https://github.com/github/linguist/pull/4039)
{% if currentVersion == "free-pro-team@latest" %}
If you reference an issue, pull request, or discussion in a list, the reference will unfurl to show the title and state instead. For more information about task lists, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
{% endif %}
## Commit SHAs
References to a commit's SHA hash are automatically converted into shortened links to the commit on {% data variables.product.product_name %}.

View File

@@ -13,5 +13,6 @@ children:
- /autolinked-references-and-urls
- /attaching-files
- /creating-a-permanent-link-to-a-code-snippet
- /using-keywords-in-issues-and-pull-requests
---

View File

@@ -0,0 +1,31 @@
---
title: Using keywords in issues and pull requests
intro: 'Use keywords to link an issue and pull request or to mark an issue or pull request as a duplicate.'
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Issues
- Pull requests
---
## Linking a pull request to an issue
To link a pull request to an issue to{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" or currentVersion == "github-ae@latest" %} show that a fix is in progress and to{% endif %} automatically close the issue when someone merges the pull request, type one of the following keywords followed by a reference to the issue. For example, `Closes #10` or `Fixes octo-org/octo-repo#100`.
* close
* closes
* closed
* fix
* fixes
* fixed
* resolve
* resolves
* resolved
For more information, see "[Linking a pull request to an issue](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)."
## Marking an issue or pull request as a duplicate
To mark an issue or pull request as a duplicate, type "Duplicate of" followed by the issue or pull request number it duplicates in the body of a new comment. For more information, see "[Marking issues or pull requests as a duplicate](/issues/tracking-your-work-with-issues/marking-issues-or-pull-requests-as-a-duplicate)."

View File

@@ -20,13 +20,13 @@ children:
- billing
- organizations
- code-security
- issues
- actions
- packages
- developers
- rest
- graphql
- insights
- issues
- discussions
- codespaces
- sponsors

View File

@@ -1,16 +1,39 @@
---
title: Issues and projects
shortTitle: Issues and projects
intro: Use issues and projects to manage your work on {% data variables.product.prodname_dotcom %}.
title: GitHub Issues
shortTitle: GitHub Issues
intro: Learn how you can use {% data variables.product.prodname_github_issues %} to plan and track your work.
introLinks:
overview: /issues/tracking-your-work-with-issues/creating-issues/about-issues
quickstart: /issues/tracking-your-work-with-issues/quickstart
featuredLinks:
guides:
- /issues/tracking-your-work-with-issues/creating-issues/creating-an-issue
- /issues/trying-out-the-new-projects-experience/quickstart
- /issues/trying-out-the-new-projects-experience/best-practices-for-managing-projects
- /communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository
guideCards:
- /issues/trying-out-the-new-projects-experience/automating-projects
- /issues/tracking-your-work-with-issues/creating-issues/linking-a-pull-request-to-an-issue
- /issues/organizing-your-work-with-project-boards/managing-project-boards/configuring-automation-for-project-boards
popular:
- /issues/tracking-your-work-with-issues/creating-issues/about-issues
- /issues/trying-out-the-new-projects-experience/about-projects
- /issues/tracking-your-work-with-issues/creating-issues/about-task-lists
- /communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates
- /issues/using-labels-and-milestones-to-track-work/managing-labels
- /github/managing-your-work-on-github/viewing-all-of-your-issues-and-pull-requests
- /issues/organizing-your-work-with-project-boards/managing-project-boards/about-project-boards
changelog:
label: issues
layout: product-landing
beta_product: false
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Issues
- Projects
children:
- /tracking-your-work-with-issues
- /trying-out-the-new-projects-experience
- /organizing-your-work-with-project-boards
- /using-labels-and-milestones-to-track-work
redirect_from:
@@ -39,4 +62,3 @@ redirect_from:
- /linking-a-pull-request-to-an-issue
- /about-duplicate-issues-and-pull-requests
---

View File

@@ -20,3 +20,4 @@ redirect_from:
- /archiving-cards-on-a-project-board
---
{% data reusables.projects.project_boards_old %}

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% data reusables.project-management.automate-project-board-permissions %} For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization)."
You can automate actions based on triggering events for project board columns. This eliminates some of the manual tasks in managing a project board. For example, you can configure a "To do" column, where any new issues or pull requests you add to a project board are automatically moved to the configured column. For more information, see "[Configuring automation for project boards](/articles/configuring-automation-for-project-boards)."

View File

@@ -13,6 +13,9 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
Project boards are made up of issues, pull requests, and notes that are categorized as cards in columns of your choosing. You can drag and drop or use keyboard shortcuts to reorder cards within a column, move cards from column to column, and change the order of columns.
Project board cards contain relevant metadata for issues and pull requests, like labels, assignees, the status, and who opened it. {% data reusables.project-management.edit-in-project %}

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% data reusables.project-management.project-board-visibility %}
{% tip %}

View File

@@ -13,6 +13,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
When you close a project board, any configured workflow automation will pause by default.
If you reopen a project board, you have the option to *sync* automation, which updates the position of the cards on the board according to the automation settings configured for the board. For more information, see "[Reopening a closed project board](/articles/reopening-a-closed-project-board)" or "[About automation for project boards](/articles/about-automation-for-project-boards)."

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% data reusables.project-management.automate-project-board-permissions %} For more information, see "[About automation for project boards](/articles/about-automation-for-project-boards)."
{% data reusables.project-management.use-automated-template %}

View File

@@ -10,6 +10,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
Copying a project board allows you to reuse a project board's title, description, and automation configuration. You can copy project boards to eliminate the manual process of creating new project boards for similar workflows.
You must have read access to a project board to copy it to a repository or organization where you have write access.

View File

@@ -13,6 +13,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% data reusables.project-management.use-automated-template %}
{% data reusables.project-management.copy-project-boards %}

View File

@@ -13,6 +13,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% tip %}
**Tip**: If you'd like to retain access to a completed or unneeded project board without losing access to its contents, you can [close the project board](/articles/closing-a-project-board) instead of deleting it.

View File

@@ -14,6 +14,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% tip %}
**Tip:** For details on adding, removing, or editing columns in your project board, see "[Creating a project board](/articles/creating-a-project-board)."

View File

@@ -25,3 +25,4 @@ redirect_from:
- /github/managing-your-work-on-github/managing-project-boards
---
{% data reusables.projects.project_boards_old %}

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
Anyone with write permissions to a project board can link repositories owned by that organization or user account to the project board. For more information, see "[Project board permissions for an organization](/articles/project-board-permissions-for-an-organization/)" or "[Permission levels for user-owned project boards](/articles/permission-levels-for-user-owned-project-boards/)."
{% data reusables.project-management.link-repos-to-project-board %} You can add issues and pull requests from any unlinked repositories by typing the issue or pull request URL in a card. For more information, see "[Adding issues and pull requests to a project board](/articles/adding-issues-and-pull-requests-to-a-project-board)."

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
When you close a project board, any workflow automation that was configured for the project board will pause by default. For more information, see "[Closing a project board](/articles/closing-a-project-board)."
When you reopen a project board, you have the option to *sync* automation, which updates the position of the cards on the board according to the automation settings configured for the board.

View File

@@ -13,6 +13,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
You can add issue or pull request cards to your project board by:
- Dragging cards from the **Triage** section in the sidebar.
- Typing the issue or pull request URL in a card.

View File

@@ -13,6 +13,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% tip %}
**Tips:**

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
Automation in your project board does not apply to archived project board cards. For example, if you close an issue in a project board's archive, the archived card does not automatically move to the "Done" column. When you restore a card from the project board archive, the card will return to the column where it was archived.
## Archiving cards on a project board

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
On a card, you can click any assignee, milestone, or label to filter the project board by that qualifier. To clear the search, you can click the same assignee, milestone, or label again.
You can also use the "Filter cards" search bar at the top of each project board to search for cards. You can filter cards using the following search qualifiers in any combination, or by simply typing some text you'd like to search for.

View File

@@ -19,3 +19,4 @@ redirect_from:
- /github/managing-your-work-on-github/tracking-the-progress-of-your-work-with-project-boards
---
{% data reusables.projects.project_boards_old %}

View File

@@ -12,6 +12,8 @@ versions:
topics:
- Pull requests
---
{% data reusables.projects.project_boards_old %}
{% data reusables.project-management.project-progress-locations %}
1. Navigate to the project board where you want to enable or disable project progress tracking.

View File

@@ -0,0 +1,53 @@
---
title: About issues
intro: 'Use {% data variables.product.prodname_github_issues %} to track ideas, feedback, tasks, or bugs for work on {% data variables.product.company_short %}.'
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-issues
- /articles/creating-issues/
- /articles/about-issues/
- /github/managing-your-work-on-github/about-issues
- /issues/tracking-your-work-with-issues/creating-issues/about-issues
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
- Issues
- Project management
---
## Integrated with GitHub
Issues let you track your work on {% data variables.product.company_short %}, where development happens. When you mention an issue in another issue or pull request, the issue's timeline reflects the cross-reference so that you can keep track of related work. To indicate that work is in progress, you can link an issue to a pull request. When the pull request merges, the linked issue automatically closes.
## Quickly create issues
Issues can be created in a variety of ways, so you can choose the most convenient method for your workflow. For example, you can create an issue from a repository,{% if currentVersion == "free-pro-team@latest" %} an item in a task list,{% endif %} a note in a project, a comment in an issue or pull request, a specific line of code, or a URL query. You can also create an issue from your platform of choice: through the web UI, {% data variables.product.prodname_desktop %}, {% data variables.product.prodname_cli %}, GraphQL and REST APIs, or {% data variables.product.prodname_mobile %}. For more information, see "[Creating an issue](/issues/tracking-your-work-with-issues/creating-issues/creating-an-issue)."
## Track work
You can organize and prioritize issues with projects. {% if currentVersion == "free-pro-team@latest" %}To track issues as part of a larger issue, you can use task lists.{% endif %} To categorize related issues, you can use labels and milestones.
For more information about projects, see {% if currentVersion == "free-pro-team@latest" %}"[About projects (beta)](/issues/trying-out-the-new-projects-experience/about-projects)" and {% endif %}"[Organizing your work with project boards](/issues/organizing-your-work-with-project-boards)." {% if currentVersion == "free-pro-team@latest" %}For more information about task lists, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)." {% endif %}For more information about labels and milestones, see "[Using labels and milestones to track work](/issues/using-labels-and-milestones-to-track-work)."
## Stay up to date
To stay updated on the most recent comments in an issue, you can subscribe to an issue to receive notifications about the latest comments. To quickly find links to recently updated issues you're subscribed to, visit your dashboard. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" or currentVersion == "github-ae@latest" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}" and "[About your personal dashboard](/articles/about-your-personal-dashboard)."
## Community management
To help contributors open meaningful issues that provide the information that you need, you can use {% if currentVersion == "free-pro-team@latest" %}issue forms and {% endif %}issue templates. For more information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."
{% if currentVersion == "free-pro-team@latest" %}To maintain a healthy community, you can report comments that violate {% data variables.product.prodname_dotcom %}'s [Community Guidelines](/articles/github-community-guidelines). For more information, see "[Reporting abuse or spam](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam)."{% endif %}
## Efficient communication
You can @mention collaborators who have access to your repository in an issue to draw their attention to a comment. To link related issues in the same repository, you can type `#` followed by part of the issue title and then clicking the issue that you want to link. To communicate responsibility, you can assign issues. If you find yourself frequently typing the same comment, you can use saved replies.
{% if currentVersion == "free-pro-team@latest" %} For more information, see "[Basic writing and formatting syntax](/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)" and "[Assigning issues and pull requests to other GitHub users](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users)."
## Comparing issues and discussions
Some conversations are more suitable for discussions. {% data reusables.discussions.you-can-use-discussions %} For guidance on when to use an issue or a discussion, see "[Communicating on GitHub](/github/getting-started-with-github/quickstart/communicating-on-github)."
When a conversation in an issue is better suited for a discussion, you can convert the issue to a discussion. {% data reusables.discussions.you-cannot-convert-a-discussion %}
{% endif %}

View File

@@ -0,0 +1,67 @@
---
title: About task lists
intro: You can use task lists to break the work for an issue or pull request into smaller tasks, then track the full set of work to completion.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-task-lists
- /articles/about-task-lists
- /github/managing-your-work-on-github/about-task-lists
- /issues/tracking-your-work-with-issues/creating-issues/about-task-lists
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
- Issues
---
{% if currentVersion == "free-pro-team@latest" %}
{% note %}
**Note:** Improved task lists are currently in beta and subject to change.
{% endnote %}
{% endif %}
## About task lists
A task list is a set of tasks that each render on a separate line with a clickable checkbox. You can select or deselect the checkboxes to mark the tasks as complete or incomplete.
You can use Markdown to create a task list in any comment on {% data variables.product.product_name %}. {% if currentVersion == "free-pro-team@latest" %}If you reference an issue, pull request, or disussion in a task list, the reference will unfurl to show the title and state.{% endif %}
{% if currentVersion != "free-pro-team@latest" %}
You can view task list summary information in issue and pull request lists, when the task list is in the initial comment.
{% else %}
## About issue task lists
If you add a task list to the body of an issue, the list has added functionality.
- To help you track your team's work on an issue, the progress of an issue's task list appears in various places on {% data variables.product.product_name %}, such as a repository's list of issues.
- If a task references another issue and someone closes that issue, the task's checkbox will automatically be marked as complete.
- If a task requires further tracking or discussion, you can convert the task to an issue by hovering over the task and clicking {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. To add more details before creating the issue, you can use keyboard shortcuts to open the new issue form. For more information, see "[Keyboard shortcuts](/github/getting-started-with-github/using-github/keyboard-shortcuts#issues-and-pull-requests)."
- Any issues referenced in the task list will specify that they are tracked in the referencing issue.
![Rendered task list](/assets/images/help/writing/task-list-rendered.png)
{% endif %}
## Creating task lists
{% data reusables.repositories.task-list-markdown %}
## Reordering tasks
You can reorder the items in a task list by clicking to the left of a task's checkbox, dragging the task to a new location, and dropping the task. You can reorder tasks across different lists in the same comment, but you can not reorder tasks across different comments.
![Reordered task list](/assets/images/help/writing/task-list-reordered.gif)
## Navigating tracked issues
Any issues that are referenced in a task list specify that they are tracked by the issue that contains the task list. To navigate to the tracking issue from the tracked issue, click on the tracking issue number in the **Tracked in** section next to the issue status.
![Tracked in example](/assets/images/help/writing/task_list_tracked.png)
## Further reading
* "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)"

View File

@@ -5,6 +5,7 @@ redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/assigning-issues-and-pull-requests-to-other-github-users
- /articles/assigning-issues-and-pull-requests-to-other-github-users
- /github/managing-your-work-on-github/assigning-issues-and-pull-requests-to-other-github-users
- /issues/tracking-your-work-with-issues/managing-issues/assigning-issues-and-pull-requests-to-other-github-users
versions:
free-pro-team: '*'
enterprise-server: '*'

View File

@@ -0,0 +1,129 @@
---
title: Creating an issue
intro: 'Issues can be created in a variety of ways, so you can choose the most convenient method for your workflow.'
permissions: People with read permissions can create an issue in a repository where issues are enabled.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/creating-an-issue
- /articles/creating-an-issue
- /github/managing-your-work-on-github/creating-an-issue
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/opening-an-issue-from-a-comment
- /github/managing-your-work-on-github/opening-an-issue-from-a-comment
- /issues/tracking-your-work-with-issues/creating-issues/opening-an-issue-from-a-comment
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/opening-an-issue-from-code
- /articles/opening-an-issue-from-code
- /github/managing-your-work-on-github/opening-an-issue-from-code
- /issues/tracking-your-work-with-issues/creating-issues/opening-an-issue-from-code
- /issues/tracking-your-work-with-issues/creating-issues/about-automation-for-issues-and-pull-requests-with-query-parameters
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-automation-for-issues-and-pull-requests-with-query-parameters
- /articles/about-automation-for-issues-and-pull-requests-with-query-parameters
- /github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters
- /issues/tracking-your-work-with-issues/creating-issues/creating-an-issue
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
- Issues
- Project management
---
Issues can be used to keep track of bugs, enhancements, or other requests. For more information, see "[About issues](/issues/tracking-your-work-with-issues/about-issues)."
{% data reusables.repositories.administrators-can-disable-issues %}
## Creating an issue from a repository
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" or currentVersion == "github-ae@latest" %}
{% tip %}
**Tip**: You can also create an issue using the {% data variables.product.prodname_cli %}. For more information, see "[`gh issue create`](https://cli.github.com/manual/gh_issue_create)" in the {% data variables.product.prodname_cli %} documentation.
{% endtip %}
{% endif %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-issues %}
{% data reusables.repositories.new_issue %}
1. If your repository uses issue templates, click **Get started** next to the type of issue you'd like to open.
![Select the type of issue you want to create](/assets/images/help/issues/issue_template_get_started_button.png)
Or, click **Open a blank issue** if the type of issue you'd like to open isn't included in the available options.
![Link to open a blank issue](/assets/images/help/issues/blank_issue_link.png)
{% data reusables.repositories.type-issue-title-and-description %}
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
{% data reusables.repositories.submit-new-issue %}
## Creating an issue from a comment
You can open a new issue from a comment in an issue or pull request. When you open an issue from a comment, the issue contains a snippet showing where the comment was originally posted.
1. Navigate to the comment that you would like to open an issue from.
2. In that comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
![Kebab button in pull request review comment](/assets/images/help/pull_requests/kebab-in-pull-request-review-comment.png)
3. Click **Reference in new issue**.
![Reference in new issue menu item](/assets/images/help/pull_requests/reference-in-new-issue.png)
4. Use the "Repository" drop-down menu, and select the repository you want to open the issue in.
![Repository dropdown for new issue](/assets/images/help/pull_requests/new-issue-repository.png)
5. Type a descriptive title and body for the issue.
![Title and body for new issue](/assets/images/help/pull_requests/new-issue-title-and-body.png)
6. Click **Create issue**.
![Button to create new issue](/assets/images/help/pull_requests/create-issue.png)
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
{% data reusables.repositories.submit-new-issue %}
## Creating an issue from code
You can open a new issue from a specific line or lines of code in a file or pull request. When you open an issue from code, the issue contains a snippet showing the line or range of code you chose. You can only open an issue in the same repository where the code is stored.
![Code snippet rendered in an issue opened from code](/assets/images/help/repository/issue-opened-from-code.png)
{% data reusables.repositories.navigate-to-repo %}
1. Locate the code you want to reference in an issue:
- To open an issue about code in a file, navigate to the file.
- To open an issue about code in a pull request, navigate to the pull request and click {% octicon "diff" aria-label="The file diff icon" %} **Files changed**. Then, browse to the file that contains the code you want include in your comment, and click **View**.
{% data reusables.repositories.choose-line-or-range %}
4. To the left of the code range, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}. In the drop-down menu, click **Reference in new issue**.
![Kebab menu with option to open a new issue from a selected line](/assets/images/help/repository/open-new-issue-specific-line.png)
{% data reusables.repositories.type-issue-title-and-description %}
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
{% data reusables.repositories.submit-new-issue %}
## Creating an issue from a project board note
If you're using a project board to track and prioritize your work, you can convert project board notes to issues. For more information, see "[About project boards](/github/managing-your-work-on-github/about-project-boards)" and "[Adding notes to a project board](/github/managing-your-work-on-github/adding-notes-to-a-project-board#converting-a-note-to-an-issue)."
{% if currentVersion == "free-pro-team@latest" %}
## Creating an issue from a task list item
Within an issue, you can use task lists to break work into smaller tasks and track the full set of work to completion. If a task requires further tracking or discussion, you can convert the task to an issue by hovering over the task and clicking {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
{% endif %}
## Creating an issue from a URL query
You can use query parameters to open issues. Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or an issue template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair.
{% tip %}
**Tip:** You can also create issue templates that open with default labels, assignees, and an issue title. For more information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."
{% endtip %}
You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to add a label to an issue to use the `labels` query parameter. For more information, see "[Repository permission levels for an organization](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)."
If you create an invalid URL using query parameters, or if you dont have the proper permissions, the URL will return a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL will return a `414 URI Too Long` error page.
Query parameter | Example
--- | ---
`title` | `https://github.com/octo-org/octo-repo/issues/new?labels=bug&title=New+bug+report` creates an issue with the label "bug" and title "New bug report."
`body` | `https://github.com/octo-org/octo-repo/issues/new?title=New+bug+report&body=Describe+the+problem.` creates an issue with the title "New bug report" and the comment "Describe the problem" in the issue body.
`labels` | `https://github.com/octo-org/octo-repo/issues/new?labels=help+wanted,bug` creates an issue with the labels "help wanted" and "bug".
`milestone` | `https://github.com/octo-org/octo-repo/issues/new?milestone=testing+milestones` creates an issue with the milestone "testing milestones."
`assignees` | `https://github.com/octo-org/octo-repo/issues/new?assignees=octocat` creates an issue and assigns it to @octocat.
`projects` | `https://github.com/octo-org/octo-repo/issues/new?title=Bug+fix&projects=octo-org/1` creates an issue with the title "Bug fix" and adds it to the organization's project board 1.
`template` | `https://github.com/octo-org/octo-repo/issues/new?template=issue_template.md` creates an issue with a template in the issue body. The `template` query parameter works with templates stored in an `ISSUE_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository. For more information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."
## Further reading
- "[Writing on GitHub](/github/writing-on-github)"

View File

@@ -1,51 +0,0 @@
---
title: About automation for issues and pull requests with query parameters
intro: You can use query parameters to share URLs with customized information.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-automation-for-issues-and-pull-requests-with-query-parameters
- /articles/about-automation-for-issues-and-pull-requests-with-query-parameters
- /github/managing-your-work-on-github/about-automation-for-issues-and-pull-requests-with-query-parameters
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or an issue template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair.
{% tip %}
**Tip:** You can also create issue templates that open with default labels, assignees, and an issue title. For more information, see "[Configuring issue templates for your repository](/articles/configuring-issue-templates-for-your-repository)" or "[Manually creating a single issue template for your repository](/articles/manually-creating-a-single-issue-template-for-your-repository)."
{% endtip %}
You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to add a label to an issue to use the `labels` query parameter.
If you create an invalid URL using query parameters, or if you dont have the proper permissions, the URL will return a `404 Not Found` error page. If you create a URL that exceeds the server limit, the URL will return a `414 URI Too Long` error page.
## Supported query parameters
Query parameter | Example
--- | ---
`body` | `https://github.com/octo-org/octo-repo/compare/main...pull-request-test?quick_pull=1&body=Fixes+the+problem.` creates a pull request, comparing the branches `main` and `pull-request-test`, with the comment "Fixes the problem" in the pull request body.
`title` | `https://github.com/octo-org/octo-repo/issues/new?labels=bug&title=New+bug+report` creates an issue with the label "bug" and title "New bug report."
`labels` | `https://github.com/octo-org/octo-repo/compare/main...pull-request-test?quick_pull=1&labels=bug` creates a pull request, comparing the branches `main` and `pull-request-test`, with the label "bug."
`template` | `https://github.com/octo-org/octo-repo/issues/new?template=issue_template.md` creates an issue with a template in the issue body.
`milestone` | `https://github.com/octo-org/octo-repo/issues/new?milestone=testing+milestones` creates an issue with the milestone "testing milestones."
`assignees` | `https://github.com/octo-org/octo-repo/issues/new?assignees=octocat` creates an issue and assigns it to @octocat.
`projects` | `https://github.com/octo-org/octo-repo/issues/new?title=Bug+fix&projects=octo-org/1` creates an issue with the title "Bug fix" and adds it to the organization's project board 1.
## Filling issues and pull requests with custom templates
{% data reusables.repositories.legacy-issue-template-tip %}
You can use the `template` query parameter to specify a template to automatically fill the issue or pull request body. The `template` query parameter works with templates stored in an `ISSUE_TEMPLATE` or `PULL_REQUEST_TEMPLATE` subdirectory within the root, `docs/` or `.github/` directory in a repository.
If a repository contains only the default pull request or issue template, any new issues or pull requests will have the default template in the body.
For more information, see "[Creating a pull request template for your repository](/articles/creating-a-pull-request-template-for-your-repository)" or "[Manually creating a single issue template for your repository](/articles/manually-creating-a-single-issue-template-for-your-repository)."
## Further reading
- "[Automation for release forms with query parameters](/articles/automation-for-release-forms-with-query-parameters)"

View File

@@ -1,43 +0,0 @@
---
title: About issues
intro: 'Use issues to track ideas, enhancements, tasks, or bugs for work on {% data variables.product.product_name %}.'
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-issues
- /articles/creating-issues/
- /articles/about-issues/
- /github/managing-your-work-on-github/about-issues
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
## About issues
You can collect user feedback, report software bugs, and organize tasks you'd like to accomplish with issues in a repository. Issues can act as more than just a place to report software bugs.
{% if currentVersion == "free-pro-team@latest" %}
Other conversations are more suitable for discussions. {% data reusables.discussions.you-can-use-discussions %}
{% data reusables.discussions.you-cannot-convert-a-discussion %}
{% endif %}
{% data reusables.pull_requests.close-issues-using-keywords %}
To stay updated on the most recent comments in an issue, you can watch an issue to receive notifications about the latest comments. For more information, see {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" or currentVersion == "github-ae@latest" %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}."
To quickly find links to recently updated issues you're subscribed to, visit your dashboard. For more information, see "[About your personal dashboard](/articles/about-your-personal-dashboard)."
## Working with issues
With issues, you can:
- Track and prioritize your work using project boards. For more information, see "[Using project boards](/articles/about-project-boards)."
- Create new issues to track out-of-scope feedback from a comment in an issue or a pull request review. For more information, see "[Opening an issue from a comment](/github/managing-your-work-on-github/opening-an-issue-from-a-comment)."
- Create issue templates to help contributors open meaningful issues. For more information, see "[About issue and pull request templates](/articles/about-issue-and-pull-request-templates)."
- Transfer open issues to other repositories. For more information, see "[Transferring an issue to another repository](/articles/transferring-an-issue-to-another-repository)."
- Pin important issues to make them easier to find, preventing duplicate issues and reducing noise. For more information, see "[Pinning an issue to your repository](/articles/pinning-an-issue-to-your-repository)."
- Track duplicate issues using saved replies. For more information, see "[About saved replies](/articles/about-saved-replies)."{% if currentVersion == "free-pro-team@latest" %}
- Report comments that violate {% data variables.product.prodname_dotcom %}'s [Community Guidelines](/articles/github-community-guidelines). For more information, see "[Reporting abuse or spam](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam)."{% endif %}
Issues can also be [assigned to other users](/articles/assigning-issues-and-pull-requests-to-other-github-users), [tagged with labels](/articles/applying-labels-to-issues-and-pull-requests) for quicker searching, and [grouped together with milestones](/articles/creating-and-editing-milestones-for-issues-and-pull-requests).

View File

@@ -1,35 +0,0 @@
---
title: About task lists
intro: You can use task lists to create a list of items with checkboxes within pull request and issue comments or Markdown files in your repository.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-task-lists
- /articles/about-task-lists
- /github/managing-your-work-on-github/about-task-lists
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
Task lists render with clickable checkboxes in comments. You can select or unselect the checkboxes to mark them as complete or incomplete.
Task lists render as read-only checkboxes in Markdown files. People with write permissions in the repository can edit the file to select or unselect the checkboxes.
You can view task list summary information in issue and pull request lists, when the task list is in the initial comment.
![Task list summary](/assets/images/help/issues/task-list-summary.png)
## Creating task lists
{% data reusables.repositories.task-list-markdown %}
## Reordering tasks
You can reorder task lists within a single comment by clicking to the left of a task's checkbox, dragging it to a new location, and dropping it. If you have multiple lists within a comment, you can reorder tasks across the single comment. You can't add or reorder tasks across different comments.
![Reordered task list](/assets/images/help/writing/task-list-reordered.gif)
## Further reading
* "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax)"

View File

@@ -1,56 +0,0 @@
---
title: Creating an issue
intro: 'Issues can be used to keep track of bugs, enhancements, or other requests.'
permissions: People with read permissions can create an issue in a repository where issues are enabled.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/creating-an-issue
- /articles/creating-an-issue
- /github/managing-your-work-on-github/creating-an-issue
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
You can open a new issue based on code from an existing pull request. For more information, see "[Opening an issue from code](/github/managing-your-work-on-github/opening-an-issue-from-code)."
You can open a new issue directly from a comment in an issue or a pull request review. For more information, see "[Opening an issue from a comment](/github/managing-your-work-on-github/opening-an-issue-from-a-comment)."
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.19" or currentVersion == "github-ae@latest" %}
{% tip %}
**Tip**: You can also create an issue using the {% data variables.product.prodname_cli %}. For more information, see "[`gh issue create`](https://cli.github.com/manual/gh_issue_create)" in the {% data variables.product.prodname_cli %} documentation.
{% endtip %}
{% endif %}
If you're using a project board to track and prioritize your work, you can convert project board notes to issues. For more information, see "[About project boards](/github/managing-your-work-on-github/about-project-boards)" and "[Adding notes to a project board](/github/managing-your-work-on-github/adding-notes-to-a-project-board#converting-a-note-to-an-issue)."
{% tip %}
**Tips**: Project maintainers can choose to:
- Create an issue template for a repository. Templates include prompts for information in the body of an issue. For more information, see "[About issue and pull request templates](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates)."
- Disable issues for a repository. For more information, see "[Disabling issues](/github/managing-your-work-on-github/disabling-issues)." Pull requests can't be turned off and are always available.
{% endtip %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-issues %}
3. Click **New issue**.
![New Issues button](/assets/images/help/issues/new_issues_button.png)
4. If there are multiple issue types, click **Get started** next to the type of issue you'd like to open.
![Select the type of issue you want to create](/assets/images/help/issues/issue_template_get_started_button.png)
{% if currentVersion == "free-pro-team@latest" or currentVersion >= "enterprise-server@2.21" %}
5. Optionally, click **Open a blank issue.** if the type of issue you'd like to open isn't included in the available options.
![Link to open a blank issue](/assets/images/help/issues/blank_issue_link.png)
{% else %}
5. Optionally, click **Open a regular issue.** if the type of issue you'd like to open isn't included in the available options.
![Link to open a regular issue](/assets/images/help/issues/regular_issue_link.png)
{% endif %}
{% data reusables.repositories.type-issue-title-and-description %}
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
{% data reusables.repositories.submit-new-issue %}
## Further reading
- "[Writing on GitHub](/github/writing-on-github)"

View File

@@ -1,21 +0,0 @@
---
title: Creating issues
shortTitle: Creating issues
intro: 'Learn how to create issues to track ideas and tasks'
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Issues
children:
- /about-issues
- /creating-an-issue
- /opening-an-issue-from-a-comment
- /opening-an-issue-from-code
- /about-automation-for-issues-and-pull-requests-with-query-parameters
- /about-task-lists
- /linking-a-pull-request-to-an-issue
- /deleting-an-issue
---

View File

@@ -1,35 +0,0 @@
---
title: Opening an issue from a comment
intro: You can open a new issue from a specific comment in an issue or pull request.
permissions: People with read permissions can create an issue in a repository where issues are enabled.
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/opening-an-issue-from-a-comment
- /github/managing-your-work-on-github/opening-an-issue-from-a-comment
---
When you open an issue from a comment, the issue contains a snippet showing where the comment was originally posted.
{% data reusables.repositories.administrators-can-disable-issues %}
1. Navigate to the comment you'd like to open an issue from.
2. In that comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
![Kebab button in pull request review comment](/assets/images/help/pull_requests/kebab-in-pull-request-review-comment.png)
3. Click **Reference in new issue**.
![Reference in new issue menu item](/assets/images/help/pull_requests/reference-in-new-issue.png)
4. Use the "Repository" drop-down menu, and select the repository you want to open the issue in.
![Repository dropdown for new issue](/assets/images/help/pull_requests/new-issue-repository.png)
5. Type a descriptive title and body for the issue.
![Title and body for new issue](/assets/images/help/pull_requests/new-issue-title-and-body.png)
6. Click **Create issue**.
![Button to create new issue](/assets/images/help/pull_requests/create-issue.png)
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
## Further reading
- "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)"

View File

@@ -1,37 +0,0 @@
---
title: Opening an issue from code
intro: You can open a new issue from a specific line or lines of code in a file or pull request.
permissions: People with read permissions can create an issue in a repository where issues are enabled.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/opening-an-issue-from-code
- /articles/opening-an-issue-from-code
- /github/managing-your-work-on-github/opening-an-issue-from-code
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Pull requests
---
When you open an issue from code, the issue contains a snippet showing the line or range of code you chose. You can only open an issue in the same repository where the code is stored.
![Code snippet rendered in an issue opened from code](/assets/images/help/repository/issue-opened-from-code.png)
{% data reusables.repositories.administrators-can-disable-issues %}
{% data reusables.repositories.navigate-to-repo %}
2. Locate the code you want to reference in an issue:
- To open an issue about code in a file, navigate to the file.
- To open an issue about code in a pull request, navigate to the pull request and click {% octicon "diff" aria-label="The file diff icon" %} **Files changed**. Then, browse to the file that contains the code you want include in your comment, and click **View**.
{% data reusables.repositories.choose-line-or-range %}
4. To the left of the code range, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}. In the drop-down menu, click **Reference in new issue**.
![Kebab menu with option to open a new issue from a selected line](/assets/images/help/repository/open-new-issue-specific-line.png)
{% data reusables.repositories.type-issue-title-and-description %}
{% data reusables.repositories.assign-an-issue-as-project-maintainer %}
{% data reusables.repositories.submit-new-issue %}
## Further reading
- "[Creating an issue](/github/managing-your-work-on-github/creating-an-issue)"
- "[Getting permanent links to files](/github/managing-files-in-a-repository/getting-permanent-links-to-files)"
- "[Creating a permanent link to a code snippet](/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet)"

View File

@@ -5,6 +5,7 @@ redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/deleting-an-issue
- /articles/deleting-an-issue
- /github/managing-your-work-on-github/deleting-an-issue
- /issues/tracking-your-work-with-issues/creating-issues/deleting-an-issue
versions:
free-pro-team: '*'
enterprise-server: '*'
@@ -19,7 +20,7 @@ To delete an issue in a repository owned by an organization, an organization own
Collaborators do not receive a notification when you delete an issue. When visiting the URL of a deleted issue, collaborators will see a message stating that the issue is deleted. People with admin or owner permissions in the repository will additionally see the username of the person who deleted the issue and when it was deleted.
1. Navigate to the issue you want to delete.
3. On the right side bar, under "Notifications", click **Delete issue**.
2. On the right side bar, under "Notifications", click **Delete issue**.
!["Delete issue" text highlighted on bottom of the issue page's right side bar](/assets/images/help/issues/delete-issue.png)
4. To confirm deletion, click **Delete this issue**.

View File

@@ -1,7 +1,7 @@
---
title: Tracking your work with issues
shortTitle: Issues
intro: 'Use issues to track ideas and work on {% data variables.product.prodname_dotcom %}'
intro: 'Use {% data variables.product.prodname_github_issues %} to track ideas and work on {% data variables.product.prodname_dotcom %}'
versions:
free-pro-team: '*'
enterprise-server: '*'
@@ -9,7 +9,18 @@ versions:
topics:
- Issues
children:
- /creating-issues
- /managing-issues
- /about-issues
- /quickstart
- /creating-an-issue
- /about-task-lists
- /linking-a-pull-request-to-an-issue
- /assigning-issues-and-pull-requests-to-other-github-users
- /viewing-all-of-your-issues-and-pull-requests
- /marking-issues-or-pull-requests-as-a-duplicate
- /pinning-an-issue-to-your-repository
- /transferring-an-issue-to-another-repository
- /deleting-an-issue
redirect_from:
- /issues/tracking-your-work-with-issues/creating-issues
- /issues/tracking-your-work-with-issues/managing-issues
---

View File

@@ -8,6 +8,7 @@ redirect_from:
- /articles/closing-issues-using-keywords
- /github/managing-your-work-on-github/closing-issues-using-keywords
- /github/managing-your-work-on-github/linking-a-pull-request-to-an-issue
- /issues/tracking-your-work-with-issues/creating-issues/linking-a-pull-request-to-an-issue
versions:
free-pro-team: '*'
enterprise-server: '*'
@@ -29,22 +30,6 @@ When you link a pull request to the issue the pull request addresses, collaborat
When you merge a linked pull request into the default branch of a repository, its linked issue is automatically closed. For more information about the default branch, see "[Changing the default branch](/github/administering-a-repository/changing-the-default-branch)."
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" or currentVersion == "github-ae@latest" %}
## Manually linking a pull request to an issue
Anyone with write permissions to a repository can manually link a pull request to an issue.
You can manually link up to ten issues to each pull request. The issue and pull request must be in the same repository.
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-pr %}
3. In the list of pull requests, click the pull request that you'd like to link to an issue.
4. In the right sidebar, click **Linked issues**.
![Linked issues in the right sidebar](/assets/images/help/pull_requests/linked-issues.png)
5. Click the issue you want to link to the pull request.
![Drop down to link issue](/assets/images/help/pull_requests/link-issue-drop-down.png)
{% endif %}
## Linking a pull request to an issue using a keyword
You can link a pull request to an issue by using a supported keyword in the pull request's description or in a commit message (please note that the pull request must be on the default branch).
@@ -71,6 +56,23 @@ Multiple issues | Use full syntax for each issue | `Resolves #10, resolves #123,
You can also use closing keywords in a commit message. The issue will be closed when you merge the commit into the default branch, but the pull request that contains the commit will not be listed as a linked pull request.
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.20" or currentVersion == "github-ae@latest" %}
## Manually linking a pull request to an issue
Anyone with write permissions to a repository can manually link a pull request to an issue.
You can manually link up to ten issues to each pull request. The issue and pull request must be in the same repository.
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-pr %}
3. In the list of pull requests, click the pull request that you'd like to link to an issue.
4. In the right sidebar, click **Linked issues**.
![Linked issues in the right sidebar](/assets/images/help/pull_requests/linked-issues.png)
5. Click the issue you want to link to the pull request.
![Drop down to link issue](/assets/images/help/pull_requests/link-issue-drop-down.png)
{% endif %}
## Further reading
- "[Autolinked references and URLs](/articles/autolinked-references-and-urls/#issues-and-pull-requests)"

View File

@@ -1,18 +0,0 @@
---
title: Managing issues
shortTitle: Managing issues
intro: 'Learn how to manage issues in your repository'
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
topics:
- Issues
children:
- /assigning-issues-and-pull-requests-to-other-github-users
- /viewing-all-of-your-issues-and-pull-requests
- /about-duplicate-issues-and-pull-requests
- /pinning-an-issue-to-your-repository
- /transferring-an-issue-to-another-repository
---

View File

@@ -1,10 +1,11 @@
---
title: About duplicate issues and pull requests
title: Marking issues or pull requests as a duplicate
intro: Mark an issue or pull request as a duplicate to track similar issues or pull requests together and remove unnecessary burden for both maintainers and collaborators.
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-duplicate-issues-and-pull-requests
- /articles/about-duplicate-issues-and-pull-requests
- /github/managing-your-work-on-github/about-duplicate-issues-and-pull-requests
- /issues/tracking-your-work-with-issues/managing-issues/marking-issues-or-pull-requests-as-a-duplicate
versions:
free-pro-team: '*'
enterprise-server: '*'

View File

@@ -5,6 +5,7 @@ redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/pinning-an-issue-to-your-repository
- /articles/pinning-an-issue-to-your-repository
- /github/managing-your-work-on-github/pinning-an-issue-to-your-repository
- /issues/tracking-your-work-with-issues/managing-issues/pinning-an-issue-to-your-repository
versions:
free-pro-team: '*'
enterprise-server: '*'
@@ -18,6 +19,6 @@ To pin an issue, you must have write permissions for the repository the issue is
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-issues %}
3. In the list of issues, click the issue you'd like to pin.
4. In the right sidebar, click **Pin issue**.
1. In the list of issues, click the issue you'd like to pin.
2. In the right sidebar, click **Pin issue**.
![Button to pin issue](/assets/images/help/repository/pin-issue.png)

View File

@@ -0,0 +1,100 @@
---
title: Quickstart for GitHub Issues
intro: 'Follow this brief interactive guide to learn about {% data variables.product.prodname_github_issues %}.'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
free-pro-team: '*'
enterprise-server: '*'
github-ae: '*'
type: quick_start
topics:
- Issues
- Project management
---
## Introduction
This guide demonstrates how to use {% data variables.product.prodname_github_issues %} to plan and track a piece of work. In this guide, you will create a new issue and add a task list to track sub-tasks. You'll also learn how to add labels, milestones, assignees, and projects to communicate metadata about your issue.
## Prerequisites
To create an issue, you need a repository. You can use an existing repository that you have write access to, or you can create a new repository. The repository must have issues enabled. For more information about creating a repository, see "[Creating a new repository](/articles/creating-a-new-repository)." For more information about enabling issues if they are disabled in your repository, see "[Disabling issues](/github/administering-a-repository/managing-repository-settings/disabling-issues)."
## Opening a blank issue
First, create an issue. There are multiple ways to create an issue; you can choose the most convenient method for your workflow. This example will use the {% data variables.product.prodname_dotcom %} UI. For more information about other ways to create an issue, see "[Creating an issue](/issues/tracking-your-work-with-issues/creating-an-issue)."
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-issues %}
{% data reusables.repositories.new_issue %}
1. In this example, we will start with a blank issue. Your repository may use issue templates{% if currentVersion == "free-pro-team@latest"%} and issue forms{% endif %} to encourage contributors to provide specific information. If your repository uses issue templates, {% if currentVersion == "free-pro-team@latest" or currentVersion >= "enterprise-server@2.21" %}click **Open a blank issue**{% else %}click **Open a regular issue.**{% endif %}.
![blank issue](/assets/images/help/issues/blank-issue.png)
## Filling in information
Give your issue a descriptive title. The title should convey at a glance what the issue is about.
Add a description that explains the purpose of the issue, including any details that might help resolve the issue. For example, if this is a bug report, describe the steps to reproduce the bug, the expected result, and the actual result.
You can use markdown to add formatting, links, emojis, and more. For more information, see "[Writing on GitHub](/github/writing-on-github)."
![issue title and body](/assets/images/help/issues/issue-title-body.png)
## Adding a task list
It can be helpful to break large issues into smaller tasks, or to track multiple related issues in a single larger issue. Add a task list to your issue by prefacing list items with `[ ]`. Reference existing issues by issue number or URL. You can use plain text to track tasks that don't have a corresponding issue and convert them to issues later. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/about-task-lists)."
![issue with task list](/assets/images/help/issues/issue-task-list-raw.png)
## Adding labels
Add a label to categorize your issue. For example, you might use a `bug` label and a `good first issue` label to indicate that an issue is a bug that a first-time contributor could pick up. Users can filter issues by label to find all issues that have a specific label.
You can use the default labels, or you can create a new label. For more information, see "[Managing labels](/issues/using-labels-and-milestones-to-track-work/managing-labels)."
![issue with labels](/assets/images/help/issues/issue-with-label.png)
## Adding milestones
You can add a milestone to track the issue as part of a date based target. A milestone will show the progress of the issues as the target date approaches. For more information, see "[About milestones](/issues/using-labels-and-milestones-to-track-work/about-milestones)."
![issue with milestone](/assets/images/help/issues/issue-milestone.png)
## Assigning the issue
To communicate responsibility, you can assign the issue to a member of your organization. For more information, see "[Assigning issues and pull requests to other GitHub users](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users)."
![issue with assignees](/assets/images/help/issues/issue-assignees.png)
## Adding the issue to a project
You can add the issue to an existing project. {% if currentVersion == "free-pro-team@latest" %}If you are using projects (beta), you can also populate metadata for the project. {% endif %} For more information about projects, see {% if currentVersion == "free-pro-team@latest" %}"[About projects (beta)](/issues/trying-out-the-new-projects-experience/about-projects)" and {% endif %}"[Organizing your work with project boards](/issues/organizing-your-work-with-project-boards)".
![issue with projects](/assets/images/help/issues/issue-project.png)
## Submitting your issue
Click **Submit new issue** to create your issue. You can edit any of the above fields after creating the issue. Your issue has a unique URL that you can share with team members, or reference in other issues or pull requests.
## Communicating
After your issue is created, continue the conversation by adding comments to the issue. You can @mention collaborators or teams to draw their attention to a comment. To link related issues in the same repository, you can type `#` followed by part of the issue title and then clicking the issue that you want to link. For more information, see "[Writing on GitHub](/github/writing-on-github)."
![issue comment](/assets/images/help/issues/issue-comment.png)
## Next steps
You can use issues for a wide range of purposes. For example:
- Tracking ideas
- Collecting feedback
- Planning tasks
- Reporting bugs
Here are some helpful resources for taking your next steps with {% data variables.product.prodname_github_issues %}:
- To learn more about issues, see "[About issues](/issues/tracking-your-work-with-issues/about-issues)."
- To learn more about how projects can help you with planning and tracking, see {% if currentVersion == "free-pro-team@latest" %}"[About projects (beta)](/issues/trying-out-the-new-projects-experience/about-projects)" or {% endif %}"[Organizing your work with project boards](/issues/organizing-your-work-with-project-boards)".
- To learn more about using issue templates{% if currentVersion == "free-pro-team@latest"%} and issue forms{% endif %} to encourage contributors to provide specific information, see "[Using templates to encourage useful issues and pull requests](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)."

View File

@@ -5,6 +5,7 @@ redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/transferring-an-issue-to-another-repository
- /articles/transferring-an-issue-to-another-repository
- /github/managing-your-work-on-github/transferring-an-issue-to-another-repository
- /issues/tracking-your-work-with-issues/managing-issues/transferring-an-issue-to-another-repository
versions:
free-pro-team: '*'
enterprise-server: '*'

View File

@@ -5,6 +5,7 @@ redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/viewing-all-of-your-issues-and-pull-requests
- /articles/viewing-all-of-your-issues-and-pull-requests
- /github/managing-your-work-on-github/viewing-all-of-your-issues-and-pull-requests
- /issues/tracking-your-work-with-issues/managing-issues/viewing-all-of-your-issues-and-pull-requests
versions:
free-pro-team: '*'
enterprise-server: '*'

View File

@@ -0,0 +1,62 @@
---
title: About projects (beta)
intro: 'Projects are a customizable, flexible tool for planning and tracking work on {% data variables.product.company_short %}.'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
free-pro-team: '*'
type: overview
topics:
- Projects
---
{% data reusables.projects.projects-beta %}
## About projects
A project is a customizable spreadsheet that integrates with your issues and pull requests on {% data variables.product.company_short %}. You can customize the layout by filtering, sorting, and grouping your issues and PRs. You can also add custom fields to track metadata. Projects are flexible so that your team can work in the way that is best for them.
### Staying up-to-date
Your project automatically stays up-to-date with the information on {% data variables.product.company_short %}. When a pull request or issue changes, your project reflects that change. This integration also works both ways, so that when you change information about a pull request or issue from your project, the pull request or issue reflects that information.
### Adding metadata to your tasks
You can use custom fields to add metadata to your tasks. For example, you can track the following metadata:
- a date field to track target ship dates
- a number field to track the complexity of a task
- a single select field to track whether a task is Low, Medium, or High priority
- a text field to add a quick note
### Viewing your project from different perspectives
You can view your project as a high density table layout:
![Project table](/assets/images/help/issues/projects_table.png)
Or as a board:
![Project board](/assets/images/help/issues/projects_board.png)
To help you focus on specific aspects of your project, you can group, sort, or filter items:
![Project view](/assets/images/help/issues/project_view.png)
For more information, see "[Customizing your project views](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)."
### Working with the command palette
You can use the command palette to quickly change views or add fields. The command palette guides you so that you don't need to memorize custom keyboard shortcuts. For more information, see "[Customizing your project views](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)."
### Automating project management tasks
You can use the GraphQL API and {% data variables.product.prodname_actions %} to automate routine project management tasks. For more information, see "[Using the API to manage projects](/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)" and "[Automating projects](/issues/trying-out-the-new-projects-experience/automating-projects)."
## Comparing projects (beta) with the non-beta projects
Projects (beta) is a new, customizable version of projects. Projects (beta) is currently only available to a limited number of beta users. The non-beta version of projects is available to all users. To learn more about the beta, see [{% data variables.product.prodname_github_issues %}](https://github.com/features/issues). For more information about the non-beta version of projects, see "[Organizing your work with project boards](/issues/organizing-your-work-with-project-boards)."
## Sharing feedback
You can share your feedback about projects (beta) with {% data variables.product.company_short %}. To join the conversation, see [the feedback discussion](https://github.com/github/feedback/discussions/categories/issues-feedback).

View File

@@ -0,0 +1,344 @@
---
title: Automating projects (beta)
intro: 'You can use the API and {% data variables.product.prodname_actions %} to manage your projects.'
product: '{% data reusables.gated-features.actions %}'
allowTitleToDifferFromFilename: true
versions:
free-pro-team: '*'
type: how_to
topics:
- Projects
- Workflows
- Project management
---
## Introduction
This article demonstrates how to use the GraphQL API and {% data variables.product.prodname_actions %} to add a pull request to a project. When the pull request is marked as "ready for review", a new task is added to the project with a "Status" field set to "Todo", and the current date is added to a custom "Date posted" field.
This article assumes that you have a basic understanding of {% data variables.product.prodname_actions %}. For more information about {% data variables.product.prodname_actions %}, see "[{% data variables.product.prodname_actions %}](/actions)."
{% data reusables.projects.projects-beta %}
{% data reusables.projects.api-beta %}
{% note %}
**Note:** `GITHUB_TOKEN` does not have the necessary scopes to access projects (beta). You must create a token with `org:write` scope and save it as a secret in your repository or organization. In the following workflow, replace `YOUR_TOKEN` with the name of the secret. For more information, see "[Creating a personal access token](/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)."
{% endnote %}
## Example workflow
You can copy this workflow and modify it as described in the table below to meet your needs. A project can span multiple repositories, but a workflow is specific to a repository. Add this workflow to each repository that you want your project to track. For more information about creating workflow files, see "[Quickstart for {% data variables.product.prodname_actions %}](/actions/quickstart)."
```yaml{:copy}
name: Add PR to project
on:
pull_request:
types:
- ready_for_review
jobs:
track_pr:
runs-on: ubuntu-latest
steps:
- name: Get project data
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
ORGANIZATION: YOUR_ORGANIZATION
PROJECT_NUMBER: YOUR_PROJECT_NUMBER
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'DATE_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Date posted") | .id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
echo 'TODO_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
- name: Add PR to project
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
PR_ID: {% raw %}${{ github.event.pull_request.node_id }}{% endraw %}
run: |
item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation($project:ID!, $pr:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
- name: Get date
run: echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
- name: Set fields
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
run: |
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation (
$project: ID!
$item: ID!
$status_field: ID!
$status_value: String!
$date_field: ID!
$date_value: String!
) {
set_status: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $status_field
value: $status_value
}) {
projectNextItem {
id
}
}
set_date_posted: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $date_field
value: $date_value
}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value={% raw %}${{ env.TODO_OPTION_ID }}{% endraw %} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent
```
The following table explains sections of the workflow and shows you how to adapt it for your own use.
<table class="table-fixed">
<tr>
<td>
```yaml
on:
pull_request:
types:
- ready_for_review
```
</td>
<td>
This workflow runs whenever a pull request in the repository is marked as "ready for review".
</td>
</tr>
<tr>
<td>
```yaml
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
ORGANIZATION: YOUR_ORGANIZATION
PROJECT_NUMBER: YOUR_PROJECT_NUMBER
```
</td>
<td>
Sets environment variables for this step.
<br>
<br>
Create a token with <code>org:write</code> scope and save it as a secret in your repository or organization. Replace <code>YOUR_TOKEN</code> with the name of the secret.
<br>
<br>
Replace <code>YOUR_ORGANIZATION</code> with the name of your organization. For example, <code>octo-org</code>.
<br>
<br>
Replace <code>YOUR_PROJECT_NUMBER</code> with your project number. To find the project number, look at the project URL. For example, <code>https://github.com/orgs/octo-org/projects/5</code> has a project number of 5.
</td>
</tr>
<tr>
<td>
```yaml
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
settings
}
}
}
}
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
```
</td>
<td>
Uses <a href="https://cli.github.com/manual/">{% data variables.product.prodname_cli %}</a> to query the API for the ID of the project and for the ID, name, and settings for the first 20 fields in the project. The response is stored in a file called <code>project_data.json</code>.
</td>
</tr>
<tr>
<td>
```yaml
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
echo 'DATE_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Date posted") | .id' project_data.json) >> $GITHUB_ENV
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
echo 'TODO_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
```
</td>
<td>
Parses the response from the API query and stores the relevant IDs as environment variables. Modify this to get the ID for different fields or options. For example:
<ul>
<li>To get the ID of a field called <code>Team</code>, add <code>echo 'TEAM_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Team") | .id' project_data.json) >> $GITHUB_ENV</code>.</li>
<li>To get the ID of an option called <code>Octoteam</code> for the <code>Team</code> field, add <code>echo 'OCTOTEAM_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Team") |.settings | fromjson.options[] | select(.name=="Octoteam") |.id' project_data.json) >> $GITHUB_ENV</code></li>
</ul>
<strong>Note: </strong>This workflow assumes that you have a project with a single select field called "Status" that includes an option called "Todo" and a date field called "Date posted". You must modify this section to match the fields that are present in your table.
</td>
</tr>
<tr>
<td>
```yaml
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
PR_ID: {% raw %}${{ github.event.pull_request.node_id }}{% endraw %}
```
</td>
<td>
Sets environment variables for this step. <code>GITHUB_TOKEN</code> is described above. <code>PR_ID</code> is the ID of the pull request that triggered this workflow.
</td>
</tr>
<tr>
<td>
```yaml
item_id="$( gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation($project:ID!, $pr:ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
```
</td>
<td>
Uses <a href="https://cli.github.com/manual/">{% data variables.product.prodname_cli %}</a> and the API to add the pull request that triggered this workflow to the project. The <code>jq</code> flag parses the response to get the ID of the created item.
</td>
</tr>
<tr>
<td>
```yaml
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
```
</td>
<td>
Stores the ID of the created item as an environment variable.
</td>
</tr>
<tr>
<td>
```yaml
echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
```
</td>
<td>
Saves the current date as an environment variable in <code>yyyy-mm-dd</code> format.
</td>
</tr>
<tr>
<td>
```yaml
env:
GITHUB_TOKEN: {% raw %}${{secrets.YOUR_TOKEN}}{% endraw %}
```
</td>
<td>
Sets environment variables for this step. <code>GITHUB_TOKEN</code> is described above.
</td>
</tr>
<tr>
<td>
```yaml
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation (
$project: ID!
$item: ID!
$status_field: ID!
$status_value: String!
$date_field: ID!
$date_value: String!
) {
set_status: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $status_field
value: $status_value
}) {
projectNextItem {
id
}
}
set_date_posted: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $date_field
value: $date_value
}) {
projectNextItem {
id
}
}
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value={% raw %}${{ env.TODO_OPTION_ID }}{% endraw %} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent
```
</td>
<td>
Sets the value of the <code>Status</code> field to <code>Todo</code>. Sets the value of the <code>Date posted</code> field.
</td>
</tr>
</table>
## Next steps
For more information about other changes you can make to your project through the API, see "[Using the API to manage projects](/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)." For more information about {% data variables.product.prodname_actions %}, see "[{% data variables.product.prodname_actions %}](/actions)."

View File

@@ -0,0 +1,53 @@
---
title: Best practices for managing projects (beta)
intro: 'Learn tips for managing your projects on {% data variables.product.company_short %}.'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
free-pro-team: '*'
type: overview
topics:
- Projects
- Issues
- Project management
---
{% data reusables.projects.projects-beta %}
You can use projects to manage your work on {% data variables.product.company_short %}, where your issues and pull requests live. Read on for tips to manage your projects efficiently and effectively. For more information about projects, see "[About projects](/issues/trying-out-the-new-projects-experience/about-projects)."
## Break down large issues into smaller issues
Breaking a large issue into smaller issues makes the work more manageable and enables team members to work in parallel. It also leads to smaller pull requests, which are easier to review.
To track how smaller issues fit into the larger goal, use task lists, milestones, or labels. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)", "[About milestones](/issues/using-labels-and-milestones-to-track-work/about-milestones)", and "[Managing labels](/issues/using-labels-and-milestones-to-track-work/managing-labels)."
## Communicate
Issues and pull requests include built-in features to let you easily communicate with your collaborators. Use @mentions to alert a person or entire team about a comment. Assign collaborators to issues to communicate responsibility. Link to related issues or pull requests to communicate how they are connected.
## Use views
Use project views to look at your project from different angles.
For example:
- Filter by status to view all un-started items
- Group by assignee to view the workload for each team member
- Sort by a custom date field to view the items with the earliest target ship date
For more information, see "[Customizing your project views](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)."
## Have a single source of truth
To prevent information from getting out of sync, maintain a single source of truth. For example, track a target ship date in a single location instead of spread across multiple fields. Then, if the target ship date shifts, you only need to update the date in one location.
{% data variables.product.company_short %} projects automatically stay up to date with {% data variables.product.company_short %} data, such as assignees, milestones, and labels. When one of these fields changes in an issue or pull request, the change is automatically reflected in your project.
## Use automation
Automating tasks lets you spend less time on busy work and more time on the project itself. The less you need to remember to do manually, the more likely your project will stay up to date. {% data variables.product.prodname_actions %} and the GraphQL API enable you to automate routine project management tasks. For example, to keep track of pull requests awaiting review, you can create a workflow that adds a pull request to a project and sets the status to "needs review"; this process can be automatically triggered when a pull request is marked as "ready for review".
- For an example workflow, see "[Automating projects](/issues/trying-out-the-new-projects-experience/automating-projects)."
- For more information about the API, see "[Using the API to manage projects](/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)."
- For more information about {% data variables.product.prodname_actions %}, see ["{% data variables.product.prodname_actions %}](/actions)."

View File

@@ -0,0 +1,93 @@
---
title: Creating a project (beta)
intro: 'Learn how to make a project, populate it, and add custom fields.'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
free-pro-team: '*'
type: quick_start
topics:
- Projects
---
Projects are a customizable collection of items that stay up-to-date with {% data variables.product.company_short %} data. Your projects can track issues, pull requests, and ideas that you jot down. You can add custom fields and create views for specific purposes.
{% data reusables.projects.projects-beta %}
## Creating a project
{% data reusables.projects.create-project %}
## Adding items to your project
Your project can track draft issues, issues, and pull requests.
### Creating draft issues
Draft issues are useful to quickly capture ideas.
1. Place your cursor in the bottom row of the project, next to the {% octicon "plus" aria-label="plus icon" %}.
2. Type your idea, then press **Enter**.
### Issues and pull requests
#### Paste the URL of an issue or pull request
1. Place your cursor in the bottom row of the project, next to the {% octicon "plus" aria-label="plus icon" %}.
1. Paste the URL of the issue or pull request.
#### Searching for an issue or pull request
1. Place your cursor in the bottom row of the project, next to the {% octicon "plus" aria-label="plus icon" %}.
2. Enter `#`.
3. Select the repository where the pull request or issue is located. You can type part of the repository name to narrow down your options.
4. Select the issue or pull request. You can type part of the title to narrow down your options.
#### Assigning a project from within an issue or pull request
1. Navigate to the issue or pull request that you want to add to a project.
2. In the side bar, click **Projects**.
3. Select the project that you want to add the issue or pull request to.
4. Optionally, populate the custom fields.
![Project sidebar](/assets/images/help/issues/project_side_bar.png)
## Adding fields
As field values change, they are automatically synced so that your project and the items that it tracks are up-to-date.
{% note %}
**Note:** You cannot edit or add fields until you add at least one item to your project.
{% endnote %}
### Showing existing fields
Your project tracks up-to-date information about issues and pull requests, including any changes to the title, assignees, labels, milestones, and repository. When your project initializes, "title" and "assignees" are displayed; the other fields are hidden. You can change the visibility of these fields in your project.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "show".
3. Select the desired command (for example: "Show: Repository").
Alternatively, you can do this in the UI:
1. Click {% octicon "plus" aria-label="the plus icon" %} in the rightmost field header. A drop-down menu with the project fields will appear.
![Show or hide fields](/assets/images/help/issues/projects_fields_menu.png)
2. Select the field(s) that you want to display or hide. A {% octicon "check" aria-label="check icon" %} indicates which fields are displayed.
### Adding custom fields
You can add custom fields to your project. Custom fields can be text, number, date, or single select. Custom fields will display on the side bar of issues and pull requests in the project.
1. {% data reusables.projects.open-command-palette %} Start typing any part of "Create new field". When "Create new field" displays in the command palette, select it.
2. Alternatively, click {% octicon "plus" aria-label="the plus icon" %} in the rightmost field header. A drop-down menu with the project fields will appear. Click **New field**.
3. A popup will appear for you to enter information about the new field.
![New field](/assets/images/help/issues/projects_new_field.png)
4. In the text box, enter a name for the new field.
5. Select the dropdown menu and click the desired type.
6. If you specified "single select" as the type, enter the options.
## Customize your views
You can view your project as a table or board, group items by field, filter item, and more. For more information, see "[Customizing your project (beta) views](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)."

View File

@@ -0,0 +1,137 @@
---
title: Customizing your project (beta) views
intro: 'Display the information you need by changing the layout, grouping, sorting, and filters in your project.'
allowTitleToDifferFromFilename: true
versions:
free-pro-team: '*'
type: reference
topics:
- Projects
---
{% data reusables.projects.projects-beta %}
## Command palette
Use the command palette to quickly change settings and run commands in your project.
1. {% data reusables.projects.open-command-palette %}
2. Start typing any part of a command or navigate through the command palette window to find a command. See the next sections for more examples of commands.
## Change layout
You can view your project as a table or as a board.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Switch layout".
3. Select the desired command (for example: "Switch layout: Table").
3. Alternatively, select the drop-down menu next to a view name and click **Table** or **Board**.
## Show or hide fields
In table layout, you can show or hide a specific field.
1. {% data reusables.projects.open-command-palette %}
2. Start typing the action you want to take ("show" or "hide") or the name of the field.
3. Select the desired command (for example: "Show: Milestone").
4. Alternatively, click {% octicon "plus" aria-label="the plus icon" %} to the right of the table. In the drop-down menu that appears, indicate which fields to show or hide. A {% octicon "check" aria-label="check icon" %} indicates which fields are displayed.
5. Alternatively, select the drop-down menu next to the field name and click **Hide field**.
## Reorder fields
You can change the order of fields.
1. Click the field header.
2. While clicking, drag the field to the desired location.
## Reorder rows
In table layout, you can change the order of rows.
1. Click the number at the start of the row.
2. While clicking, drag the row to the desired location.
## Sort
In table layout, you can sort items by a field value.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Sort by" or the name of the field you want to sort by.
3. Select the desired command (for example: "Sort by: Assignees, asc").
4. Alternatively, select the drop-down menu next to the field name that you want to sort by and click **Sort ascending** or **Sort descending**.
{% note %}
**Note:** When a table is sorted, you cannot manually reorder rows.
{% endnote %}
Follow similar steps to remove a sort.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Remove sort-by".
3. Select the "Remove sort-by" command.
4. Alternatively, select the drop-down menu next to the view name and click the menu item that indicates the current sort.
## Group
In table layout, you can group items by a custom field value. You cannot group by fields that contain {% data variables.product.company_short %} data (such as: title, assignees, repository, labels, milestone). When items are grouped, if you drag an item to a new group, the value of that group is applied. For example, if you group by `Status` and then drag an item with a status of `In progress` to the `Done` group, the status of the item will switch to `Done`.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Group by" or the name of the field you want to group by.
3. Select the desired command (e.g. "Group by: Status").
4. Alternatively, select the drop-down menu next to the field name that you want to group by and click **Group by values**.
Follow similar steps to remove a grouping.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Remove group-by".
3. Select the "Remove group-by" command.
4. Alternatively, select the drop-down menu next to the view name and click the menu item that indicates the current grouping.
## Filter
In table layout, you can filter by field values.
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Filter by" or the name of the field you want to filter by.
3. Select the desired command (e.g. "Filter by Status").
4. Enter the value that you want to filter for (for example: "In progress").
5. Alternatively, click {% octicon "search" aria-label="the search icon" %} at the top of the table to show the "Filter by keyword or field" bar. Enter the field name and value that you want to filter by. As you type, possible values will appear. Separate multiple filters with a space. For example, `status:"In progress" assignee:octocat`.
6. Alternatively, select the drop-down menu next to the view name and click the menu item that indicates the current sort.
## Save views
Saved views allow you to quickly view specific aspects of your project. For example, you could have the following:
- a view that shows all un-started items (filter on "Status").
- a view that shows the workload for each team member (group by "Asssignee" and filter on "Status").
- a view that shows the items with the earliest target ship date (sort by a date field).
The following steps demonstrate how to add a new view:
1. {% data reusables.projects.open-command-palette %}
2. Start typing "New view" (to create a new view) or "Duplicate view" (to duplicate the current view).
3. Select the desired command.
4. Alternatively, click {% octicon "plus" aria-label="the plus icon" %} **New view** next to the rightmost view.
5. Alternatively, select the drop-down menu next to a view name and click **Duplicate view**.
When you make changes to a view, a dot appears next to the view name to indicate that the view has been modified. If you don't want to save the changes, you can ignore this indicator. To save the view for all project members:
1. {% data reusables.projects.open-command-palette %}
1. Start typing "Save view" or "Save changes to new view".
1. Select the desired command.
1. Alternatively, select the drop-down menu next to a view name and click **Save view** or **Save changes to new view**.
To rename a view, double click on the view name and type the desired name.
To delete a view:
1. {% data reusables.projects.open-command-palette %}
2. Start typing "Delete view".
3. Select the desired command.
4. Alternatively, select the drop-down menu next to a view name and click **Delete view**.
## Further reading
- "[About projects (beta)](/issues/trying-out-the-new-projects-experience/about-projects)
- "[Creating a project (beta)](/issues/trying-out-the-new-projects-experience/creating-a-project)

View File

@@ -0,0 +1,18 @@
---
title: Trying out the new projects experience
shortTitle: Projects (beta)
intro: 'Build customized projects to track your work in {% data variables.product.company_short %}.'
versions:
free-pro-team: '*'
topics:
- Issues
- Projects
children:
- /about-projects
- /quickstart
- /creating-a-project
- /customizing-your-project-views
- /using-the-api-to-manage-projects
- /automating-projects
- /best-practices-for-managing-projects
---

View File

@@ -0,0 +1,137 @@
---
title: Quickstart for projects (beta)
intro: 'Experience the speed, flexibility, and customization of projects (beta) by creating a project in this interactive guide.'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
free-pro-team: '*'
type: quick_start
topics:
- Projects
---
{% data reusables.projects.projects-beta %}
## Introduction
This guide demonstrates how to use projects (beta) to plan and track work. In this guide, you will create a new project and add a custom field to track priorities for your tasks. You'll also learn how to create saved views that help you communicate priorities and progress with your collaborators.
## Prerequisites
To create a project, you need a {% data variables.product.prodname_dotcom %} organization that is a part of the projects beta. For more information about creating an organization, see "[Creating a new organization from scratch](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)." For more information about the beta, see "[About projects (beta)](/issues/trying-out-the-new-projects-experience/about-projects)."
In this guide, you will add existing issues from repositories in your organization to your new project. For more information about creating issues, see "[Creating an issue](/issues/tracking-your-work-with-issues/creating-an-issue)."
## Creating a project
First, create a project from your organizations project page.
{% data reusables.projects.create-project %}
## Adding issues to your project
Next, add a few issues to your project.
When your new project initializes, it prompts you to add items to your project. If you lose this view or want to add more issues later, place your cursor in the bottom row of the project, next to the {% octicon "plus" aria-label="plus icon" %}.
1. Type `#`.
2. Select the repository where your issue is located. To narrow down the options, you can start typing a part of the repository name.
3. Select your issue. To narrow down the options, you can start typing a part of the issue title.
Repeat the above steps a few times to add multiple issues to your project.
For more information about other ways to add issues to your project, or about other items you can add to your project, see "[Creating a project](/issues/trying-out-the-new-projects-experience/creating-a-project#adding-items-to-your-project)."
## Creating a field to track priority
Now, create a custom field called `Priority` to contain the values: `High`, `Medium`, or `Low`.
1. {% data reusables.projects.open-command-palette %}
2. Start typing any part of "Create new field".
3. Select **Create new field**.
4. In the resulting pop-up, enter `Priority` in the text box.
5. In the drop-down, select **Single select**.
6. Add options for `High`, `Medium`, and `Low`. You can also include emojis in your options.
![New single select field example](/assets/images/help/projects/new-single-select-field.png)
7. Click **Save**.
Specify a priority for all issues in your project.
![Example priorities](/assets/images/help/projects/priority_example.png)
## Grouping issues by priority
Next, group all of the items in your project by priority to make it easier to focus on the high priority items.
1. {% data reusables.projects.open-command-palette %}
2. Start typing any part of "Group by".
3. Select **Group by: Priority**.
Now, move issues between groups to change their priority.
1. Choose an issue.
2. Drag and drop the issue into a different priority group. When you do this, the priority of the issue will change to be the priority of its new group.
![Move issue between groups](/assets/images/help/projects/move_between_group.gif)
## Saving the priority view
When you grouped your issues by priority in the previous step, your project displayed an indicator to show that the view was modified. Save these changes so that your collaborators will also see the tasks grouped by priority.
1. Select the drop-down menu next to the view name.
2. Click **Save changes**.
To indicate the purpose of the view, give it a descriptive name.
1. Place your cursor in the current view name, **View 1**.
2. Replace the existing text with the new name, `Priorities`.
You can share the URL with your team to keep everyone aligned on the project priorities.
When a view is saved, anyone who opens the project will see the saved view. Here, you grouped by priority, but you can also add other modifiers such as sort, filter, or layout. Next, you will create a new view with the layout modified.
## Adding a board view
To view the progress of your project's issues, you can switch to board layout.
The board view is based on the status field, so specify a status for each issue in your project.
![Example status](/assets/images/help/projects/status_example.png)
Then, create a new view.
1. Click {% octicon "plus" aria-label="the plus icon" %} **New view** next to the rightmost view.
Next, switch to board layout.
1. {% data reusables.projects.open-command-palette %}
2. Start typing any part of "Switch layout: Board".
3. Select **Switch layout: Board**.
![Example priorities](/assets/images/help/projects/example_board.png)
When you changed the layout, your project displayed an indicator to show that the view was modified. Save this view so that you and your collaborators can easily access it in the future.
1. Select the drop-down menu next to the view name.
2. Click **Save changes**.
To indicate the purpose of the view, give it a descriptive name.
1. Place your cursor in the current view name, **View 2**.
2. Replace the existing text with the new name, `Progress`.
![Example priorities](/assets/images/help/projects/project-view-switch.gif)
## Next steps
You can use projects for a wide range of purposes. For example:
- Track work for a release
- Plan a sprint
- Prioritize a backlog
Here are some helpful resources for taking your next steps with {% data variables.product.prodname_github_issues %}:
- To provide feedback about the projects (beta) experience, go to the [GitHub feedback repository](https://github.com/github/feedback/discussions/categories/issues-feedback).
- To learn more about how projects can help you with planning and tracking, see "[About projects](/issues/trying-out-the-new-projects-experience/about-projects)."
- To learn more about the fields and items you can add to your project, see "[Creating a project](/issues/trying-out-the-new-projects-experience/creating-a-project)."
- To learn about more ways to display the information you need, see "[Customizing your project views](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)."

View File

@@ -0,0 +1,692 @@
---
title: Using the API to manage projects (beta)
intro: 'You can use the GraphQL API to find information about projects and to update projects.'
versions:
free-pro-team: '*'
miniTocMaxHeadingLevel: 3
allowTitleToDifferFromFilename: true
type: how_to
topics:
- Projects
---
This article demonstrates how to use the GraphQL API to manage a project.
{% data reusables.projects.projects-beta %}
{% data reusables.projects.api-beta %}
## Authentication
{% include tool-switcher %}
{% curl %}
In all of the following cURL examples, replace `TOKEN` with a token that has the `read:org` scope (for queries) or `write:org` scope (for queries and mutations). For more information about creating a token, see "[Creating a personal access token](/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)."
{% endcurl %}
{% cli %}
Before running {% data variables.product.prodname_cli %} commands, you must authenticate by running `gh auth login` and providing an authentication token that has the `read:org` scope (for queries) or `write:org` scope (for queries and mutations). During the beta, you will not be able to authenticate using a web browser. For more information on command line authentication, see "[gh auth login](https://cli.github.com/manual/gh_auth_login)." For more information about creating a token, see "[Creating a personal access token](/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token)."
To download or find more information about {% data variables.product.prodname_cli %}, see the [{% data variables.product.prodname_cli %} manual](https://cli.github.com/manual/).
{% endcli %}
{% cli %}
## Using variables
In all of the following examples, you can use variables to simplify your scripts. Use `-F` to pass a variable that is a number, Boolean, or null. Use `-f` for other variables. For example,
```shell
my_org="octo-org"
my_num=5
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query($organization: String! $number: Int!){
organization(login: $organization){
projectNext(number: $number) {
id
}
}
}' -f organization=$my_org -F number=$my_num
```
For more information, see "[Forming calls with GraphQL](/graphql/guides/forming-calls-with-graphql#working-with-variables)."
{% endcli %}
## Finding information about projects
Use queries to get data about projects. For more information, see "[About queries](/graphql/guides/forming-calls-with-graphql#about-queries)."
### Finding the node ID of a project
To update your project through the API, you will need to know the node ID of the project.
You can find the node ID of a project if you know the organization name and project number. Replace `ORGANIZATION` with the name of your organization. For example, `octo-org`. Replace `NUMBER` with your project number. To find the project number, look at the project URL. For example, `https://github.com/orgs/octo-org/projects/5` has a project number of 5.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"query{organization(login: \"<em>ORGANIZATION</em>\") {projectNext(number: <em>NUMBER</em>){id}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query{
organization(login: "<em>ORGANIZATION</em>"){
projectNext(number: <em>NUMBER</em>) {
id
}
}
}'
```
{% endcli %}
You can also find the node ID of all projects in your organization. The following example will return the node ID and title of the first 20 projects in an organization. Replace `ORGANIZATION` with the name of your organization. For example, `octo-org`.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"{organization(login: \"<em>ORGANIZATION</em>\") {projectsNext(first: 20) {nodes {id title}}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query{
organization(login: "<em>ORGANIZATION</em>") {
projectsNext(first: 20) {
nodes {
id
title
}
}
}
}'
```
{% endcli %}
### Finding the node ID of a field
To update the value of a field, you will need to know the node ID of the field. Additionally, for single select fields, you will need to know the ID of the options.
The following example will return the ID, name, and settings for the first 20 fields in a project. Replace `PROJECT_ID` with the node ID of your project.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"query{node(id: \"<em>PROJECT_ID</em>\") {... on ProjectNext {fields(first: 20) {nodes {id name settings}}}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query{
node(id: "<em>PROJECT_ID</em>") {
... on ProjectNext {
fields(first: 20) {
nodes {
id
name
settings
}
}
}
}
}'
```
{% endcli %}
The response will look similar to the following example:
```json
{
"data": {
"node": {
"fields": {
"nodes": [
{
"id": "MDE2OlByb2plY3ROZXh0RmllbGQxMzE1OQ==",
"name": "Title",
"settings": "null"
},
{
"id": "MDE2OlByb2plY3ROZXh0RmllbGQxMzE2MA==",
"name": "Assignees",
"settings": "null"
},
{
"id": "MDE2OlByb2plY3ROZXh0RmllbGQxMzE2MQ==",
"name": "Status",
"settings": "{\"options\":[{\"id\":\"f75ad846\",\"name\":\"Todo\",\"name_html\":\"Todo\"},{\"id\":\"47fc9ee4\",\"name\":\"In Progress\",\"name_html\":\"In Progress\"},{\"id\":\"98236657\",\"name\":\"Done\",\"name_html\":\"Done\"}]}"
}
]
}
}
}
}
```
Each field has an ID. Additionally, each option in a single select field has an ID.
### Finding information about items in a project
You can query the API to find information about items in your project.
The following example will return the title and ID for the first 20 items in a project. For each item, it will also return the value and name for the first 8 fields in the project. If the item is an issue or pull request, it will return the login of the first 10 assignees. Replace `PROJECT_ID` with the node ID of your project.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"query{node(id: \"<em>PROJECT_ID</em>\") {... on ProjectNext {items(first: 20) {nodes{title id fieldValues(first: 8) {nodes{value projectField{name}}} content{...on Issue {assignees(first: 10) {nodes{login}}} ...on PullRequest {assignees(first: 10) {nodes{login}}}}}}}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
query{
node(id: "<em>PROJECT_ID</em>") {
... on ProjectNext {
items(first: 20) {
nodes{
title
id
fieldValues(first: 8) {
nodes{
value
projectField{
name
}
}
}
content{
...on Issue {
assignees(first: 10) {
nodes{
login
}
}
}
...on PullRequest {
assignees(first: 10) {
nodes{
login
}
}
}
}
}
}
}
}
}'
```
{% endcli %}
A project may contain items that a user does not have permission to view. In this case, the response will include redacted item.
```shell
{
"node": {
"title": "You can't see this item",
...
}
}
```
## Updating projects
Use mutations to update projects. For more information, see "[About mutations](/graphql/guides/forming-calls-with-graphql#about-mutations)."
{% note %}
**Note:** You cannot add and update an item in the same call. You must use `addProjectNextItem` to add the item and then use `updateProjectNextItemField` to update the item.
{% endnote %}
### Adding an item to a project
The following example will add an issue or pull request to your project. Replace `PROJECT_ID` with the node ID of your project. Replace `CONTENT_ID` with the node ID of the issue or pull request that you want to add.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"mutation {addProjectNextItem(input: {projectId: \"<em>PROJECT_ID</em>\" contentId: \"<em>CONTENT_ID</em>\"}) {projectNextItem {id}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation {
addProjectNextItem(input: {projectId: "<em>PROJECT_ID</em>" contentId: "<em>CONTENT_ID</em>"}) {
projectNextItem {
id
}
}
}'
```
{% endcli %}
The response will contain the node ID of the newly created item.
```json
{
"data": {
"addProjectNextItem": {
"projectNextItem": {
"id": "MDE1OlByb2plY3ROZXh0SXRlbTM0MjEz"
}
}
}
}
```
If you try add an item that already exists, the existing item ID is returned instead.
### Updating a custom, non-single select field
The following example will update a date field. Replace `PROJECT_ID` with the node ID of your project. Replace `ITEM_ID` with the node ID of the item you want to update. Replace `FIELD_ID` with the ID of the field that you want to update.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"mutation {updateProjectNextItemField(input: {projectId: \"<em>PROJECT_ID</em>\" itemId: \"<em>ITEM_ID</em>\" fieldId: \"<em>FIELD_ID</em>\" value: \"2021-5-11\"}) {projectNextItem {id}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation {
updateProjectNextItemField(
input: {
projectId: "<em>PROJECT_ID</em>"
itemId: "<em>ITEM_ID</em>"
fieldId: "<em>FIELD_ID</em>"
value: "2021-5-11"
}
) {
projectNextItem {
id
}
}
}'
```
{% endcli %}
{% note %}
**Note:** You cannot use `updateProjectNextItemField` to change `Assignees`, `Labels`, `Milestone`, or `Repository` because these fields are properties of pull requests and issues, not of project items. Instead, you must use the [addAssigneesToAssignable](/graphql/reference/mutations#addassigneestoassignable), [removeAssigneesFromAssignable](/graphql/reference/mutations#removeassigneesfromassignable), [addLabelsToLabelable](/graphql/reference/mutations#addlabelstolabelable), [removeLabelsFromLabelable](/graphql/reference/mutations#removelabelsfromlabelable), [updateIssue](/graphql/reference/mutations#updateissue), [updatePullRequest](/graphql/reference/mutations#updatepullrequest), or [transferIssue](/graphql/reference/mutations#transferissue) mutations.
{% endnote %}
### Updating a single-select field
The following example will update a date field.
- `PROJECT_ID` - Replace this with the node ID of your project.
- `ITEM_ID` - Replace this with the node ID of the item you want to update.
- `FIELD_ID` - Replace this with the ID of the field that you want to update.
- `OPTION_ID` - Replace this with the ID of the desired value.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"mutation {updateProjectNextItemField(input: {projectId: \"<em>PROJECT_ID</em>\" itemId: \"<em>ITEM_ID</em>\" fieldId: \"<em>FIELD_ID</em>\" value: \"<em>OPTION_ID</em>\"}) {projectNextItem {id}}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation {
updateProjectNextItemField(
input: {
projectId: "<em>PROJECT_ID</em>"
itemId: "<em>ITEM_ID</em>"
fieldId: "<em>FIELD_ID</em>"
value: "<em>OPTION_ID</em>"
}
) {
projectNextItem {
id
}
}
}'
```
{% endcli %}
### Deleting an item from a project
The following example will delete an item from a project. Replace `PROJECT_ID` with the node ID of your project. Replace `ITEM_ID` with the node ID of the item you want to delete.
{% include tool-switcher %}
{% curl %}
```shell
curl --request POST \
--url https://api.github.com/graphql \
--header 'Authorization: token <em>TOKEN</em>' \
--header 'GraphQL-Features: projects_next_graphql' \
--data '{"query":"mutation {deleteProjectNextItem(input: {projectId: \"<em>PROJECT_ID</em>\" itemId: \"<em>ITEM_ID</em>\"}) {deletedItemId}}"}'
```
{% endcurl %}
{% cli %}
```shell
gh api graphql --header 'GraphQL-Features: projects_next_graphql' -f query='
mutation {
deleteProjectNextItem(
input: {
projectId: "<em>PROJECT_ID</em>"
itemId: "<em>ITEM_ID</em>"
}
) {
deletedItemId
}
}'
```
{% endcli %}
## Reference
### Objects
#### ProjectNext
- [Closable](/graphql/reference/interfaces#closable)
- [Node](/graphql/reference/interfaces#node)
- [Updatable](/graphql/reference/interfaces#updatable)
**Fields**
Name | Description
--- | ---
`closed` (`Boolean!`) | `true` if the project is closed.
`closedAt` (`DateTime!`) | Identifies the date and time when the object was closed.
`createdAt` (`DateTime!`) | Identifies the date and time when the object was created.
`creator` (`Actor`) | The actor who originally created the project.
`databaseId` (`Int`) | Identifies the primary key from the database.
`description` (`String`) | The project's description.
`fields` (`[ProjectNextField]!`) | List of fields in the project.<br><br>**Arguments**<br>`after` (`String`): Returns the elements in the list that come after the specified cursor.<br>`before` (`String`): Returns the elements in the list that come before the specified cursor.<br>`first` (`Int`): Returns the first *n* elements from the list.<br>`last` (`Int`): Returns the last *n* elements from the list.
`items` (`[ProjectNextItem]`) | List of items in the project.<br><br>**Arguments**<br>`after` (`String`): Returns the elements in the list that come after the specified cursor.<br>`before` (`String`): Returns the elements in the list that come before the specified cursor.<br>`first` (`Int`): Returns the first *n* elements from the list.<br>`last` (`Int`): Returns the last *n* elements from the list.
`number` (`Int!`) | The project's number.
`owner` (`ProjectNextOwner!`) | The project's owner. Currently limited to organizations.
`title` (`String!`) | The project's name.
`updatedAt` (`DateTime!`) | Identifies the date and time when the object was last updated.
`viewerCanUpdate` (`Boolean!`) | Check if the current viewer can update this object.
#### ProjectNextConnection
The connection type for ProjectNext.
Name | Description
--- | ---
`edges` ([ProjectNextEdge]) | A list of edges.
`nodes` ([ProjectNext]) | A list of nodes.
`pageInfo` (PageInfo!) | Information to aid in pagination.
`totalCount` (Int!) | Identifies the total count of items in the connection.
#### ProjectNextEdge
Name | Description
--- | ---
`cursor` (String!) | A cursor for use in pagination.
`node` (ProjectCard) | The item at the end of the edge.
#### ProjectNextField
A field inside a project.
Name | Description
--- | ---
`createdAt` (`DateTime!`) | Identifies the date and time when the object was created.
`name` (`String!`) | The project field's name.
`project` (`ProjectNext!`) | The project that contains this field.
`settings` (`String`) | String representation of project field settings.
`updatedAt` (`DateTime!`) | Identifies the date and time when the object was last updated.
#### ProjectNextFieldConnection
The connection type for ProjectNextField.
Name | Description
--- | ---
`edges` ([ProjectNextFieldEdge]) | A list of edges.
`nodes` ([ProjectNextField]) | A list of nodes.
`pageInfo` (PageInfo!) | Information to aid in pagination.
`totalCount` (Int!) | Identifies the total count of items in the connection.
#### ProjectNextFieldEdge
Name | Description
--- | ---
`cursor` (String!) | A cursor for use in pagination.
`node` (ProjectCard) | The item at the end of the edge.
#### ProjectNextItem
- [Node](/graphql/reference/interfaces#node)
An item in a `ProjectNext`.
Name | Description
--- | ---
`content` (`ProjectNextItemContent`) | The content of the referenced issue or pull request.
`createdAt` (DateTime!) | Identifies the date and time when the object was created.
`creator` (`Actor`) | The actor who created this item.
`databaseId` (`Int`) | Identifies the primary key from the database.
`fieldValues` (`[ProjectNextItemFieldValue]!`) | List of field values for the item.<br><br>**Arguments**<br>`after` (`String`): Returns the elements in the list that come after the specified cursor.<br>`before` (`String`): Returns the elements in the list that come before the specified cursor.<br>`first` (`Int`): Returns the first *n* elements from the list.<br>`last` (`Int`): Returns the last *n* elements from the list.
`project` (`ProjectNext!`) | The project that contains this item.
`title` (`String!`) | Title of the item.
`updatedAt` (DateTime!) | Identifies the date and time when the object was last updated.
#### ProjectNextItemContent
Content associated with a `ProjectNextItem`.
**Types:**
- `issue` - Reference to an issue
- `pull request` - Reference to a pull request.
#### ProjectNextItemConnection
The connection type for ProjectNextItem.
Name | Description
--- | ---
`edges` ([`ProjectNextItemEdge`]) | A list of edges.
`nodes` ([`ProjectNextItem`]) | A list of nodes.
`pageInfo` (`PageInfo!`) | Information to aid in pagination.
`totalCount` (`Int!`) | Identifies the total count of items in the connection.
#### ProjectNextItemEdge
Name | Description
--- | ---
`cursor` (`String!`) | A cursor for use in pagination.
`node` (`ProjectCard`) | The item at the end of the edge.
#### ProjectNextItemFieldValue
- [Node](/graphql/reference/interfaces#node)
A value of a field in an item in a `ProjectNext`.
Name | Description
--- | ---
`createdAt` (`DateTime!`) | Identifies the date and time when the object was created.
`creator` (`Actor`) | The actor who created this item.
`databaseId` (`Int`) | Identifies the primary key from the database.
`projectField` (`ProjectNextField!`) | The project field that contains this value.
`projectItem` (`ProjectNextItem!`) | The project item that contains this value.
`updatedAt` (`DateTime!`) | Identifies the date and time when the object was last updated.
`value` | Value of the field.
#### ProjectNextItemFieldValueConnection
The connection type for ProjectNextItemFieldValue.
Name | Description
--- | ---
`edges` ([`ProjectNextItemFieldValueEdge`]) | A list of edges.
`nodes` ([`ProjectNextItemFieldValue`]) | A list of nodes.
`pageInfo` (`PageInfo!`) | Information to aid in pagination.
`totalCount` (`Int!`) | Identifies the total count of items in the connection.
#### ProjectNextItemEdge
An edge in a connection.
Name | Description
--- | ---
`cursor` (`String!`) | A cursor for use in pagination.
`node` (`ProjectCard`) | The item at the end of the edge.
### Interfaces
#### ProjectNextOwner
Represents an owner of a project.
**Implemented by**
- `Organization`
**Fields**
Name | Description
--- | ---
`projectNext` (`ProjectNext`) | Find project by number.<br><br>**Arguments**<br>`number` (`Int!`): The project number to find.
`projectsNext` (`ProjectNextConnection!`) | A list of project next items under the owner.<br><br>**Arguments**<br>`after` (`String`): Returns the elements in the list that come after the specified cursor.<br>`before` (`String`): Returns the elements in the list that come before the specified cursor.<br>`first` (`Int`): Returns the first *n* elements from the list.<br>`last` (`Int`): Returns the last *n* elements from the list.
### Mutations
#### addProjectNextItem
Adds an existing item (Issue or PullRequest) to a project.
**Input fields**
- `input`(`AddProjectNextItemInput!`)
**Return fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`projectNextItem` (`ProjectNextItem`) | The item added to the project.
#### updateProjectNextItemField
Updates a field of an item from a project.
**Input fields**
- `input`(`UpdateProjectNextItemFieldInput!`)
**Return fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`projectNextItem` (`ProjectNextItem`) | The item added to the project.
#### deleteProjectNextItem
Deletes an item from a project.
**Input fields**
- `input`(`DeleteProjectNextItemInput!`)
**Return fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`deletedItemId` (`ID`) | The ID of the deleted item.
### Input Objects
#### DeleteProjectNextItemInput
Autogenerated input type of AddProjectNextItem.
**Input fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`contentId` (`ID!`) | The ID of the item (Issue or PullRequest) to add.
`projectId` (`ID!`) | The ID of the Project to add the item to.
#### UpdateProjectNextItemFieldInput
Autogenerated input type of UpdateProjectNextItemField.
**Input fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`fieldId` (`ID!`) | The ID of the field to be updated. Currently supports custom fields and status.
`itemId` (`ID!`) | The ID of the item to be updated.
`projectId` (`ID!`) | The ID of the Project.
`value` (`String!`) | The value which will be set on the field.
#### DeleteProjectNextItemInput
Autogenerated input type of DeleteProjectNextItem.
**Input fields**
Name | Description
--- | ---
`clientMutationId` (`String`) | A unique identifier for the client performing the mutation.
`itemId` (`ID!`) | The ID of the item to be removed.
`projectId` (`ID!`) | The ID of the Project from which the item should be removed.

View File

@@ -1,7 +1,7 @@
---
title: Using labels and milestones to track work
shortTitle: Labels and milestones
intro: 'Labels and milestones to categorize and track work on {% data variables.product.prodname_dotcom %}'
intro: 'Use labels and milestones to categorize and track work on {% data variables.product.prodname_dotcom %}.'
versions:
free-pro-team: '*'
enterprise-server: '*'

View File

@@ -0,0 +1,5 @@
{% note %}
**Note:** Issue forms are currently in beta and subject to change.
{% endnote %}

View File

@@ -0,0 +1,64 @@
```YAML{:copy}
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: [bug, triage]
assignees:
- octocat
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
value: "A bug happened!"
validations:
required: true
- type: dropdown
id: version
attributes:
label: Version
description: What version of our software are you running?
options:
- 1.0.2 (Default)
- 1.0.3 (Edge)
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true
```

View File

@@ -0,0 +1 @@
For the value of the `attributes` key, you can set the following keys.

View File

@@ -0,0 +1 @@
Can only use alpha-numeric characters, `-`, and `_`. Must be unique in the form definition.

View File

@@ -0,0 +1,5 @@
For each value in the `options` array, you can set the following keys.
| Key | Description | Required | Type | Default | Options |
| --- | ----------- | -------- | ---- | ------- | ------- |
| `label` | The identifier for the option, which is displayed in the form. Markdown is supported for bold or italic text formatting, and hyperlinks. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |

View File

@@ -0,0 +1 @@
| `required` | Prevents form submission until element is completed. | Optional | Boolean | false | {% octicon "dash" aria-label="The dash icon" %} |

View File

@@ -0,0 +1 @@
For the value of the `validations` key, you can set the following keys.

View File

@@ -0,0 +1,5 @@
{% note %}
**Note:** To access the projects (beta) API, you must pass the following header in addition to being part of the limited beta: `GraphQL-Features: projects_next_graphql`.
{% endnote %}

View File

@@ -0,0 +1,5 @@
1. On {% data variables.product.prodname_dotcom %}, navigate to the main page of your organization.
2. Click {% octicon "table" aria-label="The project icon" %} **Projects**.
3. Select the **New project** drop-down menu and click **New project (Beta)**.
![New project](/assets/images/help/issues/new_project_beta.png)

Some files were not shown because too many files have changed in this diff Show More